用於文本分類的RNN-Attention網絡


用於文本分類的RNN-Attention網絡

https://blog.csdn.net/thriving_fcl/article/details/73381217

Attention機制在NLP上最早是被用於seq2seq的翻譯類任務中,如Neural Machine Translation by Jointly Learning to Align and Translate這篇文章所說。

之后在文本分類的任務中也用上Attention機制,這篇博客主要介紹Attention機制在文本分類任務上的作用,與seq2seq中使用的可能會略有不同, 主要參考的論文是Hierarchical Attention Networks for Document Classification。這里的層次Attention網絡並不是只含有Attention機制的網絡,而是在雙向RNN的輸出后加了Attention機制,層次表現在對於較長文本的分類,先將詞向量通過RNN+Attention表示為句子向量,再將句子向量通過RNN+Attention表示為文檔向量。兩部分的Attention機制是一樣的,這篇博客就不重復說明了。

一、Attention 的作用

在RNN的文本分類模型中,可以把RNN看成一個encoder,將需要被分類的文本表示為一個dense vector,再使用全連接層與softmax輸出各類別的概率。

在具體的文本的表示上,可以將RNN最后一個時刻的輸出作為文本的表示,也可以綜合考慮每個時刻的的輸出,將它們合並為一個向量。在tagging與classication的任務中常用雙向RNN(下文寫作BIRNN),每個時刻的輸出向量可以理解為這個時刻的輸入詞在上下文的語境中對當前任務的一個貢獻。BIRNN如下圖所示

BIRNN

根據人類的閱讀習慣進行思考,我們在閱讀的時候,注意力通常不會平均分配在文本中的每個詞。再回到上面的文本表示,如果直接將每個時刻的輸出向量相加再平均,就等於認為每個輸入詞對於文本表示的貢獻是相等的,但實際情況往往不是這樣,比如在情感分析中,文本中地名、人名這些詞應該占有更小的權重,而情感類詞匯應該享有更大的權重。

所以在合並這些輸出向量時,希望可以將注意力集中在那些對當前任務更重要的向量上。也就是給他們都分配一個權值,將所有的輸出向量加權平均。假設輸出向量為htht,權值為αtαt,則合並后的表示為

 

 
s=tαthts=∑tαtht

 

上文所說的為BIRNN的每個輸出向量分配不同權值,使得模型可以將注意力集中在重點幾個詞,降低其他無關詞的作用的機制就是Attention機制。使用了Attention機制可以使得文本表示的結果在當前的任務中更合理。

使用Attention的兩個好處:

  1. 可以更好的表征文本,使訓練出的模型具有更好的表現(更高的精度)。
  2. 為模型提供了更好的解釋性,如直觀的看出在文本分類中哪些詞或句子更重要, 如果訓練出的模型不理想,根據這些權值分析badcase也非常方便。

這里寫圖片描述

Hierarchical Attention Networks for Document Classification 這篇論文中提到他們的模型可以學習到詞的上下文信息,並且分配與上下文相關的詞的權重。我覺得這並不是由於Attention這個機制的作用,而是RNN本身就具有這個能力。

二、Attention 原理

上文說到需要給BIRNN的每個輸出分配權重,如何分配就是Attention的原理,用一張結構圖加三個公式應該就可以解釋清楚了。

這里寫圖片描述

 

 
ut=tanh(Wwht+bw)(1)(1)ut=tanh⁡(Wwht+bw)

 

 
αt=exp(uTtuw)texp(uTtuw)(2)(2)αt=exp⁡(utTuw)∑texp⁡(utTuw)

 

 
s=tαtht(3)(3)s=∑tαtht

 

公式(1)中的WwWw與bwbw為Attention的權重與bias,在實現的時候也要設置attention的size,不過也可以簡單的令它們等於BIRNN的輸出向量的size。

公式(2)中的uwuw也是需要設置的權重,公式(2)其實也就是對所有uTtuwutTuw結果的softmax。

公式(3)即是將計算出的αtαt 作為各時刻輸出的權值,對它們加權求和表示為一個向量。

三、代碼實現

代碼中的BIRNN使用的是LSTM(層次Attention網絡那篇論文使用的是GRU)

代碼放在github了,里面注釋寫了很多,這里就不重復了。代碼是使用tensorflow 1.0.0實現的。

model.py


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM