【Deep Learning學習筆記】Efficient Estimation of Word Representations in Vector Space_google2013


標題:Efficient Estimation of Word Representations in Vector Space

作者:Tomas Mikolov

發表於:ICLR 2013


主要內容:

在NLP中,每一個詞語都表示稱實數向量的形式(稱為word embedding or word representation)。通常詞語的實數向量用神經網絡進行訓練得到,如Bengio在2003年的工作,以及在此基礎上的改進,如:用遞歸的神經網絡進行訓練。不過這些方法計算復雜度較高,對詞表大小、訓練語料規模都有限制。本文的方法提供了一種log-bilinear模型,去除了神經網絡的隱含層,僅用線性表示能力,計算詞語的實數表示向量。


1. Model Architectures

1.1 Feedforward Neural Net Language Model (NNLM)

回顧Bengio在2003年的工作。神經網絡分為輸入層(詞語id)、投影層(projection,由id轉為詞向量)、隱含層和輸出層。整個網絡的參數為:

Q = N*D  + N*D*H + H*V

其中N*D為輸入層到投影層的權重,N是ngram中的n,表示上下文長度,D是每個詞的實數表示維度;N*D*H 為投影層到隱含層的權重個數,H是隱含層節點個數;H*V是隱含層到輸出層的權重個數,V是輸出層節點個數。

為了提速,作者對輸出層進行改造,用huffman樹代替線性結構,從而使得參數降低為 H * log(V)

1.2 Recurrent Neural Net Language Model (RNNLM)

RNNLM的參數個數為

Q = H*H + H*V

1.3 Parallel Training of Neural Networks

google有一個工具叫DistBelief,可以讓節點機與中心服務器同步神經網絡中的梯度值,從而同步神經網絡的各個權重。不過再后來看作者的源代碼的時候,作者似乎只是用了linux多線程,來進行並行訓練。


2. New Log-linear Models

這是作者着重介紹的模型。

作者發現,大量的計算都消耗在神經網絡的非線性隱含層(The main observation from the previous section was that most of the complexity is caused by the non-linear hidden layer in the model),所以作者去除隱含層,以加快計算。另外,作者從前的研究成果,將詞語實數向量的計算和神經網絡對Ngram的訓練相分開,相比同時訓練,能大大提高效率(neural network language model can be successfully trained in two steps: first, continuous word vectors are learned using simple model, and then the N-gram NNLM is trained on top of these distributed representations of words.)

2.1 Continuous Bag-of-Words Model

去除了隱含層,所有N個上線問詞語都投影到一個D維實屬向量上(加和平均)。網絡結構如下:


看樣子是純的線性結構;不過看作者的源代碼(利用梯度那一部分),似乎是exp指數節點。

2.2 Continuous Skip-gram Model

上面是根據上下文來輸出當前詞語。另一種結構,是根據當前詞語來輸出網絡上下文。如下:


3. 實驗結果

3.1 Task Description

作者設計這樣的任務:D(河北)-D(石家庄)+D(哈爾濱)=D(黑龍江)。D是詞語的實屬向量。上面公式解釋為:河北的省會是石家庄,經過運算,哈爾濱是黑龍江的省會。其時寫成D(河北)-D(石家庄)=D(黑龍江)-D(哈爾濱)更容易理解。作者先找出“河北--石家庄”這樣的詞語對兒,訓練出來詞語實屬向量之后,用上面的計算來驗證是否正確,計算出准確率。用准確率來衡量得出的詞語實數向量的好壞。

3.2 Maximization of Accuracy

擴大兩倍的向量維度,和擴大兩倍的訓練集,都能提升准確率,且增加的訓練時間相同,不過提升的准確率幅度可不相同。在某些時候,提升向量維度的作法使得性能提升更大;某些時候,增加訓練語料更好些。向量維度一般300維之后,再增加向量維度的作用就不大了。作者的學習速率設定為0.0025(很小啊)。

3.3 Comparison of Model Architectures

模型之間的相互比較,CBOW效果最好,然后是CSGM,Bengio2003的模型效果反而不好。還有可以看到,作者迭代了三次和迭代了一次,效果差別不大。所以對整個訓練集來講,迭代一次就夠了。(個人觀點哈)

3.4 Large Scale Parallel Training of Models

3.5 Microsoft Research Sentence Completion Challenge

微軟的測試集合,就是有1k個句子,去掉其中一個詞,然后給出五個詞作為候選,任務是找到最合適的那個詞使句子完整。作者把這個任務轉成了計算句子概率的任務(對五個詞都拼成句子,計算概率,選擇概率最大的那個)。


完。

 


免責聲明!

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



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