【論文筆記】Attention總結一:基於論文Neural Machine Translation by Jointly Learning to Align and Translate

0 Attention背景知識總結

encoder-decoder

這part的背景來源於這篇:https://blog.csdn.net/u012968002/article/details/78867203 這篇attention文章講解的很好。

encoder-decoder中,將輸入句子通過非線性變換轉化爲中間語義表示C,對於解碼器Decoder來說,其任務是根據句子Source的中間語義表示C和之前已經生成的歷史信息y1,y2……yi-1來生成i時刻要生成的單詞yi,則yi=g(C, y1, y2,...yi-1), 每個yi都依次這麼產生,那麼看起來就是整個系統根據輸入句子Source生成了目標句子Target。

如果Source是中文句子,Target是英文句子,那麼這就是解決機器翻譯問題的Encoder-Decoder框架;
如果Source是一篇文章,Target是概括性的幾句描述語句,那麼這是文本摘要的Encoder-Decoder框架;
如果Source是一句問句,Target是一句回答,那麼這是問答系統或者對話機器人的Encoder-Decoder框架。

在文本處理領域,Encoder-Decoder的應用領域相當廣泛。
Encoder-Decoder框架不僅僅在文本領域廣泛使用,在語音識別、圖像處理等領域也經常使用。一般而言,文本處理和語音識別的Encoder部分通常採用RNN模型,圖像處理的Encoder一般採用CNN模型。

0.1 自己拓展

0.1.1 attention分類簡述

  • soft-attention

      軟尋址,指的不像一般尋址只從存儲內容裏面找出一條內容,而是可能從每個Key地址都會取出內容,取出內容的重要性根據Query和Key的相似性來決定。
      之後對Value進行加權求和,這樣就可以取出最終的Value值,也即Attention值。
      本論文用的就是soft-attention
    
  • hard-attention

      (後面看論文了再補過來。好像比較難,因爲不能用反向傳播)
    
  • self-attention

      指的不是Target和Source之間的Attention機制,而是Source內部元素之間或者Target內部元素之間發生的Attention機制,也可以理解爲Target=Source這種特殊情況下的注意力計算機制。
      其具體計算過程是一樣的,只是計算對象發生了變化而已。
    

    Self Attention可以捕獲同一個句子中單詞之間的一些句法特徵或者語義特徵。引入Self Attention後會更容易捕獲句子中長距離的相互依賴的特徵
    但是Self Attention在計算過程中會直接將句子中任意兩個單詞的聯繫通過一個計算步驟直接聯繫起來,所以遠距離依賴特徵之間的距離被極大縮短,有利於有效地利用這些特徵。除此外,Self Attention對於增加計算的並行性也有直接幫助作用。這是爲何Self Attention逐漸被廣泛使用的主要原因。

  • coattention(日後總結補充)

  • transformer的各種attention也日後補充

0.1.2 attention的發展歷史

attention histroy
NLP中的Attention:
Attention函數的本質可以被描述爲一個查詢(query)到一系列(鍵key-值value)對的映射,如下圖。transformer就是典型的k\q\v。
其實下圖就反映了Attention機制的本質思想(這篇總結主要寫Attention機制在機器翻譯encoder-decoder上的基本思想與體現,attention機制的本質思想從encoder-decoder框架中剝離並進一步抽象,由下圖可見一斑,具體的會在下一篇attention總結裏,日後補上)
attenion5
在計算attention時主要分爲三步:

1. 第一步是將query和每個key進行相似度計算得到權重,常用的相似度函數有點積,拼接,感知機等;
2. 然後第二步一般是使用一個softmax函數對這些權重進行歸一化;
3. 最後將權重和相應的鍵值value進行加權求和得到最後的attention。目前在NLP研究中,key和value常常都是同一個,即key=value。

1 論文綜述與創新點

這篇文章用Attention機制(soft attention)來完成機器翻譯任務,算是attention機制在NLP在的第一個應用,非常具有啓發性。

傳統RNN encoder-decoder的缺點:

1. 對長句子的處理不好(梯度消失)
2. 詞對齊問題

論文打破了NMT用encoder-decoder模型的天花板——用RNN來生成一個固定長度的向量C來記錄一個句子全部信息的方式。它聯合學習對齊和翻譯,簡單來說就是它將輸入序列編碼成向量,然後當解碼翻譯的時候自適應地選擇向量的子集。這可以讓模型更好的處理長句子。

