博客專欄

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

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

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

10.1 介紹Transformer,為什么要介紹self Attention呢?因為在Transformer中最多的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是每一個Q與每一個K依次計算注意力系數(shù),如圖18所示,而像local attention是Q只與相鄰的K計算注意力系數(shù),stride attention是Q通過跳連的方式與K計算注意力系數(shù)。

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

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

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

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

圖片

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

11. 什么是Scaled dot product attention?

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

圖片

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

11.2 什么是Scaled ?

scaled的具體實現(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具有多個channel,可以提取圖像不同維度的特征信息,那么Self attention是否可以有類似操作,可以提取不同距離token的多個維度信息呢?

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

圖片

圖22 group卷積

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

如圖23所示,以2個head的為例,將輸入的Q、K、V分成兩份,每一小份的Q與對應(yīng)的K、V分別操作,最后計算得到的向量再進(jìn)行conc操作,由此可以看出,Multi head attention與group卷積有著相似的實現(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ù)測第T個時刻的輸出,不能看到T時刻之后的那些輸入,從而保證訓(xùn)練和預(yù)測一致。

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

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

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

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

圖片

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

14. 什么是ADD?

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

14.2 作為大道至簡想法的極致,幾乎每一個深度學(xué)習(xí)模型都會用到這個技術(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呢?因為一個時序數(shù)據(jù),句子輸入長度有長有短,如果使用batch normalization,則很容易造成因樣本長短不一造成“訓(xùn)練不穩(wěn)定”。BN是對同一個batch內(nèi)的所有數(shù)據(jù)的同一個特征數(shù)據(jù)進(jìn)行操作;而LN是對同一個樣本進(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的具體實現(xiàn)過程

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

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

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

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

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

第二,可調(diào)的參數(shù)包括:每一個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徹底出圈;是一個轉(zhuǎn)折點(diǎn),在這個點(diǎn)之后,NLP領(lǐng)域快速發(fā)展,之后多模態(tài)、大模型、視覺Transformer等開始興起。

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

18.3 Transformer的不足之處?

第一,計算量大,對硬件要求高。

第二,因為無歸納偏置,需要很多數(shù)據(jù)才可以取得很好的效果。

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


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



關(guān)鍵詞: AI

相關(guān)推薦

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

關(guān)閉