1. 程式人生 > >Efficient Estimation of Word Representations in Vector Space

Efficient Estimation of Word Representations in Vector Space

提出兩個新穎的模型來計算詞的連續向量表示,這些表示的質量用詞的相似度來計算,結果和其他表現最好的技術進行比較。我們發現有很大的提高而且計算量低,比如1.6百萬的詞只需要不到一天的計算,而且這些向量對於語義和語法的相似度的計算獲得最好的成績。

 

1 Introduction

一些NLP任務把詞作為原子單元,詞與詞之間沒有相似度,是作為詞典的下標表示的,這種方法有幾個好處:簡單,魯棒性,在大資料集上訓練的簡單模型比小資料集上訓練的複雜模型好。最廣為流傳的是用於統計語言模型的N元模型,今天,它可以訓練幾乎所有資料的n元模型。

但是,這些簡單的技術在一些任務上有限制。比如,自動語音識別的相關域內資料是有限的,效能通常由高質量轉錄的語音資料的規模決定(通常是百萬級別的詞)。在機器翻譯,各種各樣現存的語料僅僅包含不超過十億級別的詞彙量。因此,在一些情況下,簡單改進基本技術不會導致任何重大進展,我們必須關注更先進的技術。

隨著機器翻譯的進一步發展,在更大的資料上訓練更復雜的模型成為可能。而且效能比簡單模型好,而且最成功的是使用詞的分散式表示,比如,基於語言模型的神經網路比N元模型好。

 

1.1 Goals of the Paper

本文的目的是提出學習高質量的詞向量的方法,這個方法可以在十億級別的資料集,百萬級別的詞彙量上進行訓練,據目前所知,還沒有方法提出可以在幾百萬的資料上學習50-100的詞向量。

我們使用最近提出的用於測試詞向量質量的方法,我們不僅希望相似的詞相似,而且詞有不同的相似度(degree of similarity),這在曲折語言已經發現,例如,名詞有不同的結尾,如果在屬於原始向量空間裡的子空間搜尋相似的詞,它可以發現詞有相同的結尾。

更奇怪的是,詞向量的相似度比簡單的語法規則複雜,例如,使用詞偏移技術 ,即在詞向量上使用簡單的線性操作,vector(king)-vector(man)+vector(woman)接近vector(queen)。

本文中,我們試圖用新的模型來最大化這些向量操作的正確性,並且保留詞之間的線性規律性,我們設計了一個全面的測試集來衡量語法和語義規則。而且這些規則可以學習得很好,另外,我們討論了訓練時間和準確率與詞向量的維度和訓練資料的關係。

 

1.2 Previous Work

把詞作為連續的向量來表示已經有很長的歷史,一個用來估測神經網路語言模型(NNLM)提出來了,該方法使用了前向神經網路,有一個線性投影層和一個非線性隱藏層,用來學習詞向量表示和統計語言模型。

NNLM的一個模型是詞向量是使用一個隱藏層學習到的,這些詞向量用來訓練NNLM,而且不需要構建整個NNLM就可以學習到,在這個工作中,我們擴充套件了這個結構,並且關注於使用簡單模型獲得詞向量。

後來發現詞向量可以簡化和提高一些NLP應用,使用不同的模型和不同的資料集來獲得向量,一些訓練好的詞向量可以為未來的研究使用,但是,據目前所知,這些模型的訓練代價還是比較大的。

 

2 Model Architectures

用來估計詞的連續表示的模型有很多,比如LSA(潛在索引分析),LDA(潛在狄雷特分佈),本文中,主要關注由神經網路獲得的詞向量。 如之前所示,比LSA表現得更好,更好的體現了詞之間的線性規則,LDA在大的資料集上的計算消耗更大。

比較模型的差異,首先是計算複雜度(訓練模型所需要的引數),然後是最大化正確率,同時最小化計算複雜度。

下面所有的模型的訓練複雜度是:

是訓練模型的迭代次數,是訓練集裡的詞個數,Q是每個模型的引數,通常的選擇是E=3-50,T可達1百萬,所有模型使用隨機梯度下降法和後向傳播方法。

2.1 Feedforward Neural Net Language Model (NNLM)

概率前向神經網路語言模型包含4層,輸入層,投影層,隱藏層和輸出層。在輸入層,N個排在前面的詞使用one-hot編碼,V是詞彙表的大小。然後輸入層投影到投影層P,P的維度是N×D,這是一個共享投影矩陣。因為在任何給定時間只有N個輸入有效,所以投影層的組成是價效比相對較高的操作。

NNLM架構由於投影層和隱藏層之間的計算而變得複雜,投影層的數值是稠密的。如果N=10,投影層P的神經元個數是500-2000,隱藏層H的神經元個數是500-1000,隱藏層用來計算詞彙中所有詞的概率分佈,最後輸出層的維度是V,每個訓練樣本的計算複雜度是:

Q=N×D+N×D×H+H×V

最重要的項是H×V,已有一些提出的方法用來避免他,使用層次級的softmax,或避免使用規則化模型,而是在訓練中完全使用不規則化的模型,有了詞彙的二叉樹表示,需要評估的輸出單元的個數下降了log2V,所以,大部分的計算是由N×D×H決定的。

在我們的模型集中,使用層次級的softmax,詞彙表用哈夫曼二叉樹表示,之前的工作中,在神經網路語言模型中,詞的頻率對於類別是有用的。哈夫曼樹給每個詞賦予短的二值程式碼,這降低了需要估計的輸出單元個數,平衡二叉樹需要估計log2V個輸出,基於層次級的哈夫曼樹僅需要log2(Unigram-perplexity(V)),例如,當詞典含有一百萬個詞時,使用該結構會使評估速度大約提升兩倍,但是對於神經網路語言模型來說這並不是主要的提速,因為計算的瓶頸在於N×D×H這項,之後我們將提出不包括隱藏層的結構,這樣模型的計算複雜度主要取決於softmax歸一化的效率。

2.2 Recurrent Neural Net Language Model (RNNLM)

基於語言模型的迴圈神經網路主要克服前向NNLM的缺點,比如需要確定文字的長度,比起淺層神經網路,RNN可以表示更復雜的模型,RNN模型沒有投影層,只有輸出層,隱藏層和輸出層,這種模型的特點是有迴圈矩陣連線隱藏層,具有時間延遲連線,這允許形成長短期記憶,過去的資訊可以由隱藏狀態表示,隱藏狀態的更新由當前輸入和前一個輸入的隱藏層的狀態決定。RNN模型每個樣本的訓練複雜度是:

Q=H×H+H×V

D和隱藏層H有相同的維度,而且,使用層次級的softmax,H×V可以降低為log2V,所以大部分的複雜度來自H×H

2.3 Parallel Training of Neural Networks

為了在更大的資料上訓練模型,我們在大分散式框架DistBelief上實現幾個模型,包括前向NNLM模型和本文中的模型,這個框架允許我們並行的運行同一個模型的不同副本,每個副本通過一個儲存所有引數的中央伺服器進行引數更新。對於這種並行訓練,我們使用小batch非同步梯度下降和一個自適應的學習速率,叫做Adagrad,在這個框架下,使用100多個模型副本是常見的,在一個數據中心使用不同機器的cpu核。

3 New Log-linear Models

這節中,提出兩個模型來學習詞的分散式表示,而且試圖降低計算複雜度。之前的研究表示大部分的複雜度是由於模型的非線性層導致的。我們試圖探索更簡單的模型,雖然無法精確地和神經網路一樣表示資料,但是可以訓練更多的資料。

神經網路語言模型可以用兩步訓練:第一,連續詞向量可以用簡單模型學習得到,然後N元模型在這些詞上進一步訓練,在學習詞向量上有很多工作。

3.1 Continuous Bag-of-Words Model

第一個提出的模型和前向NNLM相似,不同是非線性層刪除了,投影層由所有詞共享,因此,所有詞都投影到相同的位置(向量平均化),我們稱這為詞袋模型,詞的順序對於投影不影響,而且我們還使用前面的詞,輸入為4個前面的詞和4個後面的詞的log-linear分類器獲得最好的結果,訓練複雜度是:

這個模型我們叫做CBOW,這不像標準的詞袋模型,它使用文字的連續分佈表示,

 

 

3.2 Continuous Skip-gram Model

第二個模型和CBOW相似,但是不是基於上下文預測當前的詞,而是根據另一個詞最大化這個詞的類別,更確切的說,使用當前詞作為log-linear分類器和連續投影層的輸入,並且預測當前詞的前面和後面的幾個詞。我們發現增加詞的前後幾個詞的範圍會增加詞向量的質量,但會增加計算複雜度,由於一些距離當前詞較遠的詞與當前詞聯絡較少,我們賦予比較低的權重,模型的訓練複雜度是:

Q=C×(D+D×log2V)

C是距離當前詞的最大距離,如果C=5,對於每個訓練的單詞,如果我們在(1,C)之間隨機選擇一個數R,並使用當前詞的R個後面的詞和R個前面的詞作為正確的標籤,這要求我們做R*2個詞的分類,即當前詞作為輸入,R+R個詞作為輸出。

4 Results

4.1 Task Description

4.2 Maximization of Accuracy

4.3 Comparison of Model Architectures

4.4 Large Scale Parallel Training of Models

4.5 Microsoft Research Sentence Completion Challenge