天天看點

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

近來研究通過RNN的Seq2Seq模型處理文本正則化(Text Normalization)時準備用到注意力機制,是以拜讀了注意力機制在自然語言處理的神經機器翻譯(以下簡稱NMT)的兩篇論文:

  • 《NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE》
  • 《Effective Approaches to Attention-based Neural Machine Translation》

首先是第一篇《NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE》,這篇論文算是在自然語言處理(NLP)中第一個使用attention機制的工作,将attention機制用到了神經網絡機器翻譯(NMT),NMT其實就是一個典型的Seq2Seq模型,也就是一個encoder to decoder模型,傳統的NMT使用兩個RNN,一個RNN對源語言進行編碼,将源語言編碼到一個固定次元的中間向量,再使用一個RNN進行解碼翻譯到目智語言:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

按照論文所述,encoder中的每個隐層單元的計算公式為:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

encoder的輸出語義編碼向量c為:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

而decoder通過将聯合機率p(y)分解成有序條件來定義翻譯y的機率:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

當計算出此處的p(y)最大時則翻譯成y的可能性最大,即此刻decoder輸出y。其中,每個條件機率p(y)的定義為:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

此處st代表的是decoder的第t個時刻輸出的狀态。

而引入注意力機制後的模型如下:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

此時,關于p(y)的定義變化如下:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

此處c變成了ci,即要輸出的第i個單詞時對應的ci向量,是以要如何計算ci向量時注意力機制實作的關鍵,但在此之前si的計算也變成了:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

由論文示意圖:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

我們可以知道ci的計算牽涉到輸入的每個單詞xj(j=1,……T),故ci計算如下:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

那麼該如何來了解ci的計算公式?論文中說了,我們可以了解将所有hj的權重總和作為計算期望的方法。 令αij為目标單詞yi與源詞xj對齊或翻譯的機率。 然後,在要輸出第i個輸出值y的時候,ci是要計算的值,αij是hj的出現機率,則ci是所有具有機率αij的hj的期望。顯然,該公式符合機率論中期望的計算公式。

其中,αij參數的計算為:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

對于a函數的形式在第二篇論文中的Score函數中有具體介紹。

該篇論文還提出了對齊模型的可視化,即對于每個翻譯出來的單詞yi,其與源句子中的單詞xi的相關比對程度可通過注意力矩陣可視化看出相關性程度:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

然後是第二篇論文《Effective Approaches to Attention-based Neural Machine Translation》,其主要貢獻在于介紹了attention在Seq2Seq模型中可以如何進行擴充,作者同樣在NMT上使用attention mechanism,提出了兩種attention機制,分别為:全局注意力機制(Global Attention)和局部注意力機制(Local Attention)。

全局注意力機制

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

其中,ht~的計算為:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

關于ct的計算與前篇論文的計算一樣,對于at的計算也與前篇論文的思想一樣,不過形式上換成了:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

該論文對于Score函數提出了3種計算方法:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

在他們最後的實驗中general的計算方法效果是較好的。在計算路徑上與前篇論文的不同是,該論文中是以ht → at → ct → h˜t為計算過程的;而前篇論文是以ht−1 → at → ct →ht為計算過程。

局部注意力機制

針對global模型要考慮輸入的每個單詞xi(i=1,……T)而導緻的計算開銷較大的缺點,作者又提出了局部注意力模型(Local Attention)

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

由論文示意圖及描述可知,此時的ct需要計算的at較少,可視為在一個固定大小的視窗内進行與global一樣的計算at值等過程,而這個視窗的大小即為确定的關鍵。論文中提出對于要生成第t個y值時,需要計算一個position值簡稱為pt,則視窗的大小為[pt-D, pt+D],其中參數D的大小根據經驗挑選。對于pt的計算有兩種方式,分别為Monotonic alignment (local-m)和Predictive alignment (local-p):

對于local-m,pt=t;

對于local-p,pt的計算公式為:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

,其中S是源句子的長度(包含單詞數),此時,計算at的公式變為:

關于注意力機制(attention mechanism)在神經機器翻譯領域的兩篇論文的了解

其中,pt是一個數字,而s是以pt為中心的視窗中的整數。對于公式的了解:計算最後的attention矩陣時,在原來的基礎上乘了一個pt位置相關的高斯分布。

最後的結果是,局部模型(local)比全局模型(global)的attention效果好。

以上是對于這兩篇論文的個人了解,感覺能夠看完論文對于自己搭建基于注意力機制的Seq2Seq模型的過程了解加深了。

參考文獻:

[1] Bahdanau, D., Cho, K. & Bengio, Y. Neural Machine Translation by Jointly Learning to Align and Translate. Iclr 2015 1–15 (2014).

[2] Luong, M. & Manning, C. D. Effective Approaches to Attention-based Neural Machine Translation. 1412–1421 (2015).

[3]robert_ai. 注意力機制(Attention Mechanism)在自然語言進行中的應用[EB/OL]. http://bi.dataguru.cn/article-10043-1.html.

繼續閱讀