天天看點

Convolutional Neural Network For Sentence Classification

用卷積神經網絡對句子分類

Yoon Kim

紐約大學

[email protected]

摘要

針對句子級别的分類任務,我們使用卷積神經網絡(CNN)結合預訓練的詞向量做了一系列的實驗。我們證明一個少量調節超參數的簡單CNN模型結合靜态詞向量可以在很多基準上取得非常好的結果。通過細粒度的調節參數學習特定任務的詞向量可以進一步的提升結果。我們提出了對架構簡單的修改,這樣可以同時使用基于特定任務和靜态的詞向量。此處讨論的CNN模型在7個任務的4個當中取得目前最好的結果,包括情感分類和問題分類。

1.介紹

深度學習模型在計算機視覺(Krizhevskv et al., 2012)和語音識别(Graves et al., 2013)兩大領域已經取得了顯著的結果。在自然語言處理領域,基于深度學習模型的大量工作已經涉及通過神經語言模型(Bengio et al., 2003; Yih et al., 2011; Mikolov et al., 2013)學習詞向量的表示和在訓練好的詞向量上組合特征用于分類任務(Collobert et al., 2011)。詞向量,此處單詞從一個稀疏、V(這裡V是所有詞的總數)維的編碼通過一個隐藏層映射到一個低維的向量空間,這對将單詞的語義特征編碼到詞向量中的特征抽取器來說非常重要。在這樣稠密的表示中,語義相近的單詞在低維空間中的歐式距離或餘弦距離也會同樣相近。

卷積神經網絡(CNN)利用可以提取局部特征(Lecun et al., 1998)的卷積層。起初設計用來計算機視覺的CNN模型已經逐漸被證明在NLP領域内同樣有效,并且在語義分析(Yin et al., 2014),搜尋查詢檢索(Shen et al., 2014),句子模型(Kalchbrenner et al., 2014), 和其它NLP(Collobert et al., 2011)任務上已經取得了相當好的結果。

在這篇論文中,我們在通過非監督神經語言模型訓練的詞向量上訓練一個隻有一個卷積層的CNN。這些詞向量是Mikolov et al.(2013)在10億Google 新聞資料上訓練出來的并且是公用的。我們開始是保持這些詞向量不變僅改變模型的其它參數。盡管調節少量的參數,該簡單的模型就在很多基準上達到了非常好的結果,這說明預訓練的詞向量是“通用的”特征抽取器,可以被應用在很多分類任務上。通過細粒度的調節訓練的針對特定任務的詞向量可以進一步提升結果。我們最終對架構做了簡單的修改,借助多個通道可以同時使用預訓練的詞向量和特定任務的詞向量。

我們的工作從哲學的角度上很像Razavian et al. (2014)的工作,其證明對于圖像分類,通過預訓練的深度神經學習模型設計的特征抽取器在很對任務上都表現的很好,包括很多和原始任務不同的任務。

2.模型

Convolutional Neural Network For Sentence Classification

圖1:處理一個句子的兩個通道的模型架構

模型的架構,如圖1所示,是Collobert et al. (2011)CNN架構的微小變形。讓x_i∈R^k表示句子中第i個詞的k維詞向量。一個包含n個單詞的句子(必要的時候可以填充)可以表示成:

x_(1:n)=x_1⊕x_2⊕…⊕x_n (1)

這裡⊕表示拼接操作。一般來說讓x_(i ∶ i+j)表示單詞x_i,x_(i+1),…,x_(i+j)的拼接。一個卷積操作涉及一個濾波器w∈R^hk,應用在一個h個單詞的視窗産生一個新的特征。例如,特征c_i是對單詞視窗x_(i∶ i+h-1)應用如下公式産生的:

c_i=f(w∙x_(i∶ i+h-1)+b) (2)

這裡b∈R是偏置項,f是一個非線性函數如雙曲正切函數。該濾波器應用在句子中{x_(1∶ h ), x_(2∶h+1),…,x_(n+h-1∶n) }每一個可能的單詞視窗産生一個特征映射:

c=[c_1,c_2,…,c_(n+h-1) ](3)

這裡c∈R^(n-h+1)。然後我們對特征映射采用最大池化政策(Collobert et al., 2011)即取最大的值c ̂=max{c}作為對應此濾波器的特征。此思路是去捕獲最重要的特征——每個特征映射中最大的值。最大池化可以自然處理不同的句子長度。

我們已經描述通過一個濾波器抽取一個特征描述這個過程。使用多個濾波器(不同的視窗大小)的模型可以擷取多個特征。這些特征組成了倒數第二層并且傳給全連接配接的softmax層,輸出标簽的機率分布。

在其中一個模型變種中,我們做了将詞向量分兩個“通道”的實驗,一個通道中的詞向量在模型訓練的過程中保持不變,另一個通過BP算法(3.2節)進行細粒度的調節。在多通道架構中,如圖1所示,每個濾波器應用在兩個通道,結果被加起來用等式(2)計算c_i。否則模型等價于單通道的架構。

2.1 正則化

對于正則化,在倒數第二層我們采用dropout政策并且限制權重向量(Hinton et al., 2012)的二範式大小。Dropout通過随機丢棄——例如在前向傳播的過程中,每個隐層單元有p的機率被丢棄,進而防止隐層單元的共适應問題。即,給定倒數第二層z=[(c_1 ) ̂,…,(c_m ) ̂ ](指出我們有m個濾波器),不是使用:

y=w∙z+b (4)

在前向傳播中對輸出單元y,dropout使用:

y=w∙(z ○r)+b (5)

這裡○是元素級的乘法操作并且r∈R^m是一個“掩蓋”向量,向量中的元素都是一個伯努利随機變量有p的機率變為1。梯度僅僅可以通過非掩蓋的單元反向傳播。在測試階段,權重向量通過因子p縮減例如w ̂=pw,并且w ̂被用來(沒有使用dropout)給看不見的句子打分。我們另外限制權重向量的二範式,在每一步梯度下降之後,如果‖w‖_2>s,重新将w的二範式設定為‖w‖_2=s。

3.資料集和實驗步驟

Convolutional Neural Network For Sentence Classification

表1:分詞之後的資料集的簡要統計。C:目标類的個數。l:平均句子長度。N:資料集大小。|V|:單詞總數。|V_pre |:出現在預訓練詞向量中詞的個數。Test:測試集的大小(CV意味沒有标準的訓練/測試集并且采用十折交叉驗證的方法)

我們在不同的基準上測試我們的模型。資料集的簡要統計如表1所示。

  • MR: 一句話的電影評論。分類涉及檢測積極/消極的評論(Pang and Lee, 2005)。
  • SST-1:斯坦福情感樹庫——MR資料的擴充,但是包含train/dev/test資料集的劃分及細粒度的标簽(非常積極、積極、中立、消極、非常消極),被Socher et al.(2013)重新标記。
  • SST-2: 和SST-1一樣,但是沒有中立的評論,隻有積極和消極兩種标簽。
  • Subj:主觀資料集,任務是去劃分一個句子是主觀性的還是客觀性的(Pang and Lee. 2004)。
  • TREC:TREC問題資料集——任務設計到将一個問題劃分為六種問題類型(人,位置,數值資訊等)(Li and Roth, 2002)。
  • CR:不同産品(照相機、MP3s等等)的客戶評論。任務是預測積極/消極的評論(Hu and Liu, 2004)。
  • MPQA:MPQA資料集(Wiebe et al., 2005)的觀點極性檢測子任務。

3.1 超參數和訓練過程

對于所有的資料集,我們使用:矯正線性單元,3, 4, 5三種卷積視窗(h),每種卷積視窗100個特征映射,0.5的dropout比例(p),二範式限制為3,mini-batch大小為50。這些值在SST-2 驗證資料集上通過網格搜尋選擇。

我們除了在驗證集上早停外沒有另外進行任何特定資料集的調節。對于沒有标準驗證集的資料集,我們從訓練資料集中随機選擇10%的資料作為驗證集。通過采用Adadelta更新規則(Zeiler, 2012)及随機mini-batches政策的随機梯度下降算法進行訓練。

3.2 預訓練的詞向量

在沒有大量監督訓練集(Colobert et al., 2011; Socher et al., 2011; Iyyer et al., 2014)的情況下,使用從非監督神經語言模型訓練得到的詞向量進行初始化是用來提升結果的普遍方法。我們使用公用的、下哦那個10億Google 新聞資料中訓練出來的Word2vec詞向量。此向量的次元是300并且是采用連續的詞袋架構(Mikolov et al., 2013)訓練出來的。沒有出現在預訓練詞向量中的單詞随機初始化。

3.3 模型變種

我們使用以下模型變種進行實驗。

  • CNN-rand:我們的基準模型,所有的詞被随機初始化,并在訓練的工程中進行調節。
  • CNN-static:使用預訓練的詞向量——Word2vec。所有的詞——包括随機初始化的未出現在預訓練詞向量中的詞——保持不變僅僅調節模型其它的參數。
  • CNN-non-static:和CNN-static相似,但是預訓練的詞向量在每個任務中被細粒度的調節。
  • CNN-multichannel:有兩個詞向量集合的模型。将每個向量集合看作一個“通道”并且每個濾波器應用在所有的通道,但是梯度隻能通過其中一個通道進行反向傳播。是以,模型能夠細粒度的調節其中一個向量集合,而保持另外一個不變。

    為了探究上述變種對其它随機因子的影響,我們消除其它随機化的根源——交叉驗證次數指派,未知詞向量的初始化,CNN模型參數的初始化——在每個資料集上保持一緻。

4.結果和讨論

Convolutional Neural Network For Sentence Classification

表2:CNN模型和其它結果的對比

我們模型和其它模型的結果對比被列在表2中。我們随機化所有詞向量的基準模型(CNN-rand)就其本省而言表現的不是很好。然而我們期望通過預訓練的詞向量來提升效果的模型,我們對效果提升的幅度感到很吃驚。即使使用靜态向量的簡單模型(CNN-static)表現的相當好,産生了與利用複雜池化模式的複雜深度學習模型(Kalchbrenner et al., 2014)和需要提前計算解析樹的模型(Socher et al., 2013)可比較的結果。這些結果說明預訓練的詞向量是好的,“通用”的特征抽取器,并且可以跨資料集使用。對每個任務細粒度的調節詞向量可以進一步提升結果(CNN-non-static)。

4.1 多通道與單通道模型比較

我們一開始期望多通道的架構可以避免過拟合(通過確定學到詞向量不會偏離初始值太遠),并且比單通道的模型效果好,尤其在更小的資料集上。結果,然而是混合的,進一步在規範化細粒度調節過程的工作是必要的。例如,不使用額外的通道作為non-static的部分,也可以使用單通道,在訓練過程中訓練額外的次元。

4.2 靜态與非靜态表示比較

正如單通道非靜态模型,多通道模型可以細粒度的調節非靜态通道使它對手頭的任務更具體。例如,在Word2vec中good和bad非常相似,大概是因為他們幾乎語義相等。但是在SST-2資料集上,通過非靜态通道調節的向量并不是這種情況。相似的,可以說在表達情感上,nice和great相比,與good更相近,這在訓練的詞向量中被真實的反映出來。

對于(随機初始化)不再預訓練向量集合中的詞,細粒度的調節允許它們學到更有意義的表示:網絡訓練得到感歎号經常與熱情洋溢的表達聯系在一起,并且逗号經常和連接配接副詞聯系在一起。

4.3 進一步觀察

我們做了進一步的實驗和觀察。

Kalchbrenner et al.(2014)使用和我們單通道架構相同的CNN架構,但是卻得到了不好的結果。例如,他們采用随機初始化詞向量的Max-TDNN(時間延遲神經網絡)模型在SST-1資料集上獲得的結果是37.4%,和我們模型獲得的45%相比。我們将此差異歸因于我們的CNN有更大的容量(多個濾波器和特征映射)。

Dropout是如此好的正則化方法以緻于用在一個比必要網絡更大的網絡上并且僅僅使用dropout去正則化效果是好的。Dropout一般可以将結果提升2%-4%。

當随機初始化不在Word2vec中的單詞時,向量的每一維從U[-a,a]采樣,結果獲得了微小的提升,這裡的a的選擇要使随機初始化的詞向量的方差和預訓練的詞向量有相同的方差。在初始化的過程中,嘗試應用更複雜的方法反映預訓練詞向量的分布,看能否使結果得到提升是很有意思的事情。

我們在Collobert et al.(2011)通過維基百科訓練的、另一個公用的詞向量上進行試驗,并且發現使用Word2vec的結果要遠遠優于它。目前不清楚是因為Mikovlov et al.(2013)的架構還是因為10億的Google新聞資料集。

Adadelta(Zeiler,2012)和Adagrad(Duchi et al., 2011)的結果相似,但是需要更少的訓練次數。

5.結論

在這篇論文中,我們使用卷積神經網絡和Word2vec進行了一系列的實驗。盡管微小的超參數調節,具有一個卷積層的簡單CNN就表現的非常好。我們的實驗再次證明:将深度學習應用在NLP領域,非監督預訓練的詞向量是一個非常重要的因素。

緻謝

我們感謝Yann LeCun和匿名的審稿人們有利的回報和建議。

繼續閱讀