詞表征 2:word2vec、CBoW、Skip-Gram、Negative Sampling、Hierarchical Softmax

2)基于迭代的方法直接學(xué)

相較于基于SVD的方法直接捕獲所有共現(xiàn)值的做法,基于迭代的方法一次只捕獲一個窗口內(nèi)的詞間共現(xiàn)值。
好的語言模型中,有意義的句子高概率,無意義的句子即使語法正確也低概率。
在得到輸入詞向量和輸出詞向量后如何得到最終詞向量?常取輸入詞向量(word2vec)、拼接、相加(GloVe)等。
主要有以下3種模型算法:

  • word2vec
  • GloVe
  • fastText

(三)word2vec

基本設(shè)計:1層隱藏層的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),隱藏層使用線性激活函數(shù)。why?
一是因為快;二是因為訓(xùn)練詞向量可以被認(rèn)為是提取特征,后續(xù)可能會使用deep結(jié)構(gòu),現(xiàn)階段沒有必要deep。


圖2.4 一些定義

1、Continuous Bag of Words(CBoW)

根據(jù)上下文詞預(yù)測中心詞。

1)前向過程

圖2.5 CBoW前向過程

希望\hat{y}yx_c盡可能相同。

2)反向過程

圖2.6 CBoW反向過程

2、Skip-Gram

根據(jù)中心詞預(yù)測上下文詞。
引入strong/naive條件獨立假設(shè):給定中心詞,所有輸出詞間完全獨立。

1)前向過程

圖2.7 Skip-Gram前向過程1

圖2.8 Skip-Gram前向過程2

2)反向過程

圖2.9 Skip-Gram反向過程

CBoW和Skip-Gram都存在著的問題:代價函數(shù)中的softmax需要對|V|進行求和,時間復(fù)雜度為O(|V|),當(dāng)|V|很大時,代價很高。
解決方式:Negative Sampling和Hierarchical Softmax。

3、Negative Sampling

負(fù)采樣的基本思想是用采樣一些負(fù)例的方式近似代替遍歷整個詞匯。以P_n(w)的概率分布進行采樣,P_n(w)與詞匯詞頻相匹配。目前看,最佳P_n(w)=\frac{count(w)^{\frac{3}{4}}}{\sum_{w\in V}count(w)^{\frac{3}{4}}},實現(xiàn)了低頻詞被采樣概率的上升比例高于高頻詞。采樣前,將長度為1的線段分成M等份,其中,M>>|V|。這樣子可以保證每個詞對應(yīng)的線段都會被劃分成不同的小塊,M份的每一份都會落在某一個詞對應(yīng)的線段上。每個詞對應(yīng)的線段長度為len(w)=P_n(w)。采樣時,從M個未知
中采樣出Neg個位置即可,對應(yīng)線段所屬詞即為負(fù)例詞。word2vec中M默認(rèn)為10^8,與Skip-Gram合作時,采樣到中心詞就跳過。

1)目標(biāo)函數(shù)

圖2.10 Negative Sampling目標(biāo)函數(shù)1

圖2.11 Negative Sampling目標(biāo)函數(shù)2

2)反向過程

(1)CBoW


圖2.12 Negative Sampling下CBoW反向過程

(2)Skip-Gram


圖2.13 Negative Sampling下Skip-Gram反向過程

4、Hierarchical Softmax

Hierarchical Softmax中無詞的輸出表示,詞為輸出詞的概率等于從根節(jié)點走到詞葉子節(jié)點的概率,代價由O(|V|)變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=O(log_2%7CV%7C)" alt="O(log_2|V|)" mathimg="1">。Hierarchical Softmax中不更新每個詞的輸出詞向量,更新的是二叉樹上節(jié)點對應(yīng)的向量。這個方法的速度由二叉樹的構(gòu)建方式以及詞到葉子節(jié)點的分配方式?jīng)Q定。其中,Huffman樹尤其適合,因為其分配給高頻詞短路徑,使其花費更短時間被找到。

1)目標(biāo)函數(shù)

圖2.14 Hierarchical Softmax目標(biāo)函數(shù)1

圖2.15 Hierarchical Softmax目標(biāo)函數(shù)2

2)反向過程

(1)CBoW


圖2.16 Hierarchical Softmax下CBoW反向過程

(2)Skip-Gram


圖2.17 Hierarchical Softmax下Skip-Gram反向過程

5、word2vec小結(jié)

1)CBoW vs Skip-Gram

  • CBoW更快一些。CBoW對于高頻詞效果較好,低頻詞常受到較少注意。窗口大小常5左右。
  • Skip-Gram更慢一些。Skip-Gram對于低頻詞效果更好,小數(shù)據(jù)下表現(xiàn)依舊好。窗口大小常10左右。

對于"Yesterday was really a ____ day.":
CBoW認(rèn)為最可能是beautiful/nice,delightful受到較少注意;Skip-Gram則不會將delightful與beautiful/nice比較,而是作為一組新觀測值。

2)Hierarchical Softmax vs Negative Sampling

  • Hierarchical Softmax
    優(yōu)點是對低頻詞的效果更好。因為表示低頻詞的葉子節(jié)點會不可避免地繼承祖先節(jié)點的向量表示,這個祖先節(jié)點可能會受到其他高頻詞的影響。
    缺點是如果所需要的輸出詞很生僻,得一直往下走很久。
  • Negative Sampling
    對高頻詞效果更好。向量維度較低時效果更好,維度高時近似誤差會比較大。

word2vec對句子進行處理時還采用了高頻詞亞采樣的trick,其能夠帶來2~10倍的性能提升,并且能夠提升低頻詞的表示精度。具體來說,w_i被丟棄的概率P(w_i)=1-\sqrt{\frac{sample}{freq(w_i)}}。sample常取值10^{-5}~10^{-3},sample越小,達到相同的丟棄率所需的frequency則越小,即更多詞會被丟棄。高頻詞亞采樣的目的是以一定的概率拒絕高頻詞,使得低頻詞有更多的出境率。低頻詞被丟棄的概率低,高頻詞被丟棄的概率高。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容