1. 程式人生 > >[DeeplearningAI筆記]序列模型2.7負取樣Negative sampling

[DeeplearningAI筆記]序列模型2.7負取樣Negative sampling

5.2自然語言處理

覺得有用的話,歡迎一起討論相互學習~Follow Me

2.7 負取樣 Negative sampling

Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality[C]// International Conference on Neural Information Processing Systems. Curran Associates Inc. 2013:3111-3119.

  • skip-gram模型可以構造一個監督學習任務,把上下文對映到目標詞上,以學習一個實用的詞嵌入,但是他的缺點是softmax計算起來很慢。本節將會介紹了一個經過優化的學習問題叫做 負取樣
    ,其能夠做到和 skip-gram 相似的功能但是使用起來更加高效。

樣本生成方法

  • 例句: I want a glass of orange juice to go along with my cereal 構造一個新的監督學習問題,給定一對單詞 orange 和 juice ,預測這是否是一對 上下文詞-目標詞 (context-target) ,在這個樣本中,orange 和 juice 就是一個正樣本。 然而對於 orange 和 king 就是一個負樣本。
    • 正樣本 的生成是取樣得到一個上下文詞和一個目標詞。其中先在句中隨機均勻的選取一個單詞作為上下文詞。然後在其左右兩邊一定詞距內隨機選擇一個單詞作為目標詞。 並且將 標籤
      設定為1.
    • 負樣本 的生成是使用和正樣本一樣的上下文詞,然後從字典中隨機選取一個單詞構成一個組合。並且將 標籤 設定為0. 其中同一 上下文詞 生成 K個 負樣本
context word target
orange juice 1
orange king 0
orange book 0
orange the 0
orange of 0
  • 注意:正負樣本 的區別僅取決於單詞對的來源,即是 of 也在 orange 的設定詞距之內,但是作為隨機從字典中選取的單詞, of - orange 單詞對仍然被標記為負樣本。
  • 在本次提出的演算法中 輸入資料x 將被設定為 context-word 的單詞對,預測結果y 將被設定為 target 演算法的目的即是區分 樣本取樣的來源
  • 論文作者推薦,小資料集的話 K 被設定為5-20, 而對於較大的資料集, K 被設定為2-5.即資料集越小 K 值被設定的越大。

模型學習原理

  • Skip-grams 中softmax函式定義:

    P(target|content)=eθtTecj=110000eθjTec
  • 本節演算法定義 輸入Context為c,Word為t,定義輸出Target為y

context word target
c t y
x1 x2 y
orange juice 1
orange king 0
orange book 0
orange the 0
orange of 0
  • 損失函式 定義為給定 樣本單詞對 的情況下,y=1 的概率:
    • 使用ec表示context的詞嵌入向量 其中θt表示每個樣本對應的引數.
    • P(y=1|c,t)=σ(θtTec)
    • 對於每個正樣本都有 K 個負樣本來訓練一個類似logisitic迴歸的模型。

神經網路演算法流程

  1. 如果輸入詞是 orange ,即詞典中的第6257個詞,將其使用one-hot向量表示 o6257,
  2. 再傳遞給E(詞嵌入向量矩陣),通過兩者相乘得到 orange 的嵌入向量 e6357
  3. e6357是一個1W維(字典中總單詞數量)的向量,可以看成是1W個可能的logistic迴歸分類問題,其中一個是用來判斷目標詞是否是 juice 的分類器,當然也有用來判斷 king,book,the… 等詞彙是否是目標詞的分類器。但是每次迭代不都是訓練所有的樣本, 每次迭代只會訓練一個正樣本和隨機選取的 K 個負樣本

    • 此演算法將需要計算10000個維度的softmax問題轉化為10000個二分類問題,每一個都易於計算,每次迭代要做的只是訓練其中的 K+1 個樣本,其中一個正樣本和隨機選取的同一個Context的 K 個負樣本。
    • 此演算法被稱為 負取樣 , 因為在挑選一個 正樣本 的同時,隨機生成 K個負樣本

負樣本取樣方法

  • 僅考慮單詞在 語料庫 中出現的頻率,會導致負樣本中 the, of, and … 等介詞出現的頻率過高
  • 僅考慮單詞在 詞彙表 中出現的頻率,即在 詞彙表 中隨機取樣,分母是詞彙表中的總詞數,這樣取樣十分沒有代表性。
  • 論文提出取樣公式為:
    P(wi)=f(wi)3/4j=110000f(wj)3/4其中f(wi)表示單詞在語料庫中的詞頻。