此論文中,每當生成的模型在翻譯中生成一個單詞的時候,它會(軟)搜索源句中最相關信息集中的位置,然後,該模型根據與源句位置相關的上下文向量之前產生的所有目標詞來預測目標詞。

attention關注源句子中與待輸出y的更相關的部分詞(input通過雙層RNN生成隱藏狀態h,然後存儲下來這些隱藏狀態,通過attention來關注更相關的隱層從而加權生成C)。
並且attention機制可以解決align問題(論文對對齊問題有alignment model,傳統的統計機器翻譯一般在做的過程中會專門有一個短語對齊的步驟,而注意力模型其實起的是相同的作用。)。
總體來說論文不是很難,對於學習attention機制值得入手。

1.1 attention定義關鍵

  • 一般在自然語言處理應用裏會把Attention模型看作是輸出Target句子中某個單詞和輸入Source句子每個單詞的對齊模型。這也是這篇論文的核心思想。
  • 生成target side的states時,所有context vectors 都會被當做輸入。
  • Attention的核心point是在翻譯每個目標詞(或 預測商品標題文本所屬類別)所用的上下文是不同的,這樣的考慮顯然是更合理的。
  • Attention機制對Source中元素的Value值進行加權求和
  • 這篇論文中attention的應用要求我們的task本身同時有源和目標的概念。Attention常常被定義爲目標和源的相關程度。但是還有很多task不同時具有源和目標的概念。比如document classification, 它只有原文,沒有目標語言/文章, 再比如sentiment analysis(也可以看做是最簡單的一種document classification),它也只有原文。那麼這種情況下attention如何展開呢? 這就需要一個變種的技術,叫intra-attention(或者self-attention), 顧名思義,就是原文自己內部的注意力機制。
  • 源和目標
    (1) 分類,源句和模型中定義的context vector
    (2) 有2個輸入的如QA,源和目標都有
    (3) self-attention,源和目標都是自己,這樣可以獲得一些結構信息,如指代信息

在大部分的論文中,Attention是一個權重vector(通常是softmax的輸出),其維度等於context的長度。越大的權重代表對應位置的context越重要。

以上內容來自於這篇文章,https://blog.csdn.net/fkyyly/article/details/82492433

1.3 其他

該論文的通用框架有:bi-RNN,align Model。使用的是:對齊和翻譯聯合學習的方法。
未來可以改進的地方是:對於一些生僻詞or訓練語料庫中未出現的詞如何更好的表示。這可以讓用attention機制使用在更多地方從而改進。

2 學習對齊和翻譯

通用結構組成:

  • encoder:bi-RNN
  • docoder:emulates searching through a source sentence during docoding a translation(在解碼翻譯的時候對源句的模擬搜索)

2.1 decoder:通用描述

手繪attention結構
與描述結構如下:
本論文decoder結構

Ci根據當前生成單詞而不斷變化。比如:
attention-C
其中,f2函數代表Encoder對輸入英文單詞的某種變換函數,如果Encoder是用的RNN模型的話(比如google2016年底翻譯系統用encoder和decoder都用了8層的LSTM),這個f2函數的結果往往是某個時刻輸入xi後隱層節點的狀態值;g代表Encoder根據單詞的中間表示合成整個句子中間語義表示的變換函數,一般的做法中,g函數就是對構成元素加權求和。

Tx是句子source的長度。
αij代表在Target輸出第i個單詞時Source輸入句子中第j個單詞的注意力分配係數
hj則是Source輸入句子中第j個單詞的語義編碼

這裏還提到了alignment model,我的理解就是用於計算輸入位置j和輸出位置i的匹配程度的模型,相關資料中查到score函數(這裏模型中的計算e分值的a函數)主要有以下幾種方式:

1. 點積             dot  
2. 雙線性函數       general
3. 拼接             concat
3. 隱層的MLP(感知機)(本文用這種) perceptron

這裏附上我在2篇博文裏(https://blog.csdn.net/changdejie/article/details/90782040https://www.cnblogs.com/robert-dlut/p/8638283.html) 看到的相似度函數的幾種計算方法:

3 attention score
attention
?由圖可以看出query, key, value中, query代表?key代表?value代表?見下篇attention總結

2.1.2 權重矩陣概率分佈計算

概率分佈計算
對於採用RNN的Decoder來說,在時刻i,如果要生成yi單詞,我們是可以知道Target在生成yi之前的時刻i-1時,隱層節點i-1時刻的輸出值Hi-1(論文中的Si-1)的。

我們的目的是要計算生成yi時輸入句子中的單詞“Tom”、“Chase”、“Jerry”對yi來說的注意力分配概率分佈,那麼可以用Target輸出句子i-1時刻的隱層節點狀態Hi-1(Si-1)去一一和輸入句子Source中每個單詞對應的RNN隱層節點狀態hj進行對比(之前每個hj都存儲起來了),即通過函數F(hj,Hi-1)——論文中的:eij=(si-1, hi) 來獲得目標單詞yi和每個輸入單詞對應的對齊可能性。
這個F函數在不同論文裏可能會採取不同的方法,然後函數F的輸出經過Softmax進行歸一化就得到了符合概率分佈取值區間的注意力分配概率分佈數值。
即對於每個yi,都可以得到一個關於每個source詞的相似性的概率分佈!(因爲是概率分佈,所以要歸一化)
一對多的概率分佈!目標句子生成的每個單詞對應輸入句子單詞的概率分佈可以理解爲輸入句子單詞和這個目標生成單詞的對齊概率

alignment model參數化爲一個前向神經網絡,直接計算一個軟對齊,從而這可以使用後向傳播來計算代價函數,從而得到參數,梯度可以被用來聯合訓練對齊模型和整個翻譯。

2.2 encoder:對於序列使用Bi-RNN

使用雙向RNN再concate得到hj,hj關注於xj周圍的信息,這樣hj既能總結前面的單詞又能總結後面的單詞。
註釋序列被decoder和alignment model使用,從而計算出context vecotr。

2.3 結構選擇

上面是通用結構,比如RNN模型的激活函數f、對其模型的a,都可以自由選擇。下面給出這篇文章的具體選型:

2.3.1 RNN

RNN:gated hidden unit(reset gate + update gate),激活函數用logistic sigmoid

在每一步decoder,使用單層maxout units + normalize來算output probabilities

2.3.2 Alignment Model

對齊模型需要考慮到 模型對於長度爲Tx和Ty的句子對需要計算Tx * Ty的次,爲了減少計算量,使用MLP多層感知機。多層感知機中的權重是學習來的。

3 實驗

  • 數據集:concatenate news-test-
    2012
    and news-test-2013 to make a development (validation) set, and evaluate the models on the test
    set (news-test-2014) from WMT ’14, which consists of 3003 sentences not present in the training
    data.
    we use a shortlist of 30,000 most frequent words in each language to
    train our models. Any word not included in the shortlist is mapped to a special token ([UNK]).

  • 模型:訓練的RNNsearch-30\ RNNsearch-50模型表現:

    • RNNsearch的前向和後向RNN有1000個hidden units, 帶single maxout hidden layer的multilayer network來計算each target word的conditional probability.
    • SGD + Adadelta來訓練模型,minibach是80個句子,訓練了5天
    • 模型訓練好後用beam search來尋找最大可能的翻譯

4 結果

4.1 結果圖

評估:BLEU socre
attenion BLEU score
This is done by visualizing the annotation
weights. From this we see which positions in the source sentence were considered more important when generating the target word.
RNNsearch-30 and RNNsearch-50 are more robust to the length of the sentences.RNNsearch-50, especially, shows no performance deterioration even with sentences of length 50 or more.

4.2 結果分析

4.2.1 Alignment

相比起hard-alignment,soft-alignment對翻譯會更有用。因爲Our soft-alignment solves this issue naturally by letting the model look at both [the] and [man].
soft-alignment好處:

1.關注多個part從而找出正確翻譯
2.處理不同長度的句子

5 總結

拓展了基礎的encoder-decoder,讓模型(soft-)search for a set of input words, or their annotations computed by an encoder, when generating target word.
That lets the model focus only on information relevant to the generation of the next target word. the model can correctly align each target word with the relevant words, or their annotations.

未來的挑戰:

  • 更好的處理unknown or rare words

    需要模型model to be 更widely used, to match the performance of current state-of-the-art machine translation systems in all contexts.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章