Jason Brownlee博士的系列博客真的很受用哦。原文鏈接見(jiàn):Attention in Long Short-Term Memory Recurrent Neural Networks
1. 原來(lái)的Encoder–Decoder

在這個(gè)模型中,encoder只將最后一個(gè)輸出遞給了decoder,這樣一來(lái),decoder就相當(dāng)于對(duì)輸入只知道梗概意思,而無(wú)法得到更多輸入的細(xì)節(jié),比如輸入的位置信息。所以想想就知道了,如果輸入的句子比較短、意思比較簡(jiǎn)單,翻譯起來(lái)還行,長(zhǎng)了復(fù)雜了就做不好了嘛。
2. 對(duì)齊問(wèn)題
前面說(shuō)了,只給我遞來(lái)最后一個(gè)輸出,不好;但如果把每個(gè)step的輸出都傳給我,又有一個(gè)問(wèn)題了,怎么對(duì)齊?
什么是對(duì)齊?比如說(shuō)英文翻譯成中文,假設(shè)英文有10個(gè)詞,對(duì)應(yīng)的中文翻譯只有6個(gè)詞,那么就有了哪些英文詞對(duì)哪些中文詞的問(wèn)題了嘛。
傳統(tǒng)的翻譯專門有一塊是搞對(duì)齊的,是一個(gè)比較獨(dú)立的task(傳統(tǒng)的NLP基本上每一塊都是獨(dú)立的task啦)。
- attention機(jī)制

我們從輸出端,即decoder部分,倒過(guò)來(lái)一步一步看公式。
是指decoder在t時(shí)刻的狀態(tài)輸出,
是指decoder在t?1時(shí)刻的狀態(tài)輸出,
是t?1時(shí)刻的label(注意是label,不是我們輸出的y),
看下一個(gè)公式,f是一個(gè)RNN。
是指第j個(gè)輸入在encoder里的輸出,
是一個(gè)權(quán)重
這個(gè)公式跟softmax是何其相似,道理是一樣的,是為了得到條件概率P(a|e),這個(gè)a的意義是當(dāng)前這一步decoder對(duì)齊第j個(gè)輸入的程度。
最后一個(gè)公式,
這個(gè)g可以用一個(gè)小型的神經(jīng)網(wǎng)絡(luò)來(lái)逼近,它用來(lái)計(jì)算這兩者的關(guān)系分?jǐn)?shù),如果分?jǐn)?shù)大則說(shuō)明關(guān)注度較高,注意力分布就會(huì)更加集中在這個(gè)輸入單詞上,這個(gè)函數(shù)在文章Neural Machine Translation by Jointly Learning to Align and Translate(2014)中稱之為校準(zhǔn)模型(alignment model),文中提到這個(gè)函數(shù)是RNN前饋網(wǎng)絡(luò)中的一系列參數(shù),在訓(xùn)練過(guò)程會(huì)訓(xùn)練這些參數(shù), 基于Attention-Based LSTM模型的文本分類技術(shù)的研究(2016)給出了上式的右側(cè)部分作為拓展。
好了,把四個(gè)公式串起來(lái)看,這個(gè)attention機(jī)制可以總結(jié)為一句話:當(dāng)前一步輸出StSt應(yīng)該對(duì)齊哪一步輸入,主要取決于前一步輸出和這一步輸入的encoder結(jié)果
。