系統學習NLP(十四)--句子向量與段落向量

轉自:https://blog.csdn.net/qq_35082030/article/details/72582103

摘要

許多機器翻譯的算法都需要使用固定長度的詞向量特徵。在到達文本層面時,我們最常用的一個固定長度的特徵是詞袋模型。儘管他們很流行,但是詞袋模型有兩大缺點:1、失去了詞序特徵;2、忽略了語義特徵,例如,powerful與strong和Paris距離都是非常遠的。在本文中,我們提出了一個段落向量,它是一個無監督算法,從變長的文本(句子、段落、文章)中學習到固定長度的詞向量特徵。我們的算法使用一個密集向量來表示每個文本,而這個是通過預測詞出現在文本來訓練的。它的結構給了我們可以克服詞袋模型缺點的可能。實驗結果顯示,段落向量優於詞袋模型,也同樣優於其他文本向量表示。最終我們在幾個文本分類和情感分析任務中取得了最優值。

1 引言

文本分類和聚類在許多應用中扮演重要作用,例如文本檢索、網頁搜索和垃圾郵件過濾。而這些應用的核心都是像邏輯斯蒂迴歸或者K-means聚類這樣的機器學習算法。這些算法通常需要使用一個定長的向量來表示輸入文本。由於詞袋模型和n-graims模型的簡單、有效和經常去的不錯的準確度,因此他們是最常用文本定長向量表達方式。

但是,詞袋模型有許多缺點。詞序特徵會丟失,因此不同的句子,如果使用相同的單詞,可能得到的是相同的向量表達。即使是n-gram模型,它也只是在較短的上下文中考慮詞序,這就受到了稀疏數據和高維的約束。詞袋模型和n-gram模型對於詞義都是不敏感的,它們更多的會考慮詞與詞之間的距離。就像摘要中說的那樣,powerful與strong和Paris距離都是非常遠的,事實上,我們知道,powerful與strong更近。

本文中,我們提出了段落向量,一種無監督框架來學習爲每篇文本分配向量。文本可以是變長的,無論是句子還是篇章。之所以叫做段落向量是爲了強調這個方法可以應用到變長文本中,無論是句子、段落還是更大的篇章單元。

在我們的模型中,向量表達是由在段落中預測有用的詞來訓練的。更確切來講,我們通過幾個從段落中獲取的詞向量來連接成段落向量,並且對在給出的上下文中預測接下來的詞。詞向量和段落向量都是基於SGD和BP算法的。不同的是,詞向量是共享的,而段落向量是段落間相互獨立的。在預測時,段落向量通過固定的詞向量來進行預測,並且訓練一個新的段落向量直到收斂。

我們的技術主要受到了最近使用神經網絡學習詞向量表示的工作的激勵。在他們的前期工作中,每一個詞都會由一個向量表示,而這個向量來源於上下文中其他詞向量的拼接或者平均。例如,在2006年的Bengio的神經網絡語言模型中,它使用前幾個詞向量的拼接來構建神經網絡的輸入,並且嘗試去預測接下來的詞。其結果就是,當模型訓練完成後,詞向量被映射到了一個向量空間,在這個向量空間中,具有相似語義的詞會有相似的向量表示。

接着這些成功的技術,研究者們又試圖把模型擴展以從詞層面到達短語級或者句子級層面。例如,一個簡單的方法就是使用文本的所有詞向量加權平均。一個更復雜的方法是使用矩陣操作,根據句子的短語結構分析樹給出的順序組合詞向量。這兩種方法都有缺陷,第一種方法和詞袋模型一樣丟失了詞序特徵,第二種方法則只能在句子層面上做,因爲它依賴於短語句法分析。

段落向量能夠組合序列化變長輸入的表達。不像之前的方法,它具有普適性而且可以應用於各種長度的文本:句子、段落和篇章。他不需要對特定任務進行詞權重的調整,它也不需要依賴於句法分析樹。在接下來的部分中,我們將會展現一些在基準數據集上的實驗,這些實驗充分展示了段落向量的優勢。例如,在情感分析中,我們取得了最優的結果,比之前複雜的方法還要減少16%的錯誤率。在文本分類任務中,我們方法明顯打敗了詞袋模型,取得了大約30%的性能提升。

2算法

我們從之前學習詞向量的方法開始講起。這些方法都對我們的段落向量方法有促進作用。

2.1 詞向量表示學習方法

這一部分,我們介紹詞向量的相關概念。一個著名的詞向量學習框架如圖1所示,其任務就是通過給出的上下文中的詞可以預測當前詞的向量。
這裏寫圖片描述
在這個框架中,每個詞都會被映射成一個獨一無二的詞向量,通過一個一維矩陣W(譯者注:onehot編碼),這一列表示着這個詞在詞典中的位置。通過求和或者求平均的方法來獲得矩陣,這個矩陣被用來預測下一個詞的詞向量的特徵。

