本此學習內(nèi)容由datawhale提供死讹,非常感謝datawhale。學習內(nèi)容
Attention相關原理
背景:Attention出現(xiàn)的原因是什么?
潛在的答案:基于循環(huán)神經(jīng)網(wǎng)絡(RNN)一類的seq2seq模型,在處理長文本時遇到了挑戰(zhàn),而對長文本中不同位置的信息進行attention有助于提升RNN的模型效果峡碉。
1. 什么是seq2seq模型?
eq2seq是一種常見的NLP模型結(jié)構(gòu)颂碘,全稱是:sequence to sequence异赫,翻譯為“序列到序列”。顧名思義:從一個文本序列得到一個新的文本序列头岔。
2. 基于RNN的seq2seq模型如何處理文本/長文本序列塔拳?
我們看到seq2seq模型里面是由encoder編碼器和decoder解碼器組成的。左邊綠色部分是輸入文本峡竣,文本通過seq2seq模型得到了一個新的文本靠抑,也就是右邊部分。
(1)編碼器的工作:
基于RNN的seq2seq模型中的編碼器在第1個時間步是如何工作:
我們只要知道适掰,我們的輸入是????hidden state#0和input#1颂碧,輸出得到了一個hidden state#1。
之后編碼器逐步得到hidden state并傳輸最后一個hidden state給解碼器类浪。
(2)編碼器的工作:
結(jié)合編碼器處理輸入序列载城,一起來看下解碼器如何一步步得到輸出序列的l。與編碼器類似费就,解碼器在每個時間步也會得到 hidden state(隱藏層狀態(tài))诉瓦,而且也需要把 hidden state(隱藏層狀態(tài))從一個時間步傳遞到下一個時間步。
編碼器首先按照時間步依次編碼每個法語單詞力细,最終將最后一個hidden state也就是context向量傳遞給解碼器睬澡,解碼器根據(jù)context向量逐步解碼得到英文輸出。
3. seq2seq模型處理文本序列(特別是長文本序列)時會遇到什么問題眠蚂?
困難:基于RNN的seq2seq模型編碼器所有信息都編碼到了一個context向量中煞聪,便是這類模型的瓶頸。一方面單個向量很難包含所有文本序列的信息逝慧,另一方面RNN遞歸地編碼文本序列使得模型在處理長文本時面臨非常大的挑戰(zhàn)(比如RNN處理到第500個單詞的時候昔脯,很難再包含1-499個單詞中的所有信息了) 。通過attention技術(shù)馋艺,seq2seq模型極大地提高了機器翻譯的質(zhì)量栅干。歸其原因是:attention注意力機制,使得seq2seq模型可以有區(qū)分度捐祠、有重點地關注輸入序列碱鳞。
4.基于RNN的seq2seq模型如何結(jié)合attention來解決問題3并提升模型效果?
注意力模型與經(jīng)典的seq2seq模型主要有2點不同:
A. 首先踱蛀,編碼器會把更多的數(shù)據(jù)傳遞給解碼器窿给。編碼器把所有時間步的 hidden state(隱藏層狀態(tài))傳遞給解碼器,而不是只傳遞最后一個 hidden state(隱藏層狀態(tài))率拒,如下面紅色圈起來部分崩泡,顯然經(jīng)典的模型只是有hidden State3。而注意力模型是有hidden State1猬膨,hidden State2角撞,hidden State3。
B. 注意力模型的解碼器在產(chǎn)生輸出之前,做了一個額外的attention處理谒所。如下圖所示热康,具體為:
1.由于編碼器中每個 hidden state(隱藏層狀態(tài))都對應到輸入句子中一個單詞,那么解碼器要查看所有接收到的編碼器的 hidden state(隱藏層狀態(tài))劣领。
2.給每個 hidden state(隱藏層狀態(tài))計算出一個分數(shù)(我們先忽略這個分數(shù)的計算過程)姐军。
3.所有hidden state(隱藏層狀態(tài))的分數(shù)經(jīng)過softmax進行歸一化。
4.將每個 hidden state(隱藏層狀態(tài))乘以所對應的分數(shù)尖淘,從而能夠讓高分對應的? hidden state(隱藏層狀態(tài))會被放大奕锌,而低分對應的? hidden state(隱藏層狀態(tài))會被縮小。
5.將所有hidden state根據(jù)對應分數(shù)進行加權(quán)求和村生,得到對應時間步的context向量
所以惊暴,attention可以簡單理解為:一種有效的加權(quán)求和技術(shù),其藝術(shù)在于如何獲得權(quán)重趁桃。
--------
現(xiàn)在缴守,讓我們把所有內(nèi)容都融合到下面的圖中,來看看結(jié)合注意力的seq2seq模型解碼器全流程镇辉,動態(tài)圖展示的是第4個時間步:
1.注意力模型的解碼器 RNN 的輸入包括:一個word embedding 向量屡穗,和一個初始化好的解碼器 hidden state,圖中是hinith_{init}hinit忽肛。
2.RNN 處理上述的 2 個輸入村砂,產(chǎn)生一個輸出和一個新的 hidden state,圖中為h4屹逛。
3.注意力的步驟:我們使用編碼器的所有 hidden state向量和 h4 向量來計算這個時間步的context向量(C4)础废。
4.我們把 h4 和 C4 拼接起來,得到一個橙色向量罕模。
5.我們把這個橙色向量輸入一個前饋神經(jīng)網(wǎng)絡(這個網(wǎng)絡是和整個模型一起訓練的)评腺。
6根據(jù)前饋神經(jīng)網(wǎng)絡的輸出向量得到輸出單詞:假設輸出序列可能的單詞有N個,那么這個前饋神經(jīng)網(wǎng)絡的輸出向量通常是N維的淑掌,每個維度的下標對應一個輸出單詞蒿讥,每個維度的數(shù)值對應的是該單詞的輸出概率。
在下一個時間步重復1-6步驟抛腕。
------------------------
transformer 相關原理
Transformer最開始提出來解決機器翻譯任務芋绸,因此可以看作是seq2seq模型的一種。
由于時間關系担敌,這里先把重要的圖放上摔敛,下次再補回。因為之前學過全封,有點印象马昙。