在本周大部分時(shí)間中,你都在使用這個(gè)編碼解碼的構(gòu)架(a Encoder-Decoder architecture)來完成機(jī)器翻譯。當(dāng)你使用RNN讀一個(gè)句子,于是另一個(gè)會(huì)輸出一個(gè)句子。我們要對(duì)其做一些改變,稱為注意力模型(the Attention Model),并且這會(huì)使它工作得更好。
注意力模型或者說注意力這種思想(The attention algorithm, the attention idea)已經(jīng)是深度學(xué)習(xí)中最重要的思想之一,我們看看它是怎么運(yùn)作的。
像這樣給定一個(gè)很長(zhǎng)的法語(yǔ)句子,在你的神經(jīng)網(wǎng)絡(luò)中,這個(gè)綠色的編碼器要做的就是讀整個(gè)句子,然后記憶整個(gè)句子,再在感知機(jī)中傳遞(to read in the whole sentence and then memorize the whole sentences and store it in the activations conveyed her)。
而對(duì)于這個(gè)紫色的神經(jīng)網(wǎng)絡(luò),即解碼網(wǎng)絡(luò)(the decoder network)將生成英文翻譯,Jane去年九月去了非洲,非常享受非洲文化,遇到了很多奇妙的人,她回來就嚷嚷道,她經(jīng)歷了一個(gè)多棒的旅行,并邀請(qǐng)我也一起去。
人工翻譯并不會(huì)通過讀整個(gè)法語(yǔ)句子,再記憶里面的東西,然后從零開始,機(jī)械式地翻譯成一個(gè)英語(yǔ)句子。
而人工翻譯,首先會(huì)做的可能是先翻譯出句子的部分,再看下一部分,并翻譯這一部分。看一部分,翻譯一部分,一直這樣下去。你會(huì)通過句子,一點(diǎn)一點(diǎn)地翻譯,因?yàn)橛洃浾麄€(gè)的像這樣的的句子是非常困難的。你在下面這個(gè)編碼解碼結(jié)構(gòu)中,會(huì)看到它對(duì)于短句子效果非常好,于是它會(huì)有一個(gè)相對(duì)高的Bleu分(Bleu score),但是對(duì)于長(zhǎng)句子而言,比如說大于30或者40詞的句子,它的表現(xiàn)就會(huì)變差。
Bleu評(píng)分看起來就會(huì)像是這樣,隨著單詞數(shù)量變化,短的句子會(huì)難以翻譯,因?yàn)楹茈y得到所有詞。對(duì)于長(zhǎng)的句子,效果也不好,因?yàn)樵谏窠?jīng)網(wǎng)絡(luò)中,記憶非常長(zhǎng)句子是非常困難的。在這個(gè)和下個(gè)視頻中,你會(huì)見識(shí)到注意力模型,它翻譯得很像人類,一次翻譯句子的一部分。而且有了注意力模型,機(jī)器翻譯系統(tǒng)的表現(xiàn)會(huì)像這個(gè)一樣,因?yàn)榉g只會(huì)翻譯句子的一部分,你不會(huì)看到這個(gè)有一個(gè)巨大的下傾(huge dip),這個(gè)下傾實(shí)際上衡量了神經(jīng)網(wǎng)絡(luò)記憶一個(gè)長(zhǎng)句子的能力,這是我們不希望神經(jīng)網(wǎng)絡(luò)去做的事情。在這個(gè)視頻中,我想要給你們注意力機(jī)制運(yùn)行的一些直觀的東西。然后在下個(gè)筆記中,完善細(xì)節(jié)。
注意力模型源于Dimitri, Bahdanau, Camcrun Cho, Yoshe Bengio。(Bahdanau D, Cho K, Bengio Y. Neural Machine Translation by Jointly Learning to Align and Translate[J]. Computer Science, 2014.)
雖然這個(gè)模型源于機(jī)器翻譯,但它也推廣到了其他應(yīng)用領(lǐng)域。我認(rèn)為在深度學(xué)習(xí)領(lǐng)域,這個(gè)是個(gè)非常有影響力的,非常具有開創(chuàng)性的論文。
讓我們用一個(gè)短句舉例說明一下,即使這些思想可能是應(yīng)用于更長(zhǎng)的句子。
但是用短句來舉例說明,講解這些思想會(huì)更簡(jiǎn)單。我們有一個(gè)很平常的句子:(法語(yǔ))Jane visite l'Afrique en Septembre。假定我們使用RNN,在這個(gè)情況中,我們將使用一個(gè)雙向的RNN(a bidirectional RNN),為了計(jì)算每個(gè)輸入單詞的的特征集(set of features),你必須要理解輸出^y^(<1>)到^y^(<3>)一直到^y^(<5>)的雙向RNN。
但是我們并不是只翻譯一個(gè)單詞,讓我們先去掉上面的Y,就用雙向的RNN。我們要對(duì)單詞做的就是,對(duì)于句子里的每五個(gè)單詞,計(jì)算一個(gè)句子中單詞的特征集,也有可能是周圍的詞,讓我們?cè)囋嚕捎⑽姆g。
我們將使用另一個(gè)RNN生成英文翻譯,這是我平時(shí)用的RNN記號(hào)。我不用A來表示感知機(jī)(the activation),這是為了避免和這里的感知機(jī)(the activations)混淆。
我會(huì)用另一個(gè)不同的記號(hào),我會(huì)用S來表示RNN的隱藏狀態(tài)(the hidden state in this RNN),不用A^(<1>),而是用S^(<1>)。我們希望在這個(gè)模型里第一個(gè)生成的單詞將會(huì)是Jane,為了生成Jane visits Africa in September。
于是等式就是,當(dāng)你嘗試生成第一個(gè)詞,即輸出,那么我們應(yīng)該看輸入的法語(yǔ)句子的哪個(gè)部分?似乎你應(yīng)該先看第一個(gè)單詞,或者它附近的詞。但是你別看太遠(yuǎn)了,比如說看到句尾去了。所以注意力模型就會(huì)計(jì)算注意力權(quán)重(a set of attention weights),我們將用a^(<1,1>)來表示當(dāng)你生成第一個(gè)詞時(shí)你應(yīng)該放多少注意力在這個(gè)第一塊信息處。
然后我們算第二個(gè),這個(gè)叫注意力權(quán)重,a^(<1,2>)它告訴我們當(dāng)你嘗試去計(jì)算第一個(gè)詞Jane時(shí),我們應(yīng)該花多少注意力在輸入的第二個(gè)詞上面。同理這里是a^(<1,3>),接下去也同理。這些將會(huì)告訴我們,我們應(yīng)該花多少注意力在記號(hào)為C的內(nèi)容上。
這就是RNN的一個(gè)單元,如何嘗試生成第一個(gè)詞的,這是RNN的其中一步,我們將會(huì)在下個(gè)筆記中講解細(xì)節(jié)。對(duì)于RNN的第二步,我們將有一個(gè)新的隱藏狀態(tài)S^(<2>),我們也會(huì)用一個(gè)新的注意力權(quán)值集(a new set of the attention weights),我們將用a^(<2,1>)來告訴我們什么時(shí)候生成第二個(gè)詞, 那么visits就會(huì)是第二個(gè)標(biāo)簽了(the ground trip label)。
我們應(yīng)該花多少注意力在輸入的第一個(gè)法語(yǔ)詞上。然后同理a^(<2,2>),接下去也同理,我們應(yīng)該花多少注意力在visite詞上,我們應(yīng)該花多少注意在詞l'Afique上面。當(dāng)然我們第一個(gè)生成的詞Jane也會(huì)輸入到這里,于是我們就有了需要花注意力的上下文。第二步,這也是個(gè)輸入,然后會(huì)一起生成第二個(gè)詞,這會(huì)讓我們來到第三步S^(<3>),這是輸入,我們?cè)儆猩舷挛腃,它取決于在不同的時(shí)間集(time sets),上面的a^(<3>)。這個(gè)告訴了我們我們要花注意力在不同的法語(yǔ)的輸入詞上面。 然后同理。
有些事情我還沒說清楚,但是在下個(gè)筆記中,我會(huì)講解一些細(xì)節(jié),比如如何準(zhǔn)確定義上下文,還有第三個(gè)詞的上下文,是否真的需要去注意句子中的周圍的詞。
這里要用到的公式以及如何計(jì)算這些注意力權(quán)重(these attention weights),將會(huì)在下個(gè)筆記中講解到。在下個(gè)筆記中你會(huì)看到a^(<3,t>),即當(dāng)你嘗試去生成第三個(gè)詞,應(yīng)該是l'Afique,就得到了右邊這個(gè)輸出,這個(gè)RNN步驟應(yīng)該要花注意力在t時(shí)的法語(yǔ)詞上,這取決于在t時(shí)的雙向RNN的激活值。
那么它應(yīng)該是取決于第四個(gè)激活值,它會(huì)取決于上一步的狀態(tài),它會(huì)取決于S^(<2>)。然后這些一起影響你應(yīng)該花多少注意在輸入的法語(yǔ)句子的某個(gè)詞上面。我們會(huì)在下個(gè)筆記中講解這些細(xì)節(jié)。但是直觀來想就是RNN向前進(jìn)一次生成一個(gè)詞,在每一步直到最終生成可能是<EOS>。
這些是注意力權(quán)重,即a^(<t,t>)告訴你,當(dāng)你嘗試生成第t個(gè)英文詞,它應(yīng)該花多少注意力在第t個(gè)法語(yǔ)詞上面。當(dāng)生成一個(gè)特定的英文詞時(shí),這允許它在每個(gè)時(shí)間步去看周圍詞距內(nèi)的法語(yǔ)詞要花多少注意力。
我希望這個(gè)筆記傳遞了關(guān)于注意力模型的一些直觀的東西。我們現(xiàn)在可能對(duì)算法的運(yùn)行有了大概的感覺,讓我們進(jìn)入到下個(gè)筆記中,看看具體的細(xì)節(jié)。
注意力模型參考:
聯(lián)系客服