Word2Vec

如果每個詞 都用 OneHot(獨熱編碼) 來表示,矩陣會非常稀疏,而且詞之間的關聯性也無法表示(假設詞之間是相互獨立的)。

考慮將 V 維的OneHot向量降維,利用神經網絡來訓練。

 

本質簡化版的神經網絡

輸入層:   OneHot向量。

隱藏層: 輸入向量與矩陣成績 的簡單累加,沒有激活函數。

輸出層: 接上SoftMax層,降維之後的向量表示

 

Word2Vec 有兩種形式:  CBOW(continuous bag-of-words)     skip-gram

 

CBOW(根據周圍的詞預測中心的詞)

SKIP-GRAM(根據中心的詞,預測周圍的詞)

 

1.CBOW

輸入層:{要預測詞 的上下文的 OneHot向量}

\large W_{ V\times N} :  所有的輸入向量 乘 輸入權重矩陣

隱層:  將所有向量簡單累加 求平均,沒有激活函數

\large W_{N*V}}^{'}: 隱層的輸出向量 乘 輸出權重矩陣

輸出層: 將得到的  \large V 向量做SoftMax

 

誤差反傳:利用交叉熵損失來計算損失,進而 採用梯度下降法 調整權重矩陣

 

訓練完成後,任何一個單詞的 OneHot向量 和 矩陣\large W_{ V\times N} 相乘, 就可以得到 N*1維的向量(word embedding)。

 

2.SKIP-GRAM

輸入: 滑動窗口中的 輸入詞,和窗口中的其它詞組成 多個詞對 來訓練網絡。

 

 

參考:

1.簡書:https://www.jianshu.com/p/471d9bfbd72f

2.知乎:https://www.zhihu.com/question/44832436

 

 

 

 

 

 

 

 

 

 

 

 

 

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