word2vec 過程理解&詞向量的獲取

網上有很多這方面的資源,詳細各位都能夠對於word2vec瞭解了大概,這裏只講講個人的理解,


目的:通過對於一個神經網絡的訓練,得到每個詞對應的一個向量表達


基於: 這個神經網絡,是基於語言模型,即給定T個詞的字符串s,計算s是自然語言的概率p(w1,w2,…,wt)而構建的,更直白點,就是通過輸入wi的上下相鄰的n個詞(n-gram方法),來就算輸出是wi的概率


方案:CBOM和skip-gram兩種,每一種有分別有霍夫曼和nec的2種實現方式,所以總共有4種實現模式。


網絡:
CBOM 霍夫曼:
輸入:與wi相鄰的n個節點的one-hot表達向量維度爲V(V爲語料庫的單詞總數)

過程:
step1:n個V維向量與V*m維權重向量Wc相乘,得到n個m維的向量(m就是最後每個詞所對應的詞向量的維度,自己設定)

step2:n個m維的詞向量求和得到一個m維向量作爲霍夫曼層的輸入

step3:下面就是網上很多資料講解的一個算P(wi|contenti)的過程了,在此不講具體的,霍夫曼樹是爲了是計算P(wi|contenti)的時間複雜度降到log級,樹上的每個非葉子節點上都有一個m維的向量參數,與step2得到的輸出相乘相加通過一個sigmod的激活函數來算的此節點的概率。

輸出: P(wi|contenti)的概率

其中loss是cross-entropy,然後反向傳播,更新網絡中的參數。

詞向量就是step1中的輸出,一個詞對應一個m維的向量。


CBOM nec:
step1和step2一樣,只不過優化計算P(wi|contenti)的時候,沒有采用霍夫曼樹,而是通過對語料庫的數據採樣來計算,而不是遍歷整個語料庫。


skip-gram和CBOW剛好相反,
輸入是一個單詞
輸出其上下相鄰單詞的概率
詞向量也蘊含在one-hot到m維向量的轉換中。


強烈建議看一下:
word2vec Parameter Learning Explained

* 除此之外附上幾個較爲有用的word2vec資料:*

word2vec中的數學原理詳解

深度學習word2vec學習筆記

https://blog.acolyer.org/2016/04/21/the-amazing-power-of-word-vectors/?blogsub=confirming#subscribe-blog

word2vec 構建中文詞向量

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