EMNLP 2017

論文《Recurrent Attention Network on Memory for Aspect Sentiment Analysis》學習筆記語料獲取及PyTorch實現:songyouwei/ABSA-PyTorch,data中的三個語料參考筆記:blog.csdn.net/lrt366/ar,但是後面的翻譯一團糟呢...TensorFlow實現:github.com/lpq29743/RAM

Abstract

作者的模型採用多注意力機制來捕獲被長距離分割的情感特徵,因此在處理不相關信息時會更健壯。然後將多注意力機制的輸出和RNN的輸出做一個非線性的組合,這樣可以增強模型的表達能力和並發行。

1 Introduction

為了分析針對某個target的情感極性,一個關鍵的任務是對原始句子中target的上下文進行合理建模。簡單的情況是,目標情緒可由目標附近一個句法相關的意見詞推斷得到。但有時,意見詞會被包含在複雜的上下文中。舉例如下。

Its camera is not wonderful enough.

可能這句話只想表達一個中性的意思,而非消極的情緒。

為了解決上述問題,可以使用TD-LSTM和attention機制等。然而,LSTM存在信息丟失的問題,同時也無法處理複雜的句子。單attention在關注多個詞的時候可能會丟失每個詞的特點。論文給出了一個需要關注多個分散特徵的例子,如下。

Except Patrick, all other actors dont play well.

這句話要求模型綜合」except「、」dont play well「,給目標」Patrick「一個正向的情感極性。這一點是LSTM和單一的attention都難以做到的。

為了解決上述問題,作者在本文中提出了一種新的框架。首先,作者使用Bi-LSTM來從輸入產生memory。接著每一片memory會被加權,權重與單詞和target之間的相對距離有關。這樣,來自同一個句子的不同target就有了量身定做的memory。最後,將多注意力機制用於位置加權後的memory,再將輸出結果與RNN非線性結合,就得到了最後的文本表示。

作者認為他們的框架類似於人類的認知過程。該過程中,人首先會注意一部分關鍵信息,之後他會注意到更多的信息,最後將多個注意到的信息綜合起來,得到結論。該特點使模型在分析上面的句子時是有效的。

比較那篇Deep Memory Network。作者認為, Tang的模型確實使用了多注意力機制,但是他們把上一層attention的結果輸入到下一層attention來使模型關注更準確的信息。他們輸入softmax的分類向量只是最後一層attention輸出的向量,而該向量從本質上講只是模型輸入的線性組合。因此,上面提到過的單注意力的缺點在Tnag的模型中依然存在。而作者的模型將attention的輸出結合到了GRUs中,從而引入了RNN遺忘、維持信息以及非線性轉換的特點。

作者在Twitter、SemEval 2014語料上做了實驗。為了驗證模型在不同語言上的泛化能力,作者還構建了一個中文語料,似乎沒有公開。

太菜了,幾乎整個翻譯了一遍,啰啰嗦嗦。

不過還是把整個提出問題-解決問題的過程理了理,還行。Tang大佬的模型被diss了,很真實。

2 Related Work

技術鏈。

傳統機器學習方法->神經網路方法(Rec-NN、LSTM等)->Memory、多attention。

3 Our Model

作者的模型由5個部分組成。

  1. input module
  2. memory module
  3. position-weighted memory module
  4. recurrent attention module
  5. output module
作者先假設目標只由一個單片語成。對多詞target,作者會在後面敘述如何處理。

3.2 BLSTM for Memory Building

其實就是用了一個兩層的BLSTM來構建memory。將最後一層BLSTM每個時間步輸出的兩個隱態拼接起來,作為memory中的一個向量。計算方法如下。某個門的計算均與該層上個時間步以及上一層該時間步的隱態有關。

3.3 Position-Weighted Memory

為每個單詞的詞向量計算一個位置權重。基本思想是用當前詞和target之間單詞的個數來衡量距離。記所有句子的截斷長度是tmax。

計算詞向量的位置權重如下。

t是當前詞的位置。τ是target的位置。

計算相對距離如下。

1維

相對距離拼接在加權memory向量的後面。

如果target由多個單片語成,那麼計算距離時,需要判斷當前詞在target的左邊還是右邊,然後用target的邊界詞位置代表target的位置。總之標準一致就行。

3.4 Recurrent Attention on Memory

有了memory之後,需要完成下面兩點。

  1. 恰當地從位置加權memory中提取相關信息。
  2. 合理加工提取到的信息作為情感分類的依據。

前者由多attention實現。後者由RNN(實際上是GRUs)實現。

用e(episode)表示GRU在某個時刻的隱態。

首先用注意力機制從記憶片中得到t時刻的注意力信息。計算過程如下。

mj表示某個位置加權記憶片。e(t-1)表示GRU上個時刻的隱態。vτ表示target的詞向量,多詞target取均值。target代表某個人時不需要拼接這個向量(應該是針對那個中文語料說明的)。

歸一化
得到t時刻的注意力加權記憶片

然後將t時刻的注意力加權記憶片和t-1時刻的隱態送入GRU,計算得到最後時刻隱態e(last_t)作為送入softmax進行分類的表示。

3.5 Output and Model Training

損失函數使用交叉熵。L2正則化。

Dropout+早停防止過擬合。

4 Experiment

作者在這裡的敘述很有意思。

」一些工作使用了領域相關的語料來訓練詞向量,以期獲得更好的效果。但我們更偏向於使用通用的詞向量。這樣做一方面可以更好地揭示模型的學習能力,另一方面也方便與其他論文進行比較。「

4.3 Main Results

4.4 Effects of Attention Layers

層數多了不一定好。

但是多層總比一層好。

4.5 Effects of Embedding Tuning

總之預訓練,然後不微調,效果要更好。

5 Conclusions and Future Work

其實多attention中,attention的數目就是關注的關鍵信息的數目。但是這個數目不可能是固定的,所以當沒有有用的信息時,需要用一種方法來自動停止attention。同時,可以嘗試採用其他的memory加權方法來區分一個句子中的多個target。

點評:這篇論文可以說是很有特色了。解釋性很強。很具有攻擊性。我喜歡。

推薦閱讀:

相关文章