學(xué)習(xí)word2vec相關(guān)內(nèi)容之后的筆記整理郑藏,以及TensorFlow中simple版本的實現(xiàn)(CBOW + Skip-Gram)闸氮。強烈推薦的資料:word2vec 中的數(shù)學(xué)原理詳解
CBOW基本知識
-
詞向量是在訓(xùn)練語言模型過程中得到的副產(chǎn)品
CBOW - CBOW
- 輸入層:目標(biāo)單詞的上下文Context(ω)詞向量(前后的 k 個單詞)
- 投影層:輸入層詞向量求和
- 輸出層
- Huffman Tree (帶權(quán)路徑長度最小) Huffman Coding (前綴編碼 編碼總長最短 left-child: 1 right-child: 0)
-
目標(biāo)函數(shù)
CBOW 目標(biāo)函數(shù) - 最大化目標(biāo)函數(shù),梯度上升法
-
Negative Sampling
Negative Sampling 目標(biāo)函數(shù)
- 對每個詞ω?C都有一個輔助向量θ作為訓(xùn)練參數(shù)
- 評價函數(shù):context(w)時預(yù)測詞分別為w和u的概率(應(yīng)該讓w的概率增大猎塞,同時減小u的概率)
- 使用梯度上升法訓(xùn)練
- 有點DSSM的感覺垢乙,用正例和負例去協(xié)同訓(xùn)練
- CBOW with attention - Ling, et al. (2015)
- 考慮到每個詞與其他詞之間的距離:距離不同渣慕,詞提供信息的程度不同(距離越近的詞越informative)
- 例子:We won the game! Nicely played!
- the 對于 game 的預(yù)測有影響(可以預(yù)測 the 之后的詞是個名詞)氮兵,但是對之后的 played 沒什么影響
- problems of CBOW
- 投影層過于簡單:由于傳統(tǒng)CBOW上下文的定義是目標(biāo)詞前后的詞向量簡單相加裂逐,因此缺少對于詞序的感知,也就沒有辦法學(xué)習(xí)到句法相關(guān)任務(wù)的word embeddings
- 較復(fù)雜的一種改進:將sum改為concatenation(無法scale to large context window)
- 然而window size的選擇也是一個問題泣栈,過小過大都不行
- CBOW with attention
-
在投影層不是簡單的將上下文詞向量相加而是根據(jù)上下文對該詞的重要性進行帶權(quán)相加
CBOW with attention
-
- 考慮到每個詞與其他詞之間的距離:距離不同渣慕,詞提供信息的程度不同(距離越近的詞越informative)
Simple Implementation
鏈接見這里:Simple Skip-gram 以及 Simple CBOW