word2vec中的CBOW模型
簡介
word2vec是Google與2013年開源推出的一個用於獲取word vecter的工具包,利用神經網絡為單詞尋找一個連續向量看空間中的表示。
word2vec有兩種網絡模型,分別為:
- Continous Bag of Words Model (CBOW)
- Skip-Gram Model
CBOW網絡模型
使用上下文的詞匯來同時預測中間詞
- 滑動時使用雙向上下文窗口
- 輸入層:仍然直接使用BOW(詞袋)方式表示
- 投射層:
- 對向量直接求和(或求平均),以降低向量維度
- 實質上是去掉了投射層
- 隱含層:直接去除(輸入信號量直接求和,映射到輸出層)
- 輸出層:
- 輸出層為一棵二叉樹,以詞庫中的詞作為葉子結點,並以詞頻為權重構造出來的Huffman樹,如果詞庫中有D個詞,則有D個葉子結點。
- 實質上只是一個線性分類器
- 顯然,短語料不適合用word2vec來分析,運算量仍然很大。
降低運算量:分層softmax
降低運算量:負例采樣
Word2Vec仍然存在的問題
CBOW模型流程舉例
假設 Courpus = { I drik coffee everyday } ,根據 “I”“drink”“everyday”來預測“coffee”。
投影層將每個詞向量加起來,
這里Xw即上圖Uo ,當Xw傳導到輸出層時,因為輸出層為一棵二叉樹,每一次分支都可視為進行一次二分類,將分到左邊為負類,分到右邊為正類。
根據sigmoid函數,可將二分類函數寫成:
所以,一個結點被分到正類的概率是:
被分到負類的概率是:
這里Θ向量是待定參數。
將每個分支的概率相乘就是所需的 P( W | Context(W) )
對概率函數取對數,即
並對式子求 Xw的偏導 和 Θ 的偏導。
最終,通過大量的數據迭代,使用梯度下降更新W和W’,來最小化loss函數,訓練結束后的W就是詞向量的矩陣,任何一個單詞的One-Hot表示乘以這個矩陣W就可以得到其詞向量的表示。