更正式的,給定一串單詞w1,w2,w3,…wT,詞向量模型的目標就是使得平均似然估計最大:

預測任務通常是使用一個多類分類器,例如Softmax函數。這裏,我們使用:
這裏寫圖片描述
每一個yi都是一個非歸一化的似然概率,對應的是每一個輸出的詞i,其中y的計算如下:
這裏寫圖片描述
這裏,U,b是softmax的參數。h是由W中抽取出的詞向量的平均值或者求和構成。
這裏寫圖片描述
實際應用中,層次化的Softmax(Morin&Bengio,2005;Mnih &Hinton,2008;Mikolov et all,2013c)比普通Softmax更適合快速訓練。在我們的工作中,層次化的Softmax是一個二叉哈夫曼樹。短編碼被分配給了頻率高的詞。這時一個很好的加速訓練的小技巧因爲這樣一般的詞都可以得到快速訓練。其代碼和(Mikolov et all,2013c)用的是一樣的。

基於詞向量的神經網絡模型大多使用SGD方法訓練,其梯度通過BP算法獲得。這種模型在神經語言模型中非常常見。一個關於詞向量的訓練算法的具體實現在這裏可以找到:code.google.com/p/word2vec/( Mikolov et all,2013a)

當訓練收斂後,擁有類似語義的單詞會被映射到向量空間裏相似的位置上。還是“powerful”和“strong”,他們離的更近。而且詞向量間的不同,也表示着不同的意思。這就意味着距離差距也有語義差距。King-man=Queen-woman。大概就是這意思,這個可以被用來學習一個線性矩陣來翻譯不同語言間的單詞和短語。

這些特性使得詞向量對於一些自然語言處理的任務特別適合,例如語言模型(Bengio et al 2006;Mikolov et all 2012),自然語言理解(Collobert & Weston 2008;Zhila et all,2013),統計機器翻譯(Mikolov et all 2013b;Zou et al.,2013),圖像理解(Frome et al,2013)和相關性抽取(Socher et al,2013a)。

2.2 段落向量

我們的學習段落向量的方法是受到了學習詞向量的啓發。這個啓發就是,我們使用詞向量來預測句子中下一個單詞。所以,儘管這些詞向量初始化時是隨機的,但是他們最終還是捕獲了語義信息作爲預測結果的副產品。我們將使用同樣的這種方法應用到我們的段落向量中。段落向量也被用來在段落裏給出上下文預測下一個詞。

在我們的段落向量框架中(圖2),每一個段落也被映射成一個獨立的向量,使用一個矩陣D來表示。而每個單詞也被映射爲一個獨立的向量,使用矩陣W來表示。段落向量和詞向量都被平均或者求和在一個上下文中用來預測下一個詞。在實驗中,我們使用平均的方法來組合這些向量。
這裏寫圖片描述
更重要的,模型中唯一改變的只有式1中的h,從只是D表示變成了D和W共同表示。

段落塊可以被看成是另一個詞,這個詞裏記載着當前上下文所缺失的信息,或者說是段落的主題。正因爲這個原因,我們經常叫這個模型爲分佈式記憶模型——段落向量(PV-DM)

上下文信息是按照固定長度在段落上根據滑動窗口不斷採樣,段落向量會被該段落產生的所有上下文窗口所共同擁有,但是不跨越段落,也就是說,不同段落的段落向量是不同的。但是不同段落的詞向量是相同的。

段落向量和詞向量使用隨機梯度下降方法訓練,這個梯度使用的是BP算法獲得。每一步的隨機梯度下降,都是從一個隨機段落裏採樣獲得固定長度的上下文,通過圖2種的網絡計算梯度誤差並且使用該梯度更新模型中的參數。

在預測的時候,需要一個實現一個預測的步驟來進行計算一個新段落的段落向量,這也是通過梯度下降獲得。在這步驟中,模型的剩餘參數,包括詞向量W和Softmax的權重都是固定的。

假設這裏有N個段落在語料庫中,有M個詞在詞典裏,我們想去學習段落向量。因此每段都被映射到p維裏,每個詞被映射到q維裏,這樣,模型總共擁有N*p+M*q參數,包括softmax的參數。即使當N非常大時,這些參數也有可能非常大,但是整個訓練過程也是稀疏的並且高效的。

經過訓練後,段落向量就可以被用來作爲段落的特徵。例如可以替代詞袋特徵等。我們可以把這個特徵直接用到機器學習算法中,例如邏輯斯蒂迴歸、支持向量機或者K-means聚類。

總的來說,這個算法有2個主要步驟:1)使用無監督方法訓練詞向量W(譯者注:和Word2vec一樣);2)推測階段獲取段落向量D。第三步驟是使用D在一個標準分類器上進行標籤預測,例如邏輯斯蒂分類或者支持向量機。

段落向量的優勢:段落向量的一個最主要的優勢在於它不需要標註的語料。

段落向量也克服了一些詞袋模型的缺點。首先它隱含了詞向量模型的最重要的特點,詞的語義。也就是說,相似的語義的詞會有相似的位置(譯者注:意思是,相似的語義的段落也有相似的位置)。第二個優勢就是它考慮了詞序,就像在較短的上下文中n-gram模型所做的那樣。這是非常重要的,因爲n-gram模型提供了大量的段落信息,包括詞序。我們的模型就有可能優於n-gram模型,因爲n-gram模型可能創建出一個高維的但卻稀疏的矩陣。

2.3無詞序的段落向量:分佈的詞袋模型

以上的方法都是考慮了在一個文本窗口中使用詞向量和段落向量的鏈接來預測下一個單詞。另一個方法是在輸入中忽略上下文單詞,但是在輸出中強制模型對段落中隨機採樣的單詞進行預測。事實上,SGD的每一次迭代中,我們都會從一個文本窗口中採樣,然後從這個文本窗口中隨機採樣一個單詞並且構建一個基於段落向量的分類任務。這項技術見圖三。我們叫做這種方法爲PV-DBOW,與PV-DM相對應。

除了概念上簡單外,這個模型也存儲更少的數據。我們只需要存儲Softmax權重,而之前的模型需要存儲Softmax權重和詞向量。這個模型更像是詞向量模型中的Skip-gram模型。
這裏寫圖片描述
在我們的試驗中,每個段落向量由2部分組成:一個是通過標準段落向量(PV-DM)另一個是(PV-DBOW)。PV-DM通常可以取得很好的成績在很多任務上,但是如果和PV-DBOW搭配的話,能對多個系統都取得更連續的好的成績,因此我們強烈推薦。

3實驗

我們做了實驗來更好的理解段落向量的表現。爲此,我們在兩個文本理解問題上做了基準的段落向量:情感分析和信息檢索。

對於情感分析任務,我們使用了2個數據集斯坦福情感分析樹庫數據集(Socher ,2013b)和IMDB數據集(Mass ,2011)。在這兩個數據集中的文本長度是非常不同的,Socher每個例子都是一個單獨的句子,而Mass的數據集中的例子都是好幾個句子連在一起的。

我們也使用了我們的方法在信息檢索的任務上,這個任務是當給出一個查詢時,判斷一個文檔是否應當被檢索到。

3.1 斯坦福情感樹庫數據集上的情感分析

數據集:這個數據集首先被(Pang & Lee ,2005)提出來,並且被(Socher et all. 2013c)擴展作爲情感分析的基準系統。它包含了11855個從爛番茄上的影視評論的句子。

這個數據集包涵一下集合:8544個訓練集,2210個測試集,1101個驗證集。
每一個句子都有一個標籤,這個標籤從0-1分別表示最消極到最積極。這些標籤都是Amazon Mechanical Turk上由人工標記得到的。

這個數據集附帶有每個句子的具體標籤以及子句法結構樹,前面兩個做了很多工作(譯者注:此處省略),最終這個數據集可以在http://nlp.Stanford.edu/sentiment/獲取。

任務和基準線:在(Socher et all.2013)文章中,任務被分成了2個基準系統,一個細準系統使用5分類,一個基準系統分爲2分類。而且既可以對整個句子進行標註也可以對所有的短語進行標註。這裏使用的是對整個句子標註。

(Socher et al. 2013b)使用和好幾種方法在這個數據及上,並且發現遞歸神經張量網絡要比詞袋模型好很多。這可以被認爲是影評經常非常短並且結構在判斷是否是積極還是消極上具有重要作用,就像在很小的數據集上給出單詞後。

實驗草案:
我們按照(Socher et al. 2013b)的方法實現了一下。爲了保證我們能夠充分使用已提供的數據集,在我們的模型中,我們把每個短語都看成是一個獨立的句子,因此我們是在所有的短語中訓練的。

在學習完短語和句子的向量表達後,我們使用這些來學習一個影評打分的預測器。

在測試的時候,我們固定每個詞的向量表達並且學習這個句子的向量表達,使用的是梯度下降方法。一旦句子向量表達學習完成後,我們就使用它用一個邏輯斯蒂迴歸來預測影評打分。

在我們的實驗中,我們使用驗證集交叉驗證了窗口的大小,最優的窗口大小爲8.因此向量表達的分類器有兩個向量組成,一個是PV-DBOW,另一個是PV-DM。在這兩個中,所有的詞和段落向量都是400維的。我們爲了預測第8個詞,我們使用的是7個詞向量和一個段落向量。而特殊符號(。?!)等,我們也視作是一個普通的字符。如果這個句子小於9個詞,我們使用NULL來填充。

結果:
我們把不同方法的錯誤率都放在了表1種。首先應當注意的就是傳統的詞袋模型(貝葉斯、SVM、二元貝葉斯)的表現非常差。這是因爲詞袋模型沒有考慮到句子的組成,例如詞序。因此有很多複雜的語言現象不能夠被識別,例如諷刺。這個結果也顯示遞歸神經網絡模型這種更先進的方法,使用的句法分析而考慮了句子組成,因此表現的更好。
這裏寫圖片描述
但是我們的方法由於以上所有基準系統,包括遞歸神經網絡。而且我們也不需要句法分析。在粗顆粒度上我們降低了2.4%的錯誤率,相比較最好的基準系統提升了16%。

3.2 真正的段落向量:在IMDB數據集上的情感分析

之前都是一個句子,下面是多個句子,即使是(Socher,2013b)使用的RNTN,也是需要依靠句法分析的。我們段落是沒有句法分析的,但是我們仍然可以做,因爲我們不需要句法分析。(譯者注:這個實驗可以見http://blog.csdn.net/lenbow/article/details/52120230,但是效果沒有論文的報告上的好)實驗表明,我們的方法優於其他方法。

數據集:這裏同樣的選取100000條來自IMDB的影評,這個工作在(Maas 2011)裏講過了。主要是25000個已標註的訓練實例、25000個已標註的測試集實例和50000個未標註的實例。總共有2種標籤:積極和消極。這些標籤在訓練集和測試集裏是平均分佈的。數據集可以從http://ai.Stanford.edu/amaas/data/sentiment/index.html獲得。

實驗草案;
我們使用了75000個訓練樣例(25000標註的50000未標註的)。然後獲取已標註的實例的段落向量並把它們放到一個含有一層一藏層50個單元的神經網絡並且使用一個邏輯斯蒂分類器來學習預測分類器。

在測試時,給出一個實力句子,我們固定好其他的網絡並且使用梯度下降方法學習測試樣例中的段落向量。一旦向量學習完畢後,我們通過給神經網絡輸入這些向量來預測這些評論的情感。

我們段落向量模型的超參數使用的和之前的那個任務一樣,只是窗口大小變成了10個詞。其他都沒變。

結果:實驗結果如表2所示。從表中我們可以看出,詞袋模型在長句中的表現很非常好,但是很難有很大的提升知道使用了詞向量。最顯著的改進是在2012年的(Dahl et al. 2012)的工作中,他們在詞袋模型中使用了一種限制型波茲曼機。組合了這兩個模型也只改進了1.5%的錯誤率。

另一個重要改進工作來源於(Wang & Manning,2012).在他們嘗試的方法中,NBSVM的2元特徵取得了最好成績並且提升了2%的錯誤率。
這裏寫圖片描述
在本文中,我們提到的方法顯著的低於10%的錯誤率,達到了7.42%,比最好的還低了1.3%,如果算相對改進的話,則改進了15%。

3.3使用段落向量進行信息抽取

我們開始把注意力轉移到了另一個任務上,在這個任務上,我們使用定長的段落向量表達。其主要任務就是給出最熱門的1000000查詢,然後每個查詢選取前10個結果。然後每次使用3個段落,這三個段落中,有2個是來自同一查詢,另一個是隨機選取的。目的是能預測出哪兩個段落來自同一查詢。判斷的方法爲段落向量化並測量之間的距離,距離近的爲來自同一個查詢。(譯者注:這裏我們不詳細舉例,這是Google的特權)
這裏寫圖片描述

4 相關工作

這裏主要介紹了從向量表達到神經網絡語言模型,以及從詞袋模型到詞向量表達,並且到達短語向量表達和段落向量表達的整個過程。具體可見原文。

5 結論

我們描述了一種無監督學習算法來從變長的文本(句子、段落)中學習到向量表達,我們稱爲段落向量。這些向量表達是根據上下文來預測段落中採樣獲得的單詞。

我們在幾個文本分類任務上都做了實驗,例如在斯坦福樹庫和IMDB數據集上的情感分析任務。在這些任務中,這種方法都是最優的。這些好的表現也表明了段落向量可以對段落的語義有表徵能力。事實上,段落向量確實可以克服很多詞袋模型的缺點。

儘管現在的工作都是聚焦於文本表達,但我們的方法是可以被應用於序列化數據的表達。在無文本領域,句法分析是沒有提供的,我們認爲段落向量是可以取代詞袋模型和n-gram模型的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章