優(yōu)秀的博客:
【圖解什么是 Transformer(很全)】http://www.lxweimin.com/p/e7d8caa13b21
【自注意力機(jī)制Self-attention】https://www.cnblogs.com/robert-dlut/p/8638283.html
【BERT大火卻不懂Transformer】https://baijiahao.baidu.com/s?id=1622064575970777188&wfr=spider&for=pc
【寒小陽(yáng) 】https://me.csdn.net/yaoqiang2011
BERT
[https://www.cnblogs.com/rucwxb/p/10277217.html]
[https://baijiahao.baidu.com/s?id=1622064575970777188&wfr=spider&for=pc]
transformer
http://jalammar.github.io/illustrated-transformer/
Attention
SelfAttention
Multi-Attention
Transform
BERT
SelfAttention
1.Attention機(jī)制的核心在于對(duì)一個(gè)序列數(shù)據(jù)進(jìn)行聚焦,這個(gè)聚焦是通過(guò)一個(gè)概率分布來(lái)實(shí)現(xiàn)的。Attention vector實(shí)際上達(dá)到了讓B網(wǎng)絡(luò)聚焦于A網(wǎng)絡(luò)輸出的某一部分的作用。
2.根據(jù)Thinking單詞,對(duì)輸入句子的每個(gè)單詞進(jìn)行評(píng)分,這個(gè)分?jǐn)?shù)決定了對(duì)其他單詞放置多少關(guān)注度。例如 Thinking ,就用它的 q1 去乘以每個(gè)位置的 ki
3.目前在NLP研究中,key和value常常都是同一個(gè),也就是query=h1,key=value=s1,s2,s3,s4
Attention函數(shù)的本質(zhì)可以被描述為一個(gè)查詢(query)到一系列(鍵key-值value)對(duì)的映射。
在計(jì)算attention時(shí)主要分為三步,第一步是將query和每個(gè)key進(jìn)行相似度計(jì)算得到權(quán)重,常用的相似度函數(shù)有點(diǎn)積,拼接,感知機(jī)等;、
然后第二步一般是使用一個(gè)softmax函數(shù)對(duì)這些權(quán)重進(jìn)行歸一化;最后將權(quán)重和相應(yīng)的鍵值value進(jìn)行加權(quán)求和得到最后的attention。
google提出來(lái)的多頭attention的不同之處在于進(jìn)行了h次計(jì)算而不僅僅算一次,
好處是可以允許模型在不同的表示子空間里學(xué)習(xí)到相關(guān)的信息,后面還會(huì)根據(jù)attention可視化來(lái)驗(yàn)證。
token(符號(hào)):包括單詞和標(biāo)點(diǎn)
tokenization(分詞):我是中國(guó)人->['我', '是', '中國(guó)人']
corpus 語(yǔ)料庫(kù)
https://baijiahao.baidu.com/s?id=1622064575970777188&wfr=spider&for=pc
attention有兩個(gè)RNN網(wǎng)絡(luò),一個(gè)用來(lái)將接收待翻譯語(yǔ)句,對(duì)其進(jìn)行編碼,最后輸出一個(gè)vector,這個(gè)網(wǎng)絡(luò)叫encoder。
然后,該vector會(huì)作為輸入,傳給另一個(gè)RNN網(wǎng)絡(luò),該網(wǎng)絡(luò)用來(lái)根據(jù)vector產(chǎn)生目標(biāo)語(yǔ)言的翻譯語(yǔ)句,這個(gè)網(wǎng)絡(luò)叫做decoder
s1,s2,s3,s4是第一句話的四個(gè)字各自的輸出,h1是第二句話的第一個(gè)字的輸出
第一步:h1分別與s1,s2,s3,s4做點(diǎn)積,產(chǎn)生了四個(gè)數(shù),稱其為m1,m2,m3,m4(這些都是標(biāo)量,不是向量了!)
第二步:m1,m2,m3,m4 傳到一個(gè)softmax層,產(chǎn)生一個(gè)概率分布a1,a2,a3, a4。
第三步:將a1,a2,a3, a4 與s1,s2,s3,s4分別相乘,再相加,得到得到一個(gè)vector,稱其為Attention vector。
第四步:Attention vector 將作為輸入傳到B網(wǎng)絡(luò)的第二個(gè)cell中,參與預(yù)測(cè)。
以上就是Attention機(jī)制的基本思想了。我們看到,Attention vector用一個(gè)概率分布來(lái)融合了s1,s2,s3,s4的信息,
而這個(gè)概率分布又是通過(guò)B網(wǎng)絡(luò)上一個(gè)cell的hidden state與s1,s2,s3,s4進(jìn)行點(diǎn)乘得到的。
Attention vector實(shí)際上達(dá)到了讓B網(wǎng)絡(luò)聚焦于A網(wǎng)絡(luò)輸出的某一部分的作用。
Attention機(jī)制的核心在于對(duì)一個(gè)序列數(shù)據(jù)進(jìn)行聚焦,這個(gè)聚焦是通過(guò)一個(gè)概率分布來(lái)實(shí)現(xiàn)的。這種機(jī)制其實(shí)有很強(qiáng)的普適性,可以用在各個(gè)方面。
比如,根據(jù)圖片產(chǎn)生描述該圖片的文字,首先,圖片會(huì)經(jīng)過(guò)CNN進(jìn)行特征的提取,提取的數(shù)據(jù)會(huì)輸入到產(chǎn)生描述文字的RNN中,
這里,我們可以引入Attention機(jī)制,讓我們?cè)诋a(chǎn)生下一個(gè)文字時(shí),聚焦于我們正在描述的圖片部位。
假如我們用一個(gè)RNN讀入了一個(gè)句子,產(chǎn)生了h1, h2,h3,h4四個(gè)hidden state。
為了得到該句子的摘要,對(duì)每一個(gè)h計(jì)算一個(gè)分?jǐn)?shù):f=vatanh(Wh)。
四個(gè)h共產(chǎn)生了4個(gè)分?jǐn)?shù),將這四個(gè)分?jǐn)?shù)送入一個(gè)softmax層,產(chǎn)生一個(gè)概率分布: a=softmax(vatanh(Wh))
根據(jù)這個(gè)概率分布對(duì)四個(gè)h進(jìn)行加和,得到句子摘要的第一個(gè)vector: c=Ha
為了得到更多的vector,可以把上面圖中的小寫va換成一個(gè)矩陣,A=softmax(Vatanh(Wh))
a也就變成了多個(gè)概率分布組成的矩陣,每個(gè)概率分布都可以用來(lái)與h進(jìn)行加和產(chǎn)生一個(gè)vector,產(chǎn)生了摘要的多個(gè)vector:C=AH
https://www.cnblogs.com/robert-dlut/p/8638283.html
第一步:將query和每個(gè)key進(jìn)行相似度計(jì)算得到權(quán)重,常用的相似度函數(shù)有點(diǎn)積,拼接,感知機(jī)等,也就是s1,s2,s3,s4與h1點(diǎn)積;
第二步:用一個(gè)softmax函數(shù)對(duì)這些權(quán)重進(jìn)行歸一化,得到概率分布a1,a2,a3,a4;
第三步:最后將權(quán)重和相應(yīng)的鍵值value進(jìn)行加權(quán)求和得到最后的attention,即將s1,s2,s3,s4與標(biāo)量a1,a2,a3,a4加權(quán)求和;
目前在NLP研究中,key和value常常都是同一個(gè),也就是query=h1,key=value=s1,s2,s3,s4