Attention機制學習(二)使用
前言
前一篇部落格簡要的介紹了一下傳統的attention機制的基本思想,
本篇部落格解讀使用attention機制做機器翻譯的第一篇論文,通過這篇論文看attention的使用方法。
論文:
NEURAL MACHINE TRANSLATION
BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
論文地址:https://arxiv.org/pdf/1409.0473.pdf
論文motivation
這篇論文的motivation,就是在說attention之前的Encoder-Decoder機器翻譯模型有一個明顯的缺點:傳統模型將源句子的所有資訊都壓縮成一個固定長度的向量,這樣做的缺點是當句子長度很長的時候,模型無法利用句子前面部分的有效資訊。換句話說,句子長了原來的技術都不好使了。
於是他們就提出了往Encoder-Decoder裡面加入Attention機制的想法,加入這種想法以後模型可以同時學習如何進行翻譯以及進行對齊。
如何進行翻譯,大家都知道是啥意思。
那如何進行對齊是啥意思呢?其實這個就是Attention機制了。
還是上文那個例子:
源句: Tom chase Jerry.
翻譯結果: 湯姆追逐傑瑞
我們可以看到,譯文結果“湯姆”實際是對齊與“Tom”的,“追逐”對齊與chase。這個對齊,並不是唯一,因為翻譯的時候肯定不是一個個對齊就能翻譯好的。它其實是更想表達:譯文“湯姆” 主要是根據“Tom”得到的,注意這裡是“主要” 是一個高權值的思想。
於是這篇論文就是通過這種 對齊 來體現它的attention.
老生常談
在Encoder-coder 模型框架裡面,encoder複製先輸入的句子的各個詞的詞向量,然後把它們壓縮成一個句向量
。如果encoder和decoder都是使用rnn的話,就可以表示成:
其中
,它是每個時間步iRNN隱藏層。
x是輸入的各個詞的詞向量
.
是非線性啟用函式。通常,人們取
,表示拿RNN的最後一個時間步的隱藏層輸出作為句向量。
然後翻譯的話就是在目標語言中,找到一個詞串,使得下面的條件概率最大:
其中
是翻譯結果,
是翻譯結果的長度。
其中使用到的條件概率公式可以巨集觀的表示為:
。g是一個勢能函式,
是上一步的輸出,
是decoder部分的rnn的隱藏層向量,而
就是輸入句子的句向量。
以上是老生常談的東西,使用一些符號來方便下面講述attention.
核心的東西來啦
注意到在翻譯的時候的,對於任意一個時間步 ,
條件概率 輸入的 是固定的。
這樣是不好的,於是作者就提出了每個時間步, 是可以不同的想法。
把條件概率改寫成: