word2vec 高效word特徵提取

2021-09-08 23:11:25 字數 3868 閱讀 1891

幾部分,暫時沒有加實驗章節,但其實感覺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個詞的概率, 即 

其中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|個詞語的概率

用parameter個數度量網路複雜度, 則這個網路的複雜度為: 

o=n∗d+n∗d∗h+h∗v 

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

2 . rnnlm

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

o=h∗h+h∗v 

同樣地,其中h∗v也可以降至log2v, 瓶頸就在於h∗h了。

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

3 . proposed method 1 - continuous bag-of-words(cbow) model

cbow的網路結構和nnlm類似,變化:

cbow去掉了nnlm的非線性部分

cbow不考慮word之間的先後順序, 一起放進bag,也就是在上面nnlm的projection層將對映後的結果求和/求平均(而非按照先後順序連線起來)

輸入不止用了歷史詞語,還用了未來詞語。 即, 用t-n+1…t-1,t+1,…t+n-1的word作為輸入,目標是正確分類得到第t個word。 

ps: 實驗中得到的best n=4

cbow的複雜度為: 

o=n∗d+d∗log2v 

cbow結構圖: 

與cbow相反,continuous skip-gram model不利用上下文。 其輸入為當前word,經過projection的特徵提取去**該word周圍的c個詞,其cost function為: 

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

比如定義最大周圍距離為c,則對於每個詞w(t),就選擇距離為r=range(1,c), 選前後各r個詞作為**結果。 

所以,continuous skip-gram model的複雜度為: 

o=2c∗(d+d∗log2v) 

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

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

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

摘自stanford cs244。

nnlm: y. bengio, r. ducharme, p. vincent. a neural probabilistic language model, jmlr 2003

類似工作:t. mikolov. language modeling for speech recognition in czech, masters thesis

類似工作: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.]

類似工作: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.

from: 

與word2vec 原來word2vec那麼簡單

說到word2vec,它可謂非結構化資料裡面的佼佼者,尤其是在推薦和nlp當中,足以體現它的優勢所在,並且多年一直備受工業界喜愛.那麼word2vec到底是怎麼個原理的,發現身邊總是有很多人問,確不能準確的說出為什麼是兩個矩陣,到底是怎麼自動反向傳播的,以及對於softmax之後那麼大的維度資料,是...

word2vec學習參考

最近看nlp的東西比較多。就拿現在google 基於神經網路做的 word2vec 作為部落格的開始吧,今後會陸陸續續補充內容。基本是分4塊內容 1.神經網路語言模型 2.語言模型分層優化 3.word2vec 原理 4.google word2vec 看一點寫一點,先扔些參考資料鏈接上去。附上在研...

Word2Vec知識總結

word2vec是乙個產生詞向量的模型,是乙個雙層的神經網路 非常善於找出詞彙的相似度,同時可用於處理之前的技術 像one hot編碼和wordnet 處理不了的語義關係。它可以利用神經網路從大量的無標註的文字中提取有用資訊。我們也可以將它看成是乙個工具,它裡面包含了三種重要的模型 1 nnlm 神...