word2vec中的subsampling和negative sampling

實現word2vec的skip-gram神經網絡訓練模型中,通過一個矩陣將輸入的n維向量轉化爲m維向量,考慮到模型輸入層和輸出層的權重,會產生m*n*2個權重,一般詞彙表長度n很大,name調整修正這麼多權重使訓練速度降低,同時需要大量的訓練數據來調整權重防止過擬合,這樣又增加了這個網絡訓練的複雜性。爲了解決這個問題,Word2vec的作者又提出了三種方法:

1. 把常用的詞組作爲一個單詞,例如new york經常只代表紐約,與new和york有完全不同的語義,所以把這兩個詞組合更加合理

2. subsampling:在採樣過程中以一定的概率丟棄一些常見的詞(猜測太常見可能只表示修飾,並沒有具體含義),採樣的具體做法這裏不做介紹

比如單詞the,一般對我們真正想表達的內容沒有影響反而出現次數很多,這時我們就可以在採樣中刪除它 

關於降採樣的保留某個單詞的概率在論文中一般採用下列公式:

公式裏面主要有兩個參數:

z(wi):某個單詞在詞庫中出現的概率,wi表示某個具體的單詞

0.001:爲參數sample的值,控制了降採樣的程度,0.001爲一般設置的值,sample值越小表示扔掉詞的概率越大

當sample爲0.001時,這個公式的圖像如下:

從圖中我們可以總結出一些有趣的規律:

(1)當z(wi)<=0.0026時,P(wi)約等於1,我們不會扔掉這些詞

(2)當z(wi)<=0.00746時,P(wi)=0.5,表示我們對於這個詞公平對待

3. negative sampling:每次訓練樣本輸入後,在反向傳播時僅更新部分權重

比如原來的模型需要2*n*m個權重,現在只需要更新2*x*m個權重,一般x<<n,且x = 1+negative samples

如下圖所示,原來需要更新6個權重,確定負樣本之後,只需更新黑色加粗所對應的4個權重

那麼negative samples怎麼確定呢?

假設negative samples =k,則選取詞庫中k個出現概率最大的詞

論文中寫到這個概率採用下列公式計算,其中f(wi)表示這個單詞在詞庫中出現的頻次

0.75這個超參數是試出來的,性能比其他參數好

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章