寫在前面

本文是對博文《Attn: Illustrated Attention》的翻譯,有一部分是自己的理解,和原文出入不大。國內網盤鏈接

在基於神經網路的機器翻譯(NMT)出現之前,基於統計的方法一直是機器翻譯的主流方法。NMT是近些年才出現的機器翻譯方法,它通過訓練大型神經網路來讀入文本並輸出文本的翻譯。目前NMT中最流行的框架是序列到序列(seq2seq)的方法,本文將通過圖解的方法來介紹seq2seq框架以及其中的注意力機制。

在seq2seq中,有一個Encoder和一個Decoder,Encoder和Decoder都是RNN。即:把要翻譯的語言通過Encoder編碼,之後把編碼得到的向量(圖1中紅色節點)輸入Decoder解碼。

seq2seq的缺點在於Decoder從Encoder接收的唯一信息就是最後Encoder隱藏狀態( 圖1中的2個紅色節點),如果輸入文本很長,仍然使用定長向量來表示句子的信息顯然是不合理的(不可能包含所有的信息,會導致信息的有損壓縮)。

Attention的想法基礎就是在把原先輸入Decoder的定長向量,改為對Encoder的輸出向量加權和的形式,這個加權和的計算過程就叫Attention。

注意力機制可以看做是更好的聯繫Encoder和Decoder的一種方式,可以為Decoder提供來自每個Encoder隱藏狀態的信息。通過這種方法,模型能夠有選擇地關注輸入序列的有用部分,從而了解它們之間的對齊關係,有助於模型更好地處理輸入較長的句子。

定義:對齊

對齊的意思是把原始文本和對應的翻譯進行匹配(就是哪個詞對應著翻譯成哪個詞)。

注意力機制可以分為兩種。一種叫做全局注意力,就是計算注意力的時候使用Encoder所有的隱藏狀態。還有一種叫局部注意力,使用Encoder一部分隱藏狀態(目的是為了減少計算量,通常計算一個固定窗口內的部分)。本文的范討論的是全局注意力,因此本文中對「Attention」都是全局注意力。

本文採用圖解的方式來理解Attention機制,沒有繁雜的數學公式,文末還使用了3個NMT模型作為例子來展示注意力到底是怎麼用的。

注意力機制概述

通過為每個單詞分配一個權重,注意力機制能夠保證當前翻譯的單詞對原文各個單詞的關注點不同(就是對照著原文翻譯)。由於這個權重可能大於1,為了方便我們使用softmax進行歸一化,得到歸一化權重,然後計算Encoder隱藏狀態和其對應歸一化權重的加權和,得上下文向量。注意力層的實現可以分為6個步驟。

計算Encoder的隱藏狀態和Decoder的隱藏狀態

計算Encoder所有的隱藏狀態和Decoder的第一個隱藏狀態。要想輸出Decoder的第一個隱藏的狀態,需要給Decoder一個初始狀態和一個輸入,例如採用Encoder的最後一個狀態作為Decoder的初始狀態,輸入為0。

計算評分

計算Decoder的第一個隱藏狀態和Encoder所有的隱藏狀態的相關性,這裡採用點積的方式(默認兩個向量長度一樣)。後面是一個計算示例。

在上面的例子中,Encoder其中一個的隱藏狀態向量[5, 0, 1]獲得了60分的最高分數,這說明要翻譯的下一個詞將受到這個Encoder隱藏狀態很大程度的影響。

通過softmax歸一化分數

我們把得到的分數輸入到到softmax層,進行歸一化,歸一化後的分數代表的注意分配的權重 。(這裡我覺得有一點問題,文章裡面說的是進行softmax,即soft注意力,出來的應該是浮點數的概率值,但是他這裡的計算結果是採用選取評分最高的那個詞,即hard注意力,其實都可以的,但是一般soft用的比較多。)這裡我們看到除了 [5, 0, 1] 獲得1的注意力得分,所有Encoder隱藏狀態的對齊到了0。這意味著我們可以預期第一個翻譯的單詞應該與 [5, 0, 1] 嵌入的輸入單詞匹配。

將每個Encoder隱藏狀態乘以其softmax得分

通過將每個Encoder隱藏狀態與其softmaxed得分(標量)相乘,我們獲得對齊向量 。

對齊向量

把對齊向量和對應的歸一化分數相乘相加,得到上下文向量。上下文向量就是對所有對齊向量進行信息聚合。

將上下文向量輸入到Decoder中。

輸入的方式和模型有關。我們會在下面的例子中看到不同的模型是如何利用Decoder的上下文向量的。

注意力實際上如何運作?

答案:反向傳播。反向傳播會確保Decoder的輸出(翻譯的句子)和實際情況誤差逐漸減小。這實際上是通過改變RNN中的權重和得分函數來完成的。改變權重會影響Encoder隱藏狀態和Decoder隱藏狀態,進而影響注意力得分。

注意力機制的例子

在上一節中我們已經了解了seq2seq和seq2seq +注意模型,接下來會介紹3個基於seq2seq的NMT架構,來看一下具體是怎麼用的。為了比較效果,文章給出了每個模型的雙語評估研究(BLEU)分數 -用於評估生成的句子到參考句子的標準度量。

例1:Neural Machine Translation by Jointly Learning to Align and Translate

注意力機制用於機器翻譯的開篇之作。作者在《Neural Machine Translation by Jointly Learning to Align and Translate》一文中使用「對齊」一詞來表示在訓練模型時得到的注意力權重。下面是這個模型的一些關鍵點:

  • Encoder是雙向(前向+後向)門控循環單元(BiGRU)。
  • Decoder是GRU,其初始隱藏狀態來自EncoderGRU的最後隱藏狀態向量(未在下圖中示出)。
  • 注意層中的評分方法是點積加權和,下一個Decoder時間步的輸入是來自前一個Decoder時間步(粉紅色)的輸出和當前時間步(深綠色)的上下文向量之間的拼接(concat)。

作者在WMT14英語 - 法語數據集上獲得了26.75的BLEU分數。

例2: Effective Approaches to Attention-based Neural Machine Translation

這篇論文的關鍵點如下:

  • Encoder是兩層的LSTM網路。 Decoder也一樣,其初始隱藏狀態是最後Encoder隱藏狀態。
  • 他們實驗的評分函數是(i)add和concat,(ii)dot,(iii)location,和(iv)general。
  • 拼接得到的上下文向量輸入一個前饋神經網路得到的輸出(粉紅色)作為當前Decoder時間步的輸入。

在WMT』15 英語 - 法語數據集上獲得了25.9的BLEU分數 。

例3:(不講,感覺沒什麼特別的)

總結

本文內容回顧:

  • seq2seq
  • seq2seq + attention
  • seq2seq with bidirectional encoder + attention
  • seq2seq with 2-stacked encoder + attention
  • GNMT—seq2seq with 8-stacked encoder (+bidirection+residual connections) + attention

附錄:評分函數

一些常見的Attention評分函數

推薦閱讀:

相关文章