cbow word2vec 损失_Word2Vec的核心思想
本文介紹Word2Vec是基于Skip-Gram架構,本文只介紹核心思想,具體權重更新參考論文。
本文與論文同時飲用較好!
理解Word2Vec核心思想的步驟是先理解one word -> one word如何獲取詞向量,而Skip-Gram架構和CBOW架構是再次基礎之上進行了輸入或者輸出的改變。One-Word Context
One-Word Context是只是用一個單詞預測另一個單詞。其架構圖為:
即只有兩層全連接神經(jīng)網(wǎng)絡,并且隱藏層為先行層。輸入層為每個單詞的one-hot encoder,輸出為下一個單詞的預測。輸出是Softmax處理后的概率值,那個維度的概率值大則為某個單詞。
其中詞向量為W的行向量或者W'的列向量,一般使用W的行向量作為輸入詞的詞向量,也即是輸入向量(One-hot encoder)與W的轉置相乘之后隱藏層的結果。
CBOW架構
CBOW架構只是在one->one的基礎之上輸入層到隱藏層為:輸入層的平均和。
Skip-Gram架構
只是在輸出時,偏差為所有panel的偏差之和。
其中u為預測輸出。
Hierarchical Softmax
Hierarchical Softmax是使用output-layer的每一個panel(即單詞的輸出評分),該輸出評分的每一個維度為輸出向量和輸入向量的內(nèi)積。根據(jù)每一維度的大小構建二叉樹(常用哈夫曼樹,建議看看哈夫曼樹的構建)。
對于構建哈夫曼樹的權重進行Sigmoid函數(shù)處理,把它壓縮在[0,1]之間,形成往左子樹走的概率,則往右子樹走的概率為1-P(左)。
如上圖,從根節(jié)點往w2走,走的方向有向左->向左->向右走。(上圖非哈夫曼樹,但思想一致。)
把從根節(jié)點走到w2的路徑的概率乘積即為預測概率,從而求出每個panel維度的概率。
loss函數(shù):
負采樣
負采樣是在Hierarchical Softmax的loss函數(shù)基礎之上,添加了負采樣。
因此,損失函數(shù)為:
負采樣的核心思想是根據(jù)詞頻進行選擇sqmple更新權重,而不是所有權重;并且進行預測的單詞權重必須更新,在所有非預測單詞的權重進行負采樣更新。
代碼實現(xiàn)
from gensim.models import Word2Vec # 必須為字符串,才能進行訓練 docs = [['30760','157507'],['289197','63746'],['36162','168401'],['50644','361620']] wv = Word2Vec(docs,size=12,sg=1,window=2,workers=10,min_count=1,iter=10) wv['30760']參考文獻
[1]. word2vec Parameter Learning Explained(論文)
[2].https://zhuanlan.zhihu.com/p/26306795
[3].深度學習與推薦系統(tǒng)(王喆)
總結
以上是生活随笔為你收集整理的cbow word2vec 损失_Word2Vec的核心思想的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python地图 两点距离_没学过还真不
- 下一篇: 天气预报今天几点下雨_今天,秦皇岛多家景