當前位置:成語大全網 - 漢語詞典 - 詞向量原理

詞向量原理

理解詞向量,要從語言模型入手,語言模型其實就是計算任意壹句話的概率。

經典的語言模型是n-gram模型,該模型假設每個詞的生成只依賴於前N個詞,因此可以從大規模語料庫中統計每個詞的概率和基於前N個詞的條件概率來計算句子的概率。對於沒有出現的條件概率,采用平滑法進行估計。這種方法的假設太強,無法考慮更多的語境。而且訓練需要大量的語料,壹般的統計也只是到三元模型。

後來出現了神經網絡語言模型,可以在訓練語言模型的同時輸出詞向量。

也就是說,所有的詞向量模型的目標都是訓練壹個語言模型,最大化訓練數據中每個句子的概率。詞向量作為參數壹起訓練,當語言模型訓練好了,詞向量就有了。

2003年,bengio推出了神經概率語言模型,該模型使用每個單詞的分布式表示,即單詞向量表示,用三層神經網絡訓練出壹個好的語言模型。

第壹層是詞向量層,每個詞用詞向量代替,作為查找表的輸入。第二層是與第壹層連接的tanh層(隱藏層),第三層是與第壹層和第二層都連接的softmax輸出層。

網絡估計ngram片段的概率。輸入層是由n-1個單詞的單詞向量拼接而成的向量,輸出是|V|個單詞的概率,對應壹個|V|維向量。

假設單詞向量是m維的,隱藏層節點數是h,單詞列表大小是|V|,那麽

訓練目標是最大化所有ngram片段(n個連續單詞)的似然性,可以添加常規項。

詞向量也是壹個參數,用隨機梯度下降法訓練。訓練結束後,語言模型可用,詞向量也可用。

更多的詞向量模型可以參考Licstar在NLP (I)詞向量和語言模型中的深度學習。

與Bengio的模型相比,Word2Vec去掉了最耗時的非線性隱層計算,改為簡單的和隱層,提出了兩種模型:

壹種是CBOW模型,通過前後N個詞(上下文)預測當前詞的概率,隱含層對上下文詞的詞向量求和,所以節點數和詞向量的維數是相同的。

壹種是Skip-gram模型,通過單詞W來預測每個單詞在上下文中出現的概率,所以Skip-gram中的每個單詞向量代表了上下文的分布。

每個模型都有兩個選擇:分級softmax或負采樣。

分層Softmax結合了霍夫曼編碼,每個單詞的編碼對應的是從樹根到單詞的路徑。由路徑的每個節點計算的概率的乘積是當前預測單詞的概率。

事實上,分層softmax的思想借鑒了Hinton的分層對數雙線性模型。N元分層對數雙線性模型通過上下文預測下壹個單詞W的概率:單詞W對應的代碼中每壹位的條件概率的乘積。

負采樣的思想是隨機找壹些負樣本,通過計算對比度損失來優化。理論上稱為噪聲對比估計,損失函數為:

公式的推導可以參考:

其他參考: