Hierarchical Attention Networks for Document Classification 閱讀筆記

論文:Hierarchical Attention Networks for Document Classification

發表會議:NAACL2016

作者:Zichao Yang^{1} ,Diyi Yang^{1} ,Chris Dyer^{1} ,Xiaodong He^{2} ,Alex Smola^{1} ,Eduard Hovy^{1}

單位:1.Carnegie Mellon University 2.Microsoft Research, Redmond

鏈接:Hierarchical Attention Networks for Document Classification

前言:本文針對文本分類任務提出了一個層次化attention機制模型(HAN),有兩個顯著的特點:(1)採用「詞-句子-文章」的層次化結構來表示一篇文本。(2)該模型有兩個層次的attention機制,分別存在於詞層次(word level)和句子層次(sentence level)。從而使該模型具有對文本中重要性不同的句子和詞的能力給予不同「注意力」的能力。作者在6個數據集合上進行了測試,並且相較以往的模型效果提升顯著。最後,通過可視化說明該模型可以選擇出含有豐富信息的詞語和句子。

一 、寫作動機

文本分類是一項基礎的NLP任務,在主題分類,情感分析,垃圾郵件檢測等應用上有廣泛地應用。其目標是給每篇文本分配一個類別標籤。本文中模型的直覺是,不同的詞和句子對文本信息的表達有不同的影響,詞和句子的重要性是嚴重依賴於上下文的,即使是相同的詞和句子,在不同的上下文中重要性也不一樣。就像人在閱讀一篇文本時,對文本不同的內容是有著不同的注意度的。而本文在attention機制的基礎上,聯想到文本是一個層次化的結構,提出用詞向量來表示句子向量,再由句子向量表示文檔向量,並且在詞層次和句子層次分別引入attention操作的模型。

二、模型構建

HAN的模型結構如Fig.1所示,它包含一個詞序列編碼器,一個詞層面的attention層,一個句子序列編碼器,一個句子層級的attention層。

1. 基於GRU的詞序列編碼器

GRU是RNN的一個變種,使用門機制來記錄序列當前的狀態。隱藏層有兩個門(gate),重置門(reset gate)r_{t} 和更新門(update gate)z_{t} 。這兩個門一起來控制當前狀態有多少信息要更新。在時刻t,隱藏層狀態的計算公式:

h_{t} =(1-z_{t})odot h_{t-1} +z_{t}odot  	ilde{h_t }

更新門(update gate)z_{t} 是用來決定有多少過去的信息被保留,以及有多少新信息被加進來:

z_{t} =sigma (W_{z}x_{t} +U_{z}h_{t-1} +b_{z}  )

這裡x_{t} 是在時刻t輸入的單詞的詞向量,候選狀態	ilde{h_{t} } 的計算方法和普通的RNN相似:

	ilde{h_{t} }=tanh(W_{h}x_{t}+r_{t}odot (U_{h}h_{t-1}  ) +b_{h}   )

重置門r_{t} 決定有多少過去的信息作用於候選狀態,如果r_{t} 是0,即忘記之前的所有狀態:

r_{t}=sigma(W_{r}x_{t}+U_{r}h_{t-1}+b_{r} )

2 層次化attention

2.1 詞編碼器(Word Encoder)

由詞序列組成w_{it} ,tin [0,T]組成的句子,首先把詞轉化成詞向量,x_{it}=W_{e}w_{it},然後用雙向的GRU網路,可以將正向和反向的上下文信息結合起來,獲得隱藏層輸出。

x_{it}=W_{e}w_{it},tin[1,T]

overrightarrow{h_{it}}=overrightarrow{GRU}({x_{it}})

overleftarrow{h_{it}}=overleftarrow{GRU}({x_{it}})

對於一個給定的詞語w_{it},經過GRU網路後,我們獲得了一種新的表示:h_{it}=[overrightarrow{h_{it}},overleftarrow{h_{it}}]

h_{it}包含了w_{it}周圍兩個方向的信息。

2.2 詞級別的attention機制

attention機制的目的是要把一個句子中,對句子的含義最重要,貢獻最大的詞語找出來。我們通過將h_{it}輸入到一個單層的感知機(MLP)中得到的結果u_{it}作為h_{it}的隱含表示。

u_{it}=tanh(W_{w}h_{it}+b_{w})

為了衡量單詞的重要性,我們用u_{it}和一個隨機初始化的上下文向量u_{w}的相似度來表示,然後經過softmax操作獲得了一個歸一化的attention權重矩陣alpha _{it},代表句子i中第t個詞的權重。

alpha _{it}=frac{expleft( u_{it}^{	op } u_{w}
ight) }{sum_{t}^{}{expleft( u_{it}^	op u_{w} 
ight) } }

有了attention權重矩陣以後,我們可以將句子向量s_{i}看作組成這些句子的詞向量的加權求和。這裡的上下文向量u_{w}是在訓練網路的過程中學習獲得的。我們可以把u_{w}當作一種詢問的高級表示,比如「哪些詞含有比較重要的信息?」

s_{i}=sum_{t}{alpha_{it}h_{it}}

2.3 語句編碼器(Sentence Encoder)

得到了句子向量表示s_{i}以後,我們用類似的辦法獲得文檔向量:

overrightarrow{h_{i}}=overrightarrow{GRU}(s_{i}),iin[1,L]

overleftarrow{h_{i}}=overleftarrow{GRU}(s_{i}),iin[L,1]

對於給定的句子s_{i}我們得到了相應的句子表示h_{i}=[overrightarrow{h_{i}},overleftarrow{h_{i}}]。這樣獲得的表示可以包含兩個方向的上下文信息。

2.4 句子級別的attention

和詞級別的attention類似,我們也提出了一個句子級別的上下文向量u_{s},來衡量一個句子在整篇文本的重要性。

u_{i}=tanh(W_{s}h_{i}+b_{s})

alpha_{i}=frac{expleft( u_{i}^	op u_{s} 
ight) }{sum_{t}^{}{expleft( u_{t}^	op u_{s} 
ight) } }

v=sum_{i}{alpha_{i}h_{i}}

我們獲得了整篇文章的向量表示v,最後可以使用全鏈接的softmax層進行分類。

三、實驗

1 數據集

論文中使用了六個數據集,Yelp reviews2013,2014,2015;IMDB reviews;Yahoo Answers;Amazon reviews。每個數據集合中80%的數據用作訓練集合,10%的數據用作驗證集合,剩餘10%的集合用作測試集合。

2 實驗指標與對比模型

  • 線性模型:使用手工構建的統計數據作為特徵,多項式logistic回歸作為分類器
  • SVM:支持向量機+unigr,bigrams
  • word-based CNN:基於詞的卷積神經網路
  • Character-based CNN:字元級別的卷積神經網路
  • Conv/LSTM-GRNN:使用「詞-句子-文本」的層次化結構表示文檔,然後用帶有門限制的RNN做分類。

3 實驗結果

4 結果分析

根據上表的實驗結果可以看出來,層次化attention模型在所有的六個數據集合上均取得了最好的效果。這種效果的提升是不受數據集大小限制的。在相對較小的數據集比如Yelp2013和IMDB上,我們的HAN模型超過基準模型的最好表現的比率分別為3.1%和4.1%。相同的在,大數據集上,我們的模型優於之前的最好模型的比例分別為3.2%,3.4%,4.6%,6.0%,分別在Yelp2014,Yelp2015,Yahoo Answer,Amazon Answer。

一些沒有使用層次結構來表示文本的神經網路分類演算法比如CNN-word,CNN-char,LSTM在一些大數據集合上並沒有超過基準模型太多。單從文本的結構化表示來看,HN-MAX,HN-AVG都可以顯著提升CNN-word,LSTM等模型的性能。我們將層次話結構和Attention機制聯合起來的模型,更是超過了單純的層次化模型LSTM-GRNN。

5 可視化分析

上圖是詞「good」在IMDB數據集合種的的attention權值分布,可以看出,當評價等級為1時Fig3(b),good的權值集中在比較低的一端,當評論的變得向好評方向時,good的權重也開始在高的一端分布。

相反的,詞「bad」在評價等級較低的評論里權值較大,在評價高的評論里權值小。

情感分析任務種,從上圖我們可以看到,在好評里,delicious,fun,amazing,recommend 等詞所在的句子顏色深,權值大。在差評里,terrible,not等詞占的比重大。

在主題分類任務中,在科學自然類別里,權值比較大的詞zebra,strips,camouflage,predator。 在計算機網路類別里web,searches, browsers的權值較大。

四 總結

本文提出了一種基於層次化attention的文本分類模型,可以利用attention機制識別出一句話中比較重要的詞語,利用重要的詞語形成句子的表示,同樣識別出重要的句子,利用重要句子表示來形成整篇文本的表示。實驗證明,該模型確實比基準模型獲得了更好的效果,可視化分析也表明,該模型能很好地識別出重要的句子和詞語。


推薦閱讀:

PaperWeekly 第53期 | 更別緻的詞向量模型:Simpler GloVe - Part 2
線下沙龍 x 北京 | NLP專題技術分享會,佔座全憑手速!
論文推薦:機器閱讀理解,問答系統,對話生成 | 本周值得讀 #36
SEO詞庫清洗詞和歸類相關問題?

TAG:深度学习DeepLearning | 自然语言处理 |