簡版Word2vec的理解
一. 預備知識
1.1 哈夫曼樹 (最優二叉樹)
哈夫曼樹 :帶權路徑長度之和(WPL)最小的二叉樹 。
WPL唯一,但哈夫曼樹不唯一,左右子樹可以交換。
權值越大的節點離根節點越近。
詞頻越大的詞離根節點越近。
構造過程中,每兩個節點都要進行一次合併。
因此,若葉子節點的個數為n,則構造的哈夫曼樹中新增節點的個數為n-1。
哈夫曼編碼:即滿足字首編碼的條件,又能保證報文編碼總長最短。
字首編碼:要求一個字元的編碼不能是另一個字元編碼的字首。
約定:權值大的節點作為左孩子編碼為1,權值小的節點作為右孩子編碼為0。
1.2 詞向量
兩種表示方式
One hot representation
Dristributed representation:通過訓練,將每個詞都對映成一個固定長度的短向量。
二. 神經概率語言模型
輸入層:2c個上下文詞向量
投影層: 將2c個詞向量拼接起來
隱藏層:有
輸出層: y 維度為詞彙表長度, 經過softmax 就得到每個單詞的概率
待學引數:
詞向量 一般的DNN輸入是已知的但是詞向量作為輸入也需要通過訓練得到
神經網路引數:權值矩陣,閾值向量
三. 基於Hierarchical Softmax的word2vec
3.1 word2vec 模型:
word2vec 有兩個模型
CBOW (Continuous Bag-of-Words)
Skip-gram
模型包括三層:輸入,投影,輸出
前者:已知當前詞的上下文的前提下預測當前詞。
後者:相反
CBOW 目標函式 對數似然函式最大化
Skip-gram 目標函式
表示語料庫
3.2 基於Hierarchical Softmax的CBOW模型
輸入層: 2c個詞向量
投影層: 將2c個向量求和累加
隱藏層:無
輸出層:一棵哈夫曼樹,以語料庫中出現的詞當葉子節點,以個詞頻當權值構造出來的哈夫曼樹。
條件概率就可以通過路徑累乘得到
從根到葉子節點對應著一條路徑這個路徑是唯一的,路徑上的分支(每一個內部節點圖中的黃色節點)就看作一次二分類,每一次分類就產生一個概率(用LR模型)。將概率乘起來就是所需的條件概率。
待求引數:每一內部節點就是一個LR,LR的引數
詞向量也是要學的 也是引數
似然函式最大化 ,梯度上升 得到更新公式。
最終的目標是要求詞典中每個詞的詞向量。表示:中各詞詞向量的累加,
利用來對上下文詞向量更新
CBOW 每次更新2c個詞向量
四. 基於Negative Sampling(負取樣)的word2vec
4.1 CBOW
CBOW中,已知詞的上下文,需要預測。
因此,對於給定的,詞就是一個正樣本,其他詞就是負樣本。
的負樣本子集
目標函式:
其中表示當上下文為時,預測中心詞為