1. 程式人生 > >word2vec學習筆記

word2vec學習筆記

         詞向量作為自然語言處理中最基本同樣也是很重要的部分,熟悉並掌握詞向量的實現原理是學習NLP必不可少的過程,以下主要通過XiRong的《word2vec Parameter Learning Explained》論文來介紹詞向量的具體計算過程。

        首先介紹兩類詞向量模型,第一個是Skip-Gram模型,其目的是通過給定中心詞來預測中心詞上下文詞彙;而另外一類是CBOW模型,通過上下文詞彙來預測中心詞彙。

1、Skip-Gram模型

               

    設定每一個輸入向量的大小為v*1,其中輸入向量是以one-hot進行編碼(稱之為獨熱編碼,也就是該向量中只有一位數字為1,其他為都是0,目的是體現不同輸入向量的特徵),輸入向量到隱層的權重矩陣為W_{v*N}

  ,隱層向量大小為N*1,隱層向量到輸出層的權重為W'_{N*v},輸出向量的維度為v*1。

    計算隱層的輸出為:h = W_{v*N}^{T} \cdot x_{k}, 輸出層的結果為:

                                                                           u_{c,j} = W^{'T}_{N*V} \cdot h

 接下來就是在中心詞確定的情況下,取概率最大的上下文單詞,也就是計算輸出上下文詞彙是Wc,j的條件概率:   

                                                       P(w_{c,j} = w_{O,c} | w_{I}) = y_{c,j} = softmax(u_{c,j})

隨後設定損失函式為:                                                        J(\Theta ) = -log\prod_{c=1}^{C} \frac{exp(u_{c,j})}{ \sum_{j} exp(u_{j})}

對損失函式求導並利用隨機梯度下降方法,不斷更新梯度以達到損失最小的條件,最終獲得詞向量。

2、CBOW模型 

 

CBOW模型與Skip-Gram模型類似,只需要把輸入輸出調換一下即可。需要注意的地方是在隱層的處理上,h_{j} 的值是各個輸入的值與不同權重矩陣相乘後相加再求平均,後面的處理過程與Skip-Gram模型相同。