博客專欄

EEPW首頁(yè) > 博客 > Transformer的細(xì)節(jié)到底是怎么樣的?Transformer 18問?。?)

Transformer的細(xì)節(jié)到底是怎么樣的?Transformer 18問?。?)

發(fā)布人:數(shù)據(jù)派THU 時(shí)間:2023-07-19 來源:工程師 發(fā)布文章
10. 什么是Self attention?

10.1 介紹Transformer,為什么要介紹self Attention呢?因?yàn)樵赥ransformer中最多的multi head attention和Mask multi head attention來自Scaled dot product attention,而scaled dot product attention來自self attention,如圖15所示。

10.2 什么是self attention呢?self attention和local attention、stride attention都是attention的一種;self attention是每一個(gè)Q與每一個(gè)K依次計(jì)算注意力系數(shù),如圖18所示,而像local attention是Q只與相鄰的K計(jì)算注意力系數(shù),stride attention是Q通過跳連的方式與K計(jì)算注意力系數(shù)。

圖18 從左至右依次為:self attention、local attention、stride attention

10.3 Self attention為什么可以用于處理像機(jī)器翻譯這種序列數(shù)據(jù)?

輸入序列中的每一個(gè)位置的數(shù)據(jù),可以關(guān)注其他位置的信息,由此通過Attention score來提取特征或者捕獲輸入序列每一個(gè)token之間的關(guān)系。

10.4 Self attention是如何具體實(shí)現(xiàn)的? 總共分為4步,如圖19所示

圖片

圖19 Self attention的實(shí)現(xiàn)過程

11. 什么是Scaled dot product attention?

11.1 self attention最常見的有兩種,一種是dot product attention、另一種是additive attention,如圖20所示,前者的計(jì)算效率更高。

圖片

圖20 dot product attention與additive attention的區(qū)別

11.2 什么是Scaled ?

scaled的具體實(shí)現(xiàn)方式如圖21所示,這一操作的目的是為了防止內(nèi)積過大,從梯度角度考慮,避免靠近1,易訓(xùn)練;與batch normalization有一些相似的功能。

圖片

圖21 scaled操作在attention中的位置

12. 什么是Multi head attention?

12.1 Multi head attention在Transformer架構(gòu)中的位置如圖15所示。

12.2 提出背景:CNN具有多個(gè)channel,可以提取圖像不同維度的特征信息,那么Self attention是否可以有類似操作,可以提取不同距離token的多個(gè)維度信息呢?

12.3 什么是group 卷積?如圖22所示,將輸入的特征多個(gè)channel分成幾個(gè)group單獨(dú)做卷積,最后再進(jìn)行con c操作。

圖片

圖22 group卷積

12.4 Multi head attention的實(shí)現(xiàn)方式?與self attention根本不同是什么?

如圖23所示,以2個(gè)head的為例,將輸入的Q、K、V分成兩份,每一小份的Q與對(duì)應(yīng)的K、V分別操作,最后計(jì)算得到的向量再進(jìn)行conc操作,由此可以看出,Multi head attention與group卷積有著相似的實(shí)現(xiàn)方式。

圖片

圖23 Multi head attention與self attention的區(qū)別

12.5 如何從輸入輸出維度,角度來理解Multi head attention?如圖24所示。

圖片

圖24 Multi head attention的輸入輸出維度

13. 什么是Mask Multi head attention?

13.1 Mask Multi head attention在transformer架構(gòu)中的位置如圖15所示。

13.2 為什么要有Mask這種操作?

Transformer預(yù)測(cè)第T個(gè)時(shí)刻的輸出,不能看到T時(shí)刻之后的那些輸入,從而保證訓(xùn)練和預(yù)測(cè)一致。

通過 Masked 操作可以防止第 i 個(gè)單詞知道 i+1 個(gè)單詞之后的信息,如圖25所示。

圖片圖25 Mask操作在Transformer中的位置

13.3 Mask操作是如何具體實(shí)現(xiàn)的呢?

Q1只跟K1計(jì)算,Q2只跟K1、K2計(jì)算,而對(duì)于K3、K4等,在softmax之前給一個(gè)非常大的負(fù)數(shù),由此經(jīng)過softmax之后變?yōu)?,其在矩陣上的計(jì)算原理實(shí)現(xiàn)如圖26所示。

圖片

圖26 Mask操作的矩陣計(jì)算上的實(shí)現(xiàn)方式

