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


5.2自然語言處理

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

我的微博我的github我的B站

吳恩達老師課程原地址

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)=\frac{e^{\theta_{t}^{T}e_{c}}}{\sum^{10000}_{j=1}{e^{\theta^{T}_{j}e_{c}}}} \]

  • 本節算法定義 輸入Context為c,Word為t,定義輸出Target為y
context word target
c t y
\(x_1\) \(x_2\) y
orange juice 1
orange king 0
orange book 0
orange the 0
orange of 0
  • 損失函數 定義為給定 樣本單詞對 的情況下,\(y=1\) 的概率:
    • 使用\(e_{c}\)表示context的詞嵌入向量 其中\(\theta_{t}\)表示每個樣本對應的參數.
    • \[P(y=1|c,t)=\sigma(\theta^{T}_{t}e_{c}) \]

    • 對於每個正樣本都有 K 個負樣本來訓練一個類似logisitic回歸的模型。

神經網絡算法流程

  1. 如果輸入詞是 orange ,即詞典中的第6257個詞,將其使用one-hot向量表示 \(o_{6257}\),
  2. 再傳遞給E(詞嵌入向量矩陣),通過兩者相乘得到 orange 的嵌入向量 \(e_{6357}\)
  3. \(e_{6357}\)是一個1W維(字典中總單詞數量)的向量,可以看成是1W個可能的logistic回歸分類問題,其中一個是用來判斷目標詞是否是 juice 的分類器,當然也有用來判斷 king,book,the... 等詞匯是否是目標詞的分類器。但是每次迭代不都是訓練所有的樣本, 每次迭代只會訓練一個正樣本和隨機選取的 K 個負樣本
  • 此算法將需要計算10000個維度的softmax問題轉化為10000個二分類問題,每一個都易於計算,每次迭代要做的只是訓練其中的 K+1 個樣本,其中一個正樣本和隨機選取的同一個Context的 K 個負樣本。
  • 此算法被稱為 負采樣 , 因為在挑選一個 正樣本 的同時,隨機生成 K個負樣本

負樣本采樣方法

  • 僅考慮單詞在 語料庫 中出現的頻率,會導致負樣本中 the, of, and ... 等介詞出現的頻率過高
  • 僅考慮單詞在 詞匯表 中出現的頻率,即在 詞匯表 中隨機采樣,分母是詞匯表中的總詞數,這樣采樣十分沒有代表性。
  • 論文提出采樣公式為:

\[P(w_{i})=\frac{f(w_{i})^{3/4}}{\sum^{10000}_{j=1}f(w_{j})^{3/4}} \]

其中\(f(w_{i})\)表示單詞在語料庫中的詞頻。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM