word2vec總結

本文參考:

word2vec之簡歷霍夫曼樹:https://www.cnblogs.com/pinard/p/7160330.html

word2vec之Hierarchical Softmax的模型:http://www.cnblogs.com/pinard/p/7243513.html#!comments

word2vec之Negative Sampling的模型:http://www.cnblogs.com/pinard/p/7249903.html

1.word2vec是什麼:

word2vec是google在2013年推出的一個NLP工具,它的特點是將所有的詞向量化,這樣詞與詞之間就可以定量的去度量他們之間的關係,挖掘詞之間的聯繫

2.word2vec包含 CBOW和Skip-Gram兩種模型:CBOW根據詞的上下文來預測當前詞;Skip-Gram根據當前詞來預測詞的上下文

3.word2vec模型的訓練:基於霍夫曼樹的多層softmax和負採樣

1.霍夫曼樹的構建:

樹的輸入:根據詞彙表中詞的頻率大小建立每個詞的權重值;

樹的輸出:對應的霍夫曼樹

樹的構建過程:(w1,w2,...wn)爲每個詞的權重值。霍夫曼樹的所有葉子節點爲詞彙表中帶權重的詞

1)將(w1,w2,...wn)看做是有n棵樹的森林,

2)在森林中選擇根節點權值最小的兩棵樹進行合併,得到一個新的樹,這兩顆樹分佈作爲新樹的左右子樹。新樹的根節點權重爲左右子樹的根節點權重之和。

3) 將之前的根節點權值最小的兩棵樹從森林刪除,並把新樹加入森林。

4)重複步驟2)和3)直到森林裏只有一棵樹爲止。

2.word2vec基於Hierarchical Softmax的模型:

傳統的神經網絡詞向量語言模型,裏面一般有三層,輸入層(詞向量),隱藏層和輸出層(softmax層)。裏面最大的問題在於從隱藏層到輸出的softmax層的計算量很大,因爲要計算所有詞的softmax概率,再去找概率最大的值。

word2vec對這個模型做了改進:

1.對於從輸入層到隱藏層的映射,沒有采取神經網絡的線性變換加激活函數的方法,而是採用簡單的對所有輸入詞向量求和並取平均的方法。比如輸入的是三個4維詞向量:(1,2,3,4),(9,6,11,8),(5,10,7,12)(1,2,3,4),(9,6,11,8),(5,10,7,12),那麼我們word2vec映射後的詞向量就是(5,6,7,8)(5,6,7,8)。由於這裏是從多個詞向量變成了一個詞向量。

2.採用霍夫曼樹來代替從隱藏層到輸出softmax層的映射:

和之前的神經網絡語言模型相比,我們的霍夫曼樹的所有內部節點就類似之前神經網絡隱藏層的神經元,其中,根節點的詞向量對應我們的投影后的詞向量,而所有葉子節點就類似於之前神經網絡softmax輸出層的神經元,葉子節點的個數就是詞彙表的大小。在霍夫曼樹中,隱藏層到輸出層的softmax映射不是一下子完成的,而是沿着霍夫曼樹一步步完成的。

如何沿着霍夫曼樹走:即規定沿着左子樹走,那麼就是負類(霍夫曼樹編碼1),沿着右子樹走,那麼就是正類(霍夫曼樹編碼0)。判別正類和負類的方法是使用sigmoid函數,即:

其中Xw是當前內部節點的詞向量,而θ則是我們需要從訓練樣本求出的邏輯迴歸的模型參數。最後的預測是多個sigmod函數的乘積,再通過最大似然方式優化函數,通過隨機梯度上升求解最大似然參數。

3.基於霍夫曼樹的CBOW的計算步驟:

4.基於霍夫曼樹的Skip-Gram的計算步驟:

3.word2vec基於負採樣的模型:

Negative Sampling由於沒有采用霍夫曼樹,每次只是通過採樣neg個不同的中心詞做負例,就可以訓練模型,因此整個過程要比Hierarchical Softmax簡單。比如:我們有一個訓練樣本,中心詞是w,它周圍上下文共有2c個詞,記爲context(w)。由於這個中心詞w,的確和context(w)相關存在,因此它是一個真實的正例。通過Negative Sampling採樣,我們得到neg個和w不同的中心詞wi,i=1,2,..neg,這樣context(w)和wi就組成了neg個並不真實存在的負例。利用這一個正例和neg個負例,我們進行二元邏輯迴歸,得到負採樣對應每個詞wi對應的模型參數θi,和每個詞的詞向量。

1.如何通過一個正例和neg個負例進行二元邏輯迴歸?

2.如何負採樣?

1).  基於Negative Sampling的CBOW模型

2).  基於Negative Sampling的Skip-Gram模型

4.Hierarchical SoftmaxNegative Sampling比較:

hierarchical Softmax:

1.優點:計算量爲V,現在變成了log2V。第二,由於使用霍夫曼樹是高頻的詞靠近樹根,這樣高頻詞需要更少的時間會被找到,這符合我們的貪心優化思想。

2.缺點:若訓練樣本里的中心詞w是一個很生僻的詞,那麼就得在霍夫曼樹中向下走很久。而負採樣就是摒棄了霍夫曼樹

 

 

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