原文地址:https://www.jianshu.com/p/5a896955abf0
2)基於迭代的方法直接學
相較於基於SVD的方法直接捕獲所有共現值的做法,基於迭代的方法一次只捕獲一個窗口內的詞間共現值。
好的語言模型中,有意義的句子高概率,無意義的句子即使語法正確也低概率。
在得到輸入詞向量和輸出詞向量后如何得到最終詞向量?常取輸入詞向量(word2vec)、拼接、相加(GloVe)等。
主要有以下3種模型算法:
- word2vec
- GloVe
- fastText
(三)word2vec
基本設計:1層隱藏層的神經網絡結構,隱藏層使用線性激活函數。why?
一是因為快;二是因為訓練詞向量可以被認為是提取特征,后續可能會使用deep結構,現階段沒有必要deep。
1、Continuous Bag of Words(CBoW)
根據上下文詞預測中心詞。
1)前向過程
希望\(\hat{y}\)與\(y\)即\(x_c\)盡可能相同。
2)反向過程
2、Skip-Gram
根據中心詞預測上下文詞。
引入strong/naive條件獨立假設:給定中心詞,所有輸出詞間完全獨立。
1)前向過程
2)反向過程
CBoW和Skip-Gram都存在着的問題:代價函數中的softmax需要對\(|V|\)進行求和,時間復雜度為\(O(|V|)\),當\(|V|\)很大時,代價很高。
解決方式:Negative Sampling和Hierarchical Softmax。
3、Negative Sampling
負采樣的基本思想是用采樣一些負例的方式近似代替遍歷整個詞匯。以\(P_n(w)\)的概率分布進行采樣,\(P_n(w)\)與詞匯詞頻相匹配。目前看,最佳\(P_n(w)=\frac{count(w)^{\frac{3}{4}}}{\sum_{w\in V}count(w)^{\frac{3}{4}}}\),實現了低頻詞被采樣概率的上升比例高於高頻詞。采樣前,將長度為1的線段分成\(M\)等份,其中,\(M>>|V|\)。這樣子可以保證每個詞對應的線段都會被划分成不同的小塊,\(M\)份的每一份都會落在某一個詞對應的線段上。每個詞對應的線段長度為\(len(w)=P_n(w)\)。采樣時,從\(M\)個未知
中采樣出\(Neg\)個位置即可,對應線段所屬詞即為負例詞。word2vec中\(M\)默認為\(10^8\),與Skip-Gram合作時,采樣到中心詞就跳過。
1)目標函數
2)反向過程
(1)CBoW
(2)Skip-Gram
4、Hierarchical Softmax
Hierarchical Softmax中無詞的輸出表示,詞為輸出詞的概率等於從根節點走到詞葉子節點的概率,代價由\(O(|V|)\)變為\(O(log_2|V|)\)。Hierarchical Softmax中不更新每個詞的輸出詞向量,更新的是二叉樹上節點對應的向量。這個方法的速度由二叉樹的構建方式以及詞到葉子節點的分配方式決定。其中,Huffman樹尤其適合,因為其分配給高頻詞短路徑,使其花費更短時間被找到。
1)目標函數
2)反向過程
(1)CBoW
(2)Skip-Gram
5、word2vec小結
1)CBoW vs Skip-Gram
- CBoW更快一些。CBoW對於高頻詞效果較好,低頻詞常受到較少注意。窗口大小常5左右。
- Skip-Gram更慢一些。Skip-Gram對於低頻詞效果更好,小數據下表現依舊好。窗口大小常10左右。
對於"Yesterday was really a ____ day.":
CBoW認為最可能是beautiful/nice,delightful受到較少注意;Skip-Gram則不會將delightful與beautiful/nice比較,而是作為一組新觀測值。
2)Hierarchical Softmax vs Negative Sampling
- Hierarchical Softmax
優點是對低頻詞的效果更好。因為表示低頻詞的葉子節點會不可避免地繼承祖先節點的向量表示,這個祖先節點可能會受到其他高頻詞的影響。
缺點是如果所需要的輸出詞很生僻,得一直往下走很久。 - 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\)則越小,即更多詞會被丟棄。高頻詞亞采樣的目的是以一定的概率拒絕高頻詞,使得低頻詞有更多的出境率。低頻詞被丟棄的概率低,高頻詞被丟棄的概率高。