天天看點

Word2Vec Tutorial(2)- Negative Sampling 負采樣(Stanford cs224n 詞向量學習之拓展閱讀2)

本文為閱讀過程中記錄的中文要點架構,有助于快速理清思路和複習。詳情可以看如下原文:

http://mccormickml.com/2017/01/11/word2vec-tutorial-part-2-negative-sampling/

本部分涉及對skip-gram基本模型的改進,使其具有更高的效率,正真具有可行性。

本文三個創新:

1、在模型中将常用單詞對,或短語,視為單個“單詞”。

2、對頻繁的詞進行子采樣,以減少訓練執行個體的數量。

3、采用“負采樣”技術修改優化目标,使每個訓練樣本隻更新權重的一小部分。

一、詞對和短語

專用詞對、常用短語等,視為單個單詞是有道理的,這樣還會使得詞彙表增大。谷歌的模型對1000億字的新聞資料集進行了訓練。在模型中加入短語使詞彙量增加了300萬字。(可以使用gensim庫的word2vec進行檢視)有工具實作了詞對的檢測,利用兩個詞之間出現的頻率還可以比之單個詞出現的比例。多次調用,實作常用長短語的檢測。

(還可以用維基百科的文章标題,作為詞組識别的一種方法)

二、頻繁詞采樣

“The quick brownfox jumps over the lazy dog”的例子中:

Word2Vec Tutorial(2)- Negative Sampling 負采樣(Stanford cs224n 詞向量學習之拓展閱讀2)

1、(“fox”, “the”)中,the幾乎在其他任意地方也出現。

2、學習the的vector,需要更多the的樣本。

Word2vec用二次subsampling來解決這個問題。任意單詞在文本中删除的機率,取決于其出現頻率。假設視窗大小為10,删除文本中的the:

1、是以,the不會出現在context中。

2、得到了10個變短的樣本。

三、Sampling rate

文本中保留單詞wi的機率P(wi):

Word2Vec Tutorial(2)- Negative Sampling 負采樣(Stanford cs224n 詞向量學習之拓展閱讀2)

Z(wi)是單詞wi在所有單詞中的占比,0.001是采樣頻率參數的預設值。P(wi)曲線如下:

Word2Vec Tutorial(2)- Negative Sampling 負采樣(Stanford cs224n 詞向量學習之拓展閱讀2)

所有的詞在曲線上取值都應該是很小的。

此時,

z(wi)<=0.0026時,P(wi)=1.0 ,即被保留(被抽樣)的機率為100%;

z(wi)=0.00746時,P(wi)=0.5 ,即被保留(被抽樣)的機率為50%;

z(wi)=1.0時,P(wi)=0.003 ,即被保留(被抽樣)的機率為3.3%;

四、負采樣

負采樣使得每個樣本隻調整一小部分權重。

舉例:(“fox”,“quick”)中,随機選擇幾個(比如5)negativve word(使得輸出網絡輸出為0的詞)和一個positive word(如例子中的quick),來更新權重。結果更新的時(5+1)X300個權重,比10000X300小很多。而隐層中永遠隻更新positive word的權重(與是否适用負采樣無關)。

小資料集可以使用5-20個negative word得到較好的結果,大資料集隻能用2-5個。

五、選擇負樣本

高頻詞容易被選為負樣本,每個單詞的權重為其頻率的3/4次方,選中的機率為單個權重除以所有單詞權重之和。如下:

Word2Vec Tutorial(2)- Negative Sampling 負采樣(Stanford cs224n 詞向量學習之拓展閱讀2)

繼續閱讀