word2vec——高效word特征提取


繼上次分享了經典統計語言模型,最近公眾號中有很多做NLP朋友問到了關於word2vec的相關內容, 本文就在這里整理一下做以分享。 本文分為

  • 概括word2vec
  • 相關工作
  • 模型結構
  • Count-based方法 vs. Directly predict

幾部分,暫時沒有加實驗章節,但其實感覺word2vec一文中實驗還是做了很多工作的,希望大家有空最好還是看一下~


概括word2vec

要解決的問題: 在神經網絡中學習將word映射成連續(高維)向量, 其實就是個詞語特征求取。

特點: 
1. 不同於之前的計算cooccurrence次數方法,減少計算量 
2. 高效 
3. 可以輕松將一個新句子/新詞加入語料庫

主要思想:神經網絡語言模型可以用兩步進行訓練:1. 簡單模型求取word vector; 在求取特征向量時,預測每個詞周圍的詞作為cost 2. 在word vector之上搭建N-gram NNLM,以輸出詞語的概率為輸出進行訓練。


相關工作

在傳統求取word的空間向量表征時, LSA 將詞和文檔映射到潛在語義空間,從而去除了原始向量空間中的一些“噪音”,但它無法保存詞與詞之間的linear regularities; LDA 是一個三層貝葉斯概率模型,包含詞、主題和文檔三層結構。文檔到主題服從Dirichlet分布,主題到詞服從多項式分布, 但是只要訓練數據大了, 計算量就一下飈了。

基於神經網絡的詞語向量表征方法在[Y. Bengio, R. Ducharme, P. Vincent. A neural probabilistic language model, JMLR 2003]中就有提出, 名為NNLM, 它是一個前向網絡, 同時學習詞語表征和一個統計語言模型(后面具體講)。

在Mikolov的碩士論文[1]和他在ICASSP 2009上發表的文章[2]中, 用一個單隱層網絡訓練詞語表征, 然后將這個表征作為NNLM的輸入進行訓練。 Word2vec是訓練詞語表征工作的一個拓展。


模型結構

首先回顧NNLM,RNNLM,然后來看Word2Vec中提出的網絡——CBOW,skip-gram Model。

1 . NNLM[3]

NNLM的目標是在一個NN里,求第t個詞的概率, 即 


NNLM_PROB 

 

其中f是這個神經網絡, 包括 input,projection, hidden和output。將其分解為兩個映射:C和g,C是word到word vector的特征映射(通過一個|V|*D的映射矩陣實現),也稱作look-up table, g是以word特征為輸入,輸出|V|個詞語概率的映射: 


這里寫圖片描述 

 

如下圖所示: 
輸入: n個之前的word(其實是他們的在詞庫V中的index) 
映射: 通過|V|*D的矩陣C映射到D維 
隱層: 映射層連接大小為H的隱層 
輸出: 輸出層大小為|V|,表示|V|個詞語的概率

 


NNLM 

 

用parameter個數度量網絡復雜度, 則這個網絡的復雜度為: 


O=ND+NDH+H


其中復雜度最高的部分為H*V, 但通常可以通過hierarchical softmax或binary化詞庫編碼將|V|降至log2V, 這樣計算瓶頸就在於隱層NDH了。在word2vec中,為了避免隱層帶來的高計算復雜度而去掉了隱層。 


 

2 . RNNLM

RNN在語言模型上優於其他神經網絡,因為不用像上面NNLM中的輸入要定死前N個詞的N。(具體RNN的結構我會在下篇中講)簡單地說, RNN就是一個隱層自我相連的網絡, 隱層同時接收來自t時刻輸入和t-1時刻的輸出作為輸入, 這使得RNN具有短期記憶能力, 所以RNNLM的復雜度為: 


O=HH+H


同樣地,其中HV也可以降至log2V, 瓶頸就在於HH了。

 

由於復雜度最大的部分都在hidden layer, 而且我們的中級目標是提特征(而不是生成語言模型),文中就想能不能犧牲hidden layer的非線性部分, 從而高效訓練。 這也是Word2vec中速度提升最多的部分。 這也就是一個Log linear model。所以本質上, word2vec並不是一個深度模型。文中提出了兩種log linear model,如下面所述。 


3 . Proposed Method 1 - Continuous Bag-of-Words(CBOW) Model

CBOW的網絡結構和NNLM類似,變化:

  1. CBOW去掉了NNLM的非線性部分
  2. CBOW不考慮word之間的先后順序, 一起放進bag,也就是在上面NNLM的projection層將映射后的結果求和/求平均(而非按照先后順序連接起來)
  3. 輸入不止用了歷史詞語,還用了未來詞語。 即, 用t-n+1…t-1,t+1,…t+n-1的word作為輸入,目標是正確分類得到第t個word。 
    PS: 實驗中得到的best n=4

CBOW的復雜度為: 


O=ND+Dlog2

 

CBOW結構圖: 


CBOW 




 

3 . Proposed Method 2 - Continuous Skip-gram Model

與CBOW相反,Continuous Skip-gram Model不利用上下文。 其輸入為當前word,經過projection的特征提取去預測該word周圍的c個詞,其cost function為: 


cost_function_of_Skip-gram 

 

如下圖所示。這里c增大有利於模型的完備性, 但過大的c可能造成很多無關詞語相關聯, 因此用隨機采樣方法,遠的詞少采, 近的多采。

 


CSGM 

 

比如定義最大周圍距離為C,則對於每個詞w(t),就選擇距離為R=range(1,C), 選前后各R個詞作為預測結果。 
所以,Continuous Skip-gram Model的復雜度為: 


O=2C(D+Dlog2V

 



具體來說,最簡單的情況下, P(wt+j|wt)的表達式可以為: 


details 


其中v和v’分別為輸入和輸出中的word特征向量。所以說, word2vec方法本質上是一個動態的邏輯回歸。

 


Count-based方法 vs. Directly predict

最后我們看一下之前我們講過的幾個基於統計的傳統語言模型與word2vec這種直接預測的方法的比較:

 


cb vs dp 


圖片摘自Stanford CS244。

 


參考文獻:

    1. NNLM: Y. Bengio, R. Ducharme, P. Vincent. A neural probabilistic language model, JMLR 2003
    2. 類似工作:T. Mikolov. Language Modeling for Speech Recognition in Czech, Masters thesis
    3. 類似工作:T. Mikolov, J. Kopecky´, L. Burget, O. Glembek and J. Cˇ ernocky´. Neural network based language models for higly inflective languages, In: Proc. ICASSP 2009.]
    4. 類似工作:Pennington J, Socher R, Manning C D. Glove: Global vectors for word representation[J]. Proceedings of the Empiricial Methods in Natural Language Processing (EMNLP 2014), 2014, 12.
    5. from: http://blog.csdn.net/abcjennifer/article/details/46397829


免責聲明!

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



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