14. 什么是ADD?

14.1 Add就是殘差連接,由2015年ResNet這篇文章發(fā)揚(yáng)光大(目前引用量已超過16萬),與Skip connection的區(qū)別在于需要大小維度全部相同。

14.2 作為大道至簡(jiǎn)想法的極致,幾乎每一個(gè)深度學(xué)習(xí)模型都會(huì)用到這個(gè)技術(shù),可以防止網(wǎng)絡(luò)退化,常用于解決多層網(wǎng)絡(luò)難訓(xùn)練的問題。

圖片

圖27 ADD在Transformer架構(gòu)中的位置(左)與殘差連接原理示意圖(右)

15. 什么是Norm?

15.1 Norm就是layer normalization。

15.2 核心作用:為了訓(xùn)練更加穩(wěn)定,和batch normalization有相同的作用,都是為了使輸入的樣本均值為零,方差為1。

15.3 為什么不使用batch normalization,使用的是layer normalization呢?因?yàn)橐粋€(gè)時(shí)序數(shù)據(jù),句子輸入長(zhǎng)度有長(zhǎng)有短,如果使用batch normalization,則很容易造成因樣本長(zhǎng)短不一造成“訓(xùn)練不穩(wěn)定”。BN是對(duì)同一個(gè)batch內(nèi)的所有數(shù)據(jù)的同一個(gè)特征數(shù)據(jù)進(jìn)行操作;而LN是對(duì)同一個(gè)樣本進(jìn)行操作。

圖片圖28 layer Normalization在Transformer架構(gòu)中的位置(左)與batch normalization的區(qū)別(右)

16. 什么是FFN?

16.1 FFN就是feed forward networks。

16.2 為什么有了Self attention層,還要有FFN?Attention已經(jīng)有了想要的序列信息特征,MLP的作用是把信息投影到特定的空間里,再做一次非線性映射,和Self attention交替使用。

16.3 結(jié)構(gòu)上:包括兩層MLP,第一層的維度為512*2048,第二層的維度為2048*512,且第二層MLP沒有使用激活函數(shù),如圖29所示。

圖片

圖29 FFN的具體實(shí)現(xiàn)過程

17. Transformer是如何訓(xùn)練出來的?

17.1 數(shù)據(jù)上,在Transformer論文中有提到,用到了4.5M和36M的翻譯句子對(duì)。

17.2 硬件上,base模型是8個(gè)P100 GPU訓(xùn)練了12個(gè)小時(shí),大模型是訓(xùn)練了3.5天。

17.3 模型參數(shù)和調(diào)參層面:

第一,可訓(xùn)練的參數(shù)包括WQ、WK、WV、WO,換包括FFN層的參數(shù)。

第二,可調(diào)的參數(shù)包括:每一個(gè)token向量表示的維度(d_model)、head的頭數(shù)、Encoder和Decoder中block重復(fù)的次數(shù)N、FFN中間層向量的維度、Label smoothing(置信度0.1)和dropout(0.1)。

18. Transformer為什么效果好?

18.1 雖然題目是Attention is all you need,但后續(xù)一些研究表明,Attention、殘差連接、layer normalization、FFN,這些因素共同成就了Transformer。

18.2 Transformer優(yōu)點(diǎn)包括:

第一,提出深度學(xué)習(xí)既MLP、CNN、RNN后的第4大特征提取器。

第二,一開始用在機(jī)器翻譯,隨著GPT和Bert徹底出圈;是一個(gè)轉(zhuǎn)折點(diǎn),在這個(gè)點(diǎn)之后,NLP領(lǐng)域快速發(fā)展,之后多模態(tài)、大模型、視覺Transformer等開始興起。

第三,給人們信心,原來CNN和RNN之后,還可以有效果更好的特征提取器。

18.3 Transformer的不足之處?

第一,計(jì)算量大,對(duì)硬件要求高。

第二,因?yàn)闊o歸納偏置,需要很多數(shù)據(jù)才可以取得很好的效果。

最后,這篇文章的參考資料基于Transformer論文、李宏毅老師的課程、李沐老師的課程、知乎上一些關(guān)于Transformer優(yōu)秀的分享,這里不一一介紹(在學(xué)習(xí)過程中沒有及時(shí)記錄Reference),如果有侵權(quán),請(qǐng)您告知,我會(huì)及時(shí)備注或修改。


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