word2vec 中的負採樣是如何工作的?
我一直在努力理解 word2vec 上下文中負採樣的概念。我無法消化[負]抽樣的想法。例如,在 Mikolov 的論文中,負抽樣期望被表述為
我理解左邊的術語,但我無法理解對負詞上下文對進行採樣的想法。
問題
使用“標準”神經網絡學習詞向量存在一些問題。通過這種方式,在給定單詞窗口(網絡的輸入)的情況下,網絡學習預測下一個單詞的同時學習單詞向量。
預測下一個單詞就像預測類別。也就是說,這樣的網絡只是一個“標準的”多項式(多類)分類器。這個網絡必須有與類一樣多的輸出神經元。當類是實際的單詞時,神經元的數量是巨大的。
“標準”神經網絡通常使用交叉熵成本函數進行訓練,該函數需要輸出神經元的值來表示概率——這意味著必須對網絡為每個類別計算的輸出“分數”進行歸一化,轉換為每個類別的實際概率。這個歸一化步驟是通過softmax函數實現的。Softmax 在應用於巨大的輸出層時非常昂貴。
(a) 解決方案
為了解決這個問題,即 softmax 的昂貴計算,Word2Vec 使用了一種稱為**噪聲對比估計的技術。**該技術由 [A](由 [B] 重新制定)引入,然後在 [C]、[D]、[E] 中用於從未標記的自然語言文本中學習詞嵌入。
基本思想是將多項分類問題(因為它是預測下一個單詞的問題)轉換為二元分類問題。也就是說,不是使用softmax來估計輸出詞的真實概率分佈,而是使用二元邏輯回歸(二元分類)。
對於每個訓練樣本,增強(優化)分類器被輸入一個真實的對(一個中心詞和另一個出現在其上下文中的詞)和一些 隨機損壞的對(由中心詞和從詞彙表中隨機選擇的詞組成)。通過學習區分真實對和損壞對,分類器最終將學習詞向量。
這很重要:優化的分類器不是預測下一個詞(“標準”訓練技術),而是簡單地預測一對詞是好還是壞。
Word2Vec稍微定制了這個過程,稱之為負採樣。在 Word2Vec 中,負樣本的單詞(用於損壞的對)是從一個專門設計的分佈中抽取的,這有利於更頻繁地抽取頻率較低的單詞。
參考
[A] (2005) - 對比估計:在未標記數據上訓練對數線性模型
[B] (2010) - 噪聲對比估計:非歸一化統計模型的新估計原理
[C] (2008) - 自然語言處理的統一架構:具有多任務學習的深度神經網絡
[D] (2012) - 一種用於訓練神經概率語言模型的快速簡單的算法。
[E] (2013) - 通過噪聲對比估計有效地學習詞嵌入。
答案基於我的一些舊筆記 - 我希望它們是正確的:)