cbow與skip-gram

場景:上次回答word2vec相關的問題,回答的是先驗機率和後驗機率,沒有回答到關鍵點。

詞袋模型(Bag of Words, BOW)與詞向量(Word Embedding)模型

  • 詞袋模型就是將句子分詞,而後對每一個詞進行編碼,常見的有one-hot、TF-IDF、Huffman編碼,假設詞與詞之間沒有前後關係。
  • 詞向量模型是用詞向量在空間座標中定位,而後計算cos距離能夠判斷詞於詞之間的類似性。

先驗機率和後驗機率

先驗機率和後驗證機率是基於詞向量模型。首先一段話由五個詞組成:
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-gram模型。
該模型基於這樣一種假設,第N個詞的出現只與前面N-1個詞相關,而與其它任何詞都不相關,整句的機率就是各個詞出現機率的乘積。
通常狀況下咱們只計算一個單詞先後各兩個詞的機率,即n取2, 計算n-2,.n-1,n+1,n+2的機率。
若是n=3,計算效果會更好;n=4,計算量會變得很大。網絡

cbow

cbow輸入是某一個特徵詞的上下文相關的詞對應的詞向量,而輸出就是這特定的一個詞的詞向量,即先驗機率。
訓練的過程以下圖所示,主要有輸入層(input),映射層(projection)和輸出層(output)三個階段。
cbow編碼

skip-gram

Skip-Gram模型和CBOW的思路是反着來的,即輸入是特定的一個詞的詞向量,而輸出是特定詞對應的上下文詞向量,即後驗機率。訓練流程以下:
.net

word2vec中的Negative Sampling概述

傳統網絡訓練詞向量的網絡:
htm

word2vec訓練方法和傳統的神經網絡有所區別,主要解決的是softmax計算量太大的問題,採用Hierarchical SoftmaxNegative 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

相關文章
相關標籤/搜索