NLP《詞彙表示方法(三)word2vec》

Word2Vec是2013年Google發佈的工具,也可以說是一個產生詞向量的一羣模型組合,關於詞向量,也就是嵌入詞向量的解釋之前也解釋了,這裏不贅述。該工具主要包含兩個詞向量的生成模型,跳字模型(skip-gram)和連續詞袋模型(continuous bag of words,簡稱CBOW),以及兩種高效訓練的方法:負採樣(negative sampling)和層序softmax(hierarchical softmax)。值得一提的是,word2vec詞向量可以較好地表達不同詞之間的相似和類比關係。
在這裏插入圖片描述

看起來是相反的兩個模型,且看下面分解。

一:CBOW
在這裏插入圖片描述

是一個簡單的三層神經網絡模型,輸入一個詞的上下文詞語,來預測該詞語本身的概率的模型,比較對稱啊,取得是某個詞語的前R個詞語和後R個詞語,預測當前詞彙的概率。

在這裏插入圖片描述

這個模型挺容易理解的:
在這裏插入圖片描述

我們擁有詞彙庫大小是V,預測模型的窗口大小是C,C=2R,我們的嵌入詞向量的低維維度是N,瞭解這個後我們來看看這個模型。

1:輸入
是C個one-hot的原始詞向量(每個向量x是1 x V維度向量)。
在這裏插入圖片描述

2:隱藏層
是一個N維度的向量,由於嵌入詞向量矩陣是唯一的,所以從輸入層到隱藏層的權重W(詞向量矩陣)是唯一的,共享的,它的參數權重是V x N維度的。在隱藏層做的如下運算。
在這裏插入圖片描述

包含了求和和平均值的操作。

3:輸出層
是單獨一個one-hot原始詞向量y,代表的是當前詞的預測,向量y是1 x V維度向量,只不過加上了softmax操作。此時隱藏層是1 x N維的向量,因此此時線性層的參數權重是N x V維度的。我們期望的輸出是y,預測輸出的是y’。
在這裏插入圖片描述

經過softmax進行計算,就不展開了,因爲之前學習過。計算各個詞語的歸一化概率。

4:損失函數,交叉熵損失函數。
在這裏插入圖片描述

二:Skip-Gram模型
在這裏插入圖片描述

這個模型跟CBOW是反過來的模型,給出當前詞語,預測這個詞語前後R個詞語是什麼?
在這裏插入圖片描述

由於是和CBOW是鏡像關係,這個模型挺容易理解的:
在這裏插入圖片描述

我們擁有詞彙庫大小是V,預測模型輸出的的窗口大小是C,C=2R,我們的嵌入詞向量的低維維度是N,瞭解這個後我們來看看這個模型。

1:輸入
是1個one-hot的原始詞向量(該向量x是1 x V維度向量)。
在這裏插入圖片描述

2:隱藏層
是一個N維度的向量,由於嵌入詞向量矩陣是唯一的,所以從輸入層到隱藏層的權重W(詞向量矩陣)是唯一的,共享的,它的參數權重是V x N維度的。在隱藏層做的如下運算。
在這裏插入圖片描述

3:輸出層
在這裏插入圖片描述
是C個one-hot原始詞向量,代表的是當前詞的預測,每個輸出向量y是1 x V維度向量,只不過加上了softmax操作。此時隱藏層是1 x N維的向量,因此此時線性層的參數權重W’是N x V維度的。我們期望的第k個輸出是y_k,預測輸出的是y_k’。
在這裏插入圖片描述

經過softmax進行計算,計算各個詞語的歸一化概率。最終我們通過softmax函數產生一共 C個單詞的多項式分佈。

4:損失函數,交叉熵損失函數。
對於第k個輸出(1<= k <= C):
在這裏插入圖片描述

對於所有輸出:
在這裏插入圖片描述

三:總結
上述模型訓練完畢後,其實One-hot編碼乘以矩陣W就是我們要求的中心詞的詞向量,W則是詞表中所有詞的詞向量拼接起來的詞表徵矩陣,我們更新訓練參數W的過程就是在不斷的更新詞向量。

最後,在上面的學習中我們可以發現,利用softmax求概率值時,每一次的訓練我們都需要將詞表裏的每一個詞都計算一遍,這樣遍歷整個詞表的操作會在大語料庫計算時變得異常困難。因此,word2vec還有兩個加速運算的機制,層次softmax和負採樣,種類不展開描述了,有興趣的同學自行了解啊。