Word2vector原理


詞向量

用一個向量的形式表示一個詞

詞向量的一種表示方式是one-hot的表示形式:首先,統計出語料中的所有詞匯,然后對每個詞匯編號,針對每個詞建立V維的向量,向量的每個維度表示一個詞,所以,對應編號位置上的維度數值為1,其他維度全為0。這種方式存在問題並且引發新的質疑:1)無法衡量相關詞之間的距離  2)V維表示語義空間是否有必要

 

詞向量獲取方式

1)基於奇異值分解的方法

a、單詞-文檔矩陣

        基於的假設:相關詞往往出現在同一文檔中,例如,banks 和 bonds, stocks,money 更相關且常出現在一篇文檔中,而 banks 和 octous, banana, hockey 不太可能同時出現在一起。因此,可以建立詞和文檔的矩陣,通過對此矩陣做奇異值分解,可以獲取詞的向量表示。

b、單詞-單詞矩陣

        基於的假設:一個詞的含義由上下文信息決定,那么兩個詞之間的上下文相似,是否可推測二者非常相似。設定上下文窗口,統計建立詞和詞之間的共現矩陣,通過對矩陣做奇異值分解獲得詞向量。

2)基於迭代的方法

        目前基於迭代的方法獲取詞向量大多是基於語言模型的訓練得到的,對於一個合理的句子,希望語言模型能夠給予一個較大的概率,同理,對於一個不合理的句子,給予較小的概率評估。具體的形式化表示如下:


 

 

        第一個公式:一元語言模型,假設當前詞的概率只和自己有關;第二個公式:二元語言模型,假設當前詞的概率和前一個詞有關。那么問題來了,如何從語料庫中學習給定上下文預測當前詞的概率值呢?

a、Continuous Bag of Words Model(CBOW)

        給定上下文預測目標詞的概率分布,例如,給定{The,cat,(),over,the,puddle}預測中心詞是jumped的概率,模型的結構如下:


 

        如何訓練該模型呢?首先定義目標函數,隨后通過梯度下降法,優化此神經網絡。目標函數可以采用交叉熵函數:


 

由於yj是one-hot的表示方式,只有當yj=i 時,目標函數才不為0,因此,目標函數變為:


 

代入預測值的計算公式,目標函數可轉化為:


 

b、Skip-Gram Model

      skip-gram模型是給定目標詞預測上下文的概率值,模型的結構如下:


 

    同理,對於skip-ngram模型也需要設定一個目標函數,隨后采用優化方法找到該model的最佳參數解,目標函數如下:


 

      分析上述model發現,預概率時的softmax操作,需要計算隱藏層和輸出層所有V中單詞之間的概率,這是一個非常耗時的操作,因此,為了優化模型的訓練,minkov文中提到Hierarchical softmax 和 Negative sampling 兩種方法對上述模型進行訓練,具體詳細的推導可以參考文獻1和文獻2。

 


word2vec中用到兩個重要模型:CBOW模型和Skip-gram模型。
兩個模型都包含三層:輸入層、投影層和輸出層。 前者是在已知當前詞$W_t$的上下文$W_{t-2}, W_{t-1}, W_{t+1}, W_{t+2}$的前提下預測當前詞$W_t$, 而后者是在已知當前詞$W_t$的前提下,預測其上下文$W_{t-2},  W_{t-1}, W_{t+1}, W_{t+2}$

對於CBOW和Skip-gram兩個模型,Word2Vec給出了兩套框架,它們分別基於Hier-archical Softmax 和Negative Sampling來進行設計。本文介紹基於Hierarchical Softmax的CBOW和Skip-gram模型。

 

 
 
 
 
 
 
參考:
http://www.jianshu.com/p/b2da4d94a122
http://blog.csdn.net/itplus/article/details/37969979
http://blog.csdn.net/zhoubl668/article/details/24314769

 


免責聲明!

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



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