深入理解 NLP中的attention機(jī)制

參考文檔:

這三篇足夠了。

個(gè)人理解:
為何需要attention機(jī)制?因?yàn)槲覀冃枰劳评硐乱粋€(gè)詞的時(shí)候,原來的input句子里哪些詞最相關(guān),幫助推理。因此需要輸入一個(gè)向量,該向量維度固定,且蘊(yùn)含了輸入句子的信息,且是和該輸出詞最相關(guān)的輸入詞的信息,是有側(cè)重的一個(gè)向量,不是整個(gè)輸入句子的向量。整個(gè)句子的向量就是encoder output。

image.png

上圖所示,context vector即一般公式里的c就是我們想要的這個(gè)向量,額外蘊(yùn)含了encoder詞的信息,關(guān)鍵的地方在于如何計(jì)算該c。這個(gè)c應(yīng)該是由上一個(gè)decoder的隱藏向量(圖中紅色),以及encoder的hidden向量(淡綠色)算出來的。

簡(jiǎn)單來說就是: 紅色和淡綠色向量哪個(gè)最相關(guān)性,就用哪個(gè)作為最終的c(深綠色)。更進(jìn)一步,是淡綠色向量的線性加權(quán),越相關(guān)則權(quán)重越大,權(quán)重就是這里的score。

怎么算score,即相關(guān)性?可以用MLP,或者簡(jiǎn)單的 dot product。即下圖中黃線部分。算出來的權(quán)重需要?dú)w一化,否則過大。之后就是權(quán)重和輸入向量相乘(即上圖中的普通綠色向量),累加的過程,獲得最終的輸出向量c。

decoder_hidden = [10, 5, 10]
encoder_hidden  score
---------------------
     [0, 1, 1]     15 (= 10×0 + 5×1 + 10×1, the dot product)
     [5, 0, 1]     60
     [1, 1, 0]     15
     [0, 5, 1]     35

此處說明第二 第四個(gè) hidden state更加重要,需要重點(diǎn)關(guān)注,因此最終context里的權(quán)重占比更大。

image.png

我們希望RNN中,hidden state輸出是有意義和相關(guān)性的,有表征能力,且這種attention機(jī)制被模型學(xué)習(xí)到了,假設(shè)一個(gè)翻譯的case,I love you,模型翻譯輸出了 “我”+“愛”,通過attention的機(jī)制,知道后面的詞 , 和you最相關(guān),有更大概率輸出 “你”,而非“情”。

因?yàn)樵谠瓉淼膕eq2seq里,信息都蘊(yùn)含在一個(gè)encoder的輸出向量里,若decoder只在初始處輸入一個(gè)encoder向量,則 you這個(gè)特征可能被丟失掉,從而推理錯(cuò)誤。若將encoder輸出向量輸入到每個(gè)decoder時(shí)間步里,那么該時(shí)間步的decoder也不知道輸入句子哪個(gè)詞更重要。加入了attention機(jī)制后,就解決了這些問題。decoder知道了下一個(gè)時(shí)間步中,最相關(guān)的輸入詞的特征是什么,是“you”。

https://towardsdatascience.com/attn-illustrated-attention-5ec4ad276ee3

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容