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)

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的思路是反着來的,即輸入是特定的一個詞的詞向量,而輸出是特定詞對應的上下文詞向量,即后驗概率。訓練流程如下:

word2vec中的Negative Sampling概述

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

word2vec訓練方法和傳統的神經網絡有所區別,主要解決的是softmax計算量太大的問題,采用Hierarchical SoftmaxNegative Sampling模型。
word2vec中cbow,skip-gram都是基於huffman樹然后進行訓練,左子樹為1右子樹為0,同時約定左子樹權重不小於右子樹。
構建的Huffman樹如下:

其中,根節點的詞向量對應我們的投影后的詞向量,而所有葉子節點就類似於之前神經網絡softmax輸出層的神經元,葉子節點的個數就是詞匯表的大小。在霍夫曼樹中,隱藏層到輸出層的softmax映射不是一下子完成的,而是沿着霍夫曼樹一步步完成的,因此這種softmax取名為"Hierarchical Softmax"。

因為時間有限,暫時總結這些,下一次詳細看一下word2vec中的實現。

參考:
word2vec原理(一) CBOW與Skip-Gram模型基礎
word2vec原理(二) 基於Hierarchical Softmax的模型
自己動手寫word2vec (四):CBOW和skip-gram模型


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM