[參考link]
[參考link]
[參考link]
本篇屬于個(gè)人理解、意識(shí)流瞎bb贮预,不保證正確做瞪,各位看官隨便看看就好~
場(chǎng)景 | 論文 | Q、K芯勘、V關(guān)系 | 注釋 |
---|---|---|---|
問(wèn)答QA | Key-Value Memory Network |
|
|
機(jī)器翻譯 | NMT_BahdanauAttention |
|
|
Transformer_Self-Attention |
|
-1- Attention機(jī)制的本質(zhì)思想
在了解過(guò)傳統(tǒng)Attention機(jī)制中對(duì)Input Sentence和Output Sentence中各word之間的匹配prob計(jì)算、Key-Value Memory Network中對(duì)Q茂契、K蝶桶、V的定義以及Q、K匹配度的計(jì)算之后掉冶,我們自然而然地就可以對(duì)Attention機(jī)制做進(jìn)一步的抽象真竖,得到更易懂的Attention機(jī)制的本質(zhì)思想:
在傳統(tǒng)Encoder-Decoder + Attention_Model 的架構(gòu)中,如果把Output Sentence中的每個(gè)word_y看作是query厌小,把Input Sentence中的每個(gè)word_x看作是key恢共,Attention_Model計(jì)算得到的各個(gè)word_y和各個(gè)word_x之間的匹配prob,就可以被視作Key-Value Memory Network中Q和K之間的匹配度璧亚。(個(gè)人理解讨韭,不保證正確。癣蟋。透硝。)
得到匹配prob
/attention_weights
/匹配度
之后,會(huì)有一個(gè)加權(quán)求和
操作:
在傳統(tǒng)Encoder-Decoder + Attention_Model 的架構(gòu)中疯搅,就是在計(jì)算對(duì)標(biāo)的每個(gè)Context Vector
的時(shí)候濒生,是
,其中
就是上面說(shuō)的匹配度幔欧,然后就可以把
傳入Decoder計(jì)算出word_y了罪治;
在Key-Value Memory Network中,就是在計(jì)算對(duì)標(biāo)每個(gè)Question的output向量的時(shí)候琐馆,是
规阀,其中
就是上面說(shuō)的匹配度,然后就可以根據(jù)
計(jì)算出answer了瘦麸。
舉個(gè)機(jī)器翻譯
的例子谁撼,在計(jì)算Attention的過(guò)程中,Key和Value合二為一
滋饲,指向的是同一個(gè)東西厉碟,即Input Sentence中每個(gè)單詞word_x對(duì)應(yīng)的語(yǔ)義編碼,也看出這種能夠體現(xiàn)本質(zhì)思想的結(jié)構(gòu)屠缭。
當(dāng)然箍鼓,Attention從概念上仍可以被理解為從大量信息中篩選出少量重要信息的思路。篩選重要信息的過(guò)程體現(xiàn)在權(quán)重系數(shù)的計(jì)算上呵曹,權(quán)重越大越聚焦于其對(duì)應(yīng)的Value值上款咖,即權(quán)重代表了信息的重要性何暮,而Value是其對(duì)應(yīng)的信息。
-2- Attention機(jī)制的計(jì)算步驟拆解
至于Attention機(jī)制的具體計(jì)算過(guò)程主要分為:
*
根據(jù)Query和Key計(jì)算權(quán)重系數(shù)(有softmax歸一化處理)铐殃,
*
根據(jù)權(quán)重系數(shù)對(duì)Value進(jìn)行加權(quán)求和海洼。
這樣,可以將Attention的計(jì)算過(guò)程抽象為如圖10展示的三個(gè)階段富腊。
-2.1- 計(jì)算Query和Key的匹配度
在計(jì)算Query和某個(gè)Key_i的相似度or匹配度的時(shí)候坏逢,可以選用多種函數(shù)來(lái)計(jì)算,常用的計(jì)算方式有:向量點(diǎn)積赘被、向量Cosine相似性是整、再引入額外的神經(jīng)網(wǎng)絡(luò)來(lái)求值:
-2.2- 對(duì)Value加權(quán)求和
將上一步計(jì)算得到的Query和各個(gè)Key_i的匹配度與對(duì)應(yīng)Value_i進(jìn)行加權(quán)求和:
計(jì)算得到的Attention本質(zhì)上是對(duì)Value_i的加權(quán)求和民假,向量維度也和Value_i相同浮入。
通過(guò)以上兩步的計(jì)算,就可以求出對(duì)標(biāo)的
向量了阳欲。目前絕大多數(shù)的注意力機(jī)制的計(jì)算方法都可以抽象為上述步驟舵盈。
-3- Self Attention
有了以上對(duì)Attention本質(zhì)思想的梳理,Self-Attention就很好理解了球化。Self-Attention不再做Output Sentence的word_y和Input Sentence的word_x之間的匹配度計(jì)算秽晚,而是對(duì)一個(gè)Sentence中的各個(gè)詞做句子內(nèi)部的相關(guān)性計(jì)算。Self Attention的計(jì)算過(guò)程和上述的傳統(tǒng)Attention一樣筒愚,只不過(guò)計(jì)算對(duì)象只選擇一個(gè)Sentence內(nèi)部的各個(gè)word赴蝇。
一個(gè)很自然的問(wèn)題是:通過(guò)Self Attention到底學(xué)到了哪些規(guī)律或者抽取出了哪些特征呢?或者說(shuō)引入Self Attention有什么好處呢巢掺?
上面兩張圖是transformer論文里句伶,Self Attention在同一個(gè)英語(yǔ)句子內(nèi)單詞間產(chǎn)生的聯(lián)系可視化表示÷降恚可以看出考余,Self Attention可以捕獲同一個(gè)句子中單詞之間的一些句法特征
或者語(yǔ)義特征
。
可以看出轧苫,Self Attention相比RNN或LSTM楚堤,更容易捕獲句子中長(zhǎng)距離的相互依賴(lài)的特征。對(duì)于RNN或LSTM含懊,需要依次序進(jìn)行序列計(jì)算身冬,考慮到RNN結(jié)構(gòu)的健忘性,相對(duì)較遠(yuǎn)距離的相互依賴(lài)的特征難以被模型捕獲到岔乔。但是Self Attention在計(jì)算過(guò)程中會(huì)直接將句子中任意兩個(gè)單詞的聯(lián)系通過(guò)一個(gè)計(jì)算步驟直接聯(lián)系起來(lái)酥筝,所以遠(yuǎn)距離依賴(lài)特征之間的距離被極大縮短,有利于有效地利用這些特征雏门。
除此外嘿歌,Self Attention對(duì)于增加計(jì)算的并行性也有直接幫助作用掸掏。這是為何Self Attention逐漸被廣泛使用的主要原因。