先驗機率和後驗證機率是基於詞向量模型。首先一段話由五個詞組成:
A B C D E
對C來講:先驗機率指ABDE出現後C出現的機率,即P(C|A,B,D,E)
能夠將C用ABDE出現的機率來表示 Vector(C) = [P(C|A), P(C|B), P(C|D), P(C|E) ]
後驗機率指C出現後ABDE出現的機率:即P(A|C),P(B|C),P(D|C),P(E|C)html
先驗機率和後驗機率已經知道了,可是一個句子很長,對每一個詞進行機率計算會很麻煩,因而有了n-gram模型。
該模型基於這樣一種假設,第N個詞的出現只與前面N-1個詞相關,而與其它任何詞都不相關,整句的機率就是各個詞出現機率的乘積。
通常狀況下咱們只計算一個單詞先後各兩個詞的機率,即n取2, 計算n-2,.n-1,n+1,n+2的機率。
若是n=3,計算效果會更好;n=4,計算量會變得很大。網絡
cbow輸入是某一個特徵詞的上下文相關的詞對應的詞向量,而輸出就是這特定的一個詞的詞向量,即先驗機率。
訓練的過程以下圖所示,主要有輸入層(input),映射層(projection)和輸出層(output)三個階段。
編碼
Skip-Gram模型和CBOW的思路是反着來的,即輸入是特定的一個詞的詞向量,而輸出是特定詞對應的上下文詞向量,即後驗機率。訓練流程以下:
.net
傳統網絡訓練詞向量的網絡:
htm
word2vec訓練方法和傳統的神經網絡有所區別,主要解決的是softmax計算量太大的問題,採用Hierarchical Softmax和Negative Sampling模型。
word2vec中cbow,skip-gram都是基於huffman樹而後進行訓練,左子樹爲1右子樹爲0,同時約定左子樹權重不小於右子樹。
構建的Huffman樹以下:
其中,根節點的詞向量對應咱們的投影后的詞向量,而全部葉子節點就相似於以前神經網絡softmax輸出層的神經元,葉子節點的個數就是詞彙表的大小。在霍夫曼樹中,隱藏層到輸出層的softmax映射不是一會兒完成的,而是沿着霍夫曼樹一步步完成的,所以這種softmax取名爲"Hierarchical Softmax"。blog
由於時間有限,暫時總結這些,下一次詳細看一下word2vec中的實現。ip
參考:
word2vec原理(一) CBOW與Skip-Gram模型基礎
word2vec原理(二) 基於Hierarchical Softmax的模型
本身動手寫word2vec (四):CBOW和skip-gram模型get