1. 程式人生 > >002-詞向量,神經網絡模型,CBOW,哈夫曼樹,Negative Sampling

002-詞向量,神經網絡模型,CBOW,哈夫曼樹,Negative Sampling

基本 編碼 哪些 c中 應該 中一 同義詞 最大值 二分

詞向量:

無論是一段話或是一篇文章,詞都是最基本的組成單位。

如何讓計算機利用這些詞?

技術分享圖片

重點是如何把一個詞轉換成一個想向量

技術分享圖片

如果在一個二維空間中,had,has,have意思相同,所以要離的比較近。

need,help也是離的比較近

要表現出相同,相關。

比如說下面的例子:

哪些詞離青蛙frog比較近?同義詞

技術分享圖片

對於兩種不同語言,建模之後語言空間也是很接近的,

所以可以說構建出來的詞向量跟語言類別無關,只是根據語義環(上下文的邏輯)境來建模。

技術分享圖片

神經網絡模型:

技術分享圖片

將輸入詞向量進行首尾相接(projection Layer 投影層),在傳給神經網絡進行參數優化,

這裏的輸入向量也需要被優化。

訓練樣本:技術分享圖片包括前n-1個詞分別的向量,假定每個詞向量大小m

投影層:(n-1)*m 首尾拼接起來的大向量

輸出:技術分享圖片

表示上下文為技術分享圖片時,下一個詞恰好為詞典中第i個詞的概率

歸一化:技術分享圖片

目的就是要求出每一個詞的詞向量是什麽。

神經網絡的優勢:

S1 = ‘’我今天去網咖’’ 出現了1000次
S2 = ‘’我今天去網吧’’ 出現了10次


對於N-gram模型:P(S1) >> P(S2)
而神經網絡模型計算的P(S1) ≈ P(S2)

技術分享圖片

神經網絡看來,類似的句子和詞都是一個東西

只要語料庫中出現其中一個,其他句子的概率也會相應的增大

Hierarchical Softmax:

分層的softmax

技術分享圖片

CBOW:根據上下文得到當前詞

skip-gram:根據當前詞得到上下文。

CBOW:

CBOW 是Continuous Bag-of-Words Model 的縮寫,是一種根據上下文的詞語預測當前詞語的出現概率的模型

技術分享圖片

如果出現上下文,詞w我們希望它出現的概率應該是越大越好的

技術分享圖片

我們需要先了解一個叫做哈夫曼樹的東西

哈夫曼樹:

技術分享圖片

技術分享圖片

相當於權值乘以步長,把權值最大的放在最前面,在word2vec中,我們可以把詞頻(概率)當做這個權值。

這個二分類可以做softmax分層的判斷,判斷是不是後面要出現的詞,然後把重要的放在第1位,第2位。。。。。。

哈夫曼樹的構造流程

技術分享圖片

利用哈夫曼樹編碼:

技術分享圖片

A:111

C:110

B:10

D:0

在哈夫曼樹中,如何決定走向呢?(決定左右)

用以前的知識:邏輯回歸

sigmoid函數

技術分享圖片

技術分享圖片

任意數值輸入,得到0~1的輸出,那麽就可以根據這個輸出分類往左還是往右

接著說前文的CBOW

技術分享圖片

輸入層是上下文的詞語的詞向量,在訓練CBOW模型,詞向量只是個副產品,確切來說,是CBOW模型的一個參數。訓練開始的時候,詞向量是個隨機值,隨著訓練的進行不斷被更新)。
投影層對其求和,所謂求和,就是簡單的向量加法。
輸出層輸出最可能的w。由於語料庫中詞匯量是固定的|C|個,所以上述過程其實可以看做一個多分類問題。給定特征,從|C|個分類中挑一個。

技術分享圖片

如果我最後需要得到足球這個詞,那麽流程就是:

技術分享圖片.

技術分享圖片

如何求解:

技術分享圖片

目標函數:

技術分享圖片

越大越好

求它的最大值也就是求一個梯度上升的問題。

技術分享圖片

技術分享圖片

因為和向量和每一個詞向量是線性相關的,所以對和向量更新可以應用到每一個詞向量當中

skip-gram:

技術分享圖片

技術分享圖片

還需要考慮的一個問題,如果語料庫非常大,即使用了哈夫曼樹的話,常見的排在最前面,那麽有很多不常見的排在後面,這樣就會使計算復雜度變得非常大。

有一種解決方法叫做Negative Sampling(負采樣):

技術分享圖片

我們希望預測對的就可能性達到最大化。

累乘的意思就是所有的詞都可以預測對。

技術分享圖片

技術分享圖片

所求的值是一樣的,只不過通過另外一種方法描述出來了,前者是通過霍夫曼樹,現在是通過區間取值。

技術分享圖片

技術分享圖片

技術分享圖片

最後更新詞向量

002-詞向量,神經網絡模型,CBOW,哈夫曼樹,Negative Sampling