Transformer論文逐段精讀【論文精讀】筆記 - 嗶哩嗶哩 (bilibili.com)
Transformer論文逐段精讀【論文精讀】_嗶哩嗶哩_bilibili
1. 標(biāo)題 + 作者(title & author)
8位作者都帶了星號(hào),貢獻(xiàn)是一樣的哦。
文章末尾有說明,每位作者的分工。
200頁綜述(來自評(píng)論區(qū): https://arxiv.org/pdf/2108.07258.pdf )建議將Transformer作為基礎(chǔ)模型。
2. 摘要(abstract)
在主流的序列轉(zhuǎn)錄模型一般是依賴復(fù)雜的RNN或者CNN,一般使用encoder和decoder的架構(gòu)。【注:所謂序列轉(zhuǎn)錄模型就是說給定一個(gè)序列生成另外一個(gè)序列。比如機(jī)器翻譯】。在性能最好的這些模型中,通常也會(huì)在endoer和decoder之間架設(shè)注意力機(jī)制。本文提出了一個(gè)新的簡(jiǎn)單的架構(gòu),transformer,僅僅依賴于注意力機(jī)制,沒有使用RNN或者CNN?!局耙话愣家詎ovel的架構(gòu)為佳,漸漸地變成simple為佳】做了機(jī)器翻譯的實(shí)驗(yàn),性能上表現(xiàn)非常,并行性更好,訓(xùn)練時(shí)間更短,更好的BLEU分?jǐn)?shù)。transofrmer任務(wù)還可以泛化到其他領(lǐng)域上。
3. 結(jié)論(conclusion)
transformer,第一個(gè)僅僅使用注意力機(jī)制的序列轉(zhuǎn)錄模型。在encoder-decoder使用了多頭注意力機(jī)制替換了RNN層。transformer架構(gòu),訓(xùn)練更快更強(qiáng),此架構(gòu)應(yīng)該不止可以用在文本上,圖片,視頻都可以推廣使用。
代碼放在https://github.com/tensorflow/tensor2tensor
4. 導(dǎo)言(introduction)
[基本是摘要前半部分的擴(kuò)充]
第一段:在時(shí)序模型中主流的是LSTM/RNN,當(dāng)輸出結(jié)構(gòu)化信息比較多的時(shí)候,還會(huì)使用編碼器-解碼器架構(gòu)。
第二段:
-
RNN的特點(diǎn)(缺點(diǎn))
在RNN中,給定一個(gè)序列,其計(jì)算方式是把序列從左往右移動(dòng),一步一步往前走,假設(shè)是個(gè)句子的話,就是一個(gè)一個(gè)詞的看,對(duì)第t個(gè)詞,RNN會(huì)計(jì)算一個(gè)輸出,也稱為隱藏狀態(tài),
是有前面一個(gè)詞的隱藏狀態(tài)
和當(dāng)前第t個(gè)詞本身決定的。即可將前面學(xué)到的歷史信息,通過
放到當(dāng)下和當(dāng)前的詞做一些計(jì)算后輸出。RNN就是通過這種機(jī)制有效處理時(shí)序信息,把之前的信息全部放在隱藏狀態(tài)里,依次往后進(jìn)行。但是RNN的問題也出現(xiàn)在這里,1.RNN是時(shí)序即一個(gè)一個(gè)地執(zhí)行計(jì)算,難以并行,即計(jì)算
的時(shí)候,必須保證前面的
輸入完成了。無法并行,計(jì)算性能比較差。2.歷史信息是一步一步地往后傳遞,如果時(shí)序(步數(shù))比較長(zhǎng),早期的歷史信息會(huì)丟掉,如果不想丟掉,就需要
比較大,但是
比較大,每個(gè)步驟都存儲(chǔ),內(nèi)存開銷會(huì)很大。當(dāng)然后續(xù)做了很多改進(jìn),但是并沒有改變基本問題。
第三段:attention在RNN上的應(yīng)用。主要是用在如何把編碼器的東西很有效地傳輸給解碼器。
最后一段:全新的使用注意力機(jī)制transformer,可以并行計(jì)算,更少的資源和時(shí)間即可訓(xùn)練。
5. 相關(guān)工作(background)
第一段:如何使用CNN替換RNN來減少時(shí)序的計(jì)算。CNN用在時(shí)序存在的問題:卷積神經(jīng)網(wǎng)絡(luò)無法對(duì)較長(zhǎng)的序列進(jìn)行建模。(這是因?yàn)镃NN計(jì)算的時(shí)候,每一次看一個(gè)一個(gè)比較小的窗口,比如3×3的像素塊,如果兩個(gè)像素離得比較遠(yuǎn),那么需要很多層卷積,一層一層上去才能夠最后把這兩個(gè)隔得遠(yuǎn)的像素給融合起來。),
??如果使用transformer的注意力機(jī)制,每次可以看到所有的像素,所以一層就可以把整個(gè)序列全部看到,就沒有這個(gè)問題。但是CNN還有個(gè)優(yōu)點(diǎn)是,CNN可以做多個(gè)輸出通道,一個(gè)輸出通道去識(shí)別不一樣的模式,transformer使用Multi_Head Attention來模擬這種多輸出通道的效果
第后續(xù)段落:關(guān)鍵點(diǎn):自注意力機(jī)制。自注意力機(jī)制并不是本文提出,但是transformer是第一個(gè)僅僅靠自注意力機(jī)制的encoder-decoder架構(gòu)模型。
講清楚相關(guān)的工作有哪些,區(qū)別與聯(lián)系是什么。
6. 模型(Model Architecture)【chapter 3】
深度神經(jīng)網(wǎng)絡(luò)的論文最重要的一章。
第一段: 序列模型中現(xiàn)在比較好的是編碼器-解碼器架構(gòu)。(接下來解釋什么是encoder,decoder)編碼器:將一個(gè)長(zhǎng)為的
的東西(假設(shè)是一個(gè)句子的話,有n個(gè)詞,
就表示第
個(gè)詞),編碼器會(huì)將此序列表示為(輸出)一個(gè)長(zhǎng)度也是
的
,
對(duì)應(yīng)的是
的一個(gè)向量表示(如果是個(gè)句子,那么
就表示第
個(gè)詞的向量表示)。解碼器:拿到編碼器的輸出,生成一個(gè)長(zhǎng)為
的序列,注意:
和
是可以不一樣的,解碼器和編碼器不一樣在于,在解碼器中,詞是一個(gè)一個(gè)生成的。編碼器是一次性看到整個(gè)句子。但是解碼的時(shí)候只能一個(gè)一個(gè)生成)這是一個(gè)自回歸(
)的過程(輸入又是輸出)。在最開始給定的
,生成第一個(gè)輸出
,在拿到
后可以去生成
,要生成
,可以把之前所有的
到
全部拿到,即翻譯時(shí),一個(gè)一個(gè)詞往外蹦。過去時(shí)刻的輸出可以是是當(dāng)前時(shí)刻的輸入【那么RNN也是屬于自回歸的啦?】
好的論文要有優(yōu)秀的圖示結(jié)構(gòu)。

左半邊是編碼器,右半邊是解碼器?!癷nput embedding”是編碼器輸入,比如中文翻譯英文時(shí)的中文句子embedding,“output”是解碼器之前時(shí)刻的輸出,作為此刻解碼器的輸入?!皊hifted right”一個(gè)一個(gè)往后往右移。
編碼器:N個(gè)塊堆疊,具體內(nèi)部:multi-head attention,殘差&LN,前饋神經(jīng)網(wǎng)絡(luò),殘差&LN。編碼器的輸出作為解碼器的輸入。
解碼器:其中一部分和編碼器結(jié)構(gòu)相同,但是有一塊是“Masked Multi-Head Attention”,N個(gè)這樣的塊堆疊后,進(jìn)入輸出層,softmax層輸出結(jié)果。

6.1 編碼器&解碼器
-
編碼器
由6個(gè)相同的layer組成。每個(gè)layer有兩個(gè)sub-layer:①multi-head self-attention;②position wise fully feed-forward network。 每個(gè)sub-layer都用了殘差鏈接,同時(shí)后面有LN,每個(gè)sub-layer的輸出是。殘差鏈接需要輸入和輸出是一樣大小的,如果不一樣,還需要做投影。為了簡(jiǎn)單起見,把每一個(gè)層的輸出維度變成512,固定長(zhǎng)度表示,使得模型比較簡(jiǎn)單。(這里和之前的CNN或MLP時(shí)是不一樣的,那時(shí)經(jīng)常把維度往下減,要么CNN的話是空間維度往下減且channel維度往上拉)
簡(jiǎn)單的網(wǎng)絡(luò)使得調(diào)參實(shí)際上只有兩個(gè)可調(diào),和
- LayerNorm(文章中如果用了別人的東西,最好花幾句話講一下是什么,免得還要打開鏈接去看到底是個(gè)啥)
- 通過LN和BN的對(duì)比來解釋一下什么是LN,以及變長(zhǎng)的應(yīng)用中不適用BN,而采用LN。
??紤]最簡(jiǎn)單的二維輸入情況:輸入是一個(gè)矩陣,每一行是一個(gè)樣本,每一列是一個(gè)特征(feature)。BN做的操作:把每一個(gè)列即每一個(gè)特征在一個(gè)mini-batch里的均值變?yōu)?方差變?yōu)?(減去向量本身的均值,再除以方差即可),注意訓(xùn)練時(shí)計(jì)算均值是在mini-batch里此向量算均值和方差,預(yù)測(cè)時(shí)計(jì)算所有數(shù)據(jù)全局的均值和方差,BN還會(huì)學(xué)習(xí)一個(gè)二維情況:BatchNorm VS LayerNorm,把此向量通過學(xué)習(xí)可以放成一個(gè)任意方差和均值的向量(BN和dropout在預(yù)測(cè)和訓(xùn)練時(shí)的區(qū)別)。LN做的操作:是對(duì)每一行即每一個(gè)樣本進(jìn)行均值為0,方差為1的操作,其他與BN操作一致。
RNN或transformer的輸入是三維情況,是一個(gè)序列。
三維情況下的LN和BN -
為什么RNN/transformer中使用LN?
BN切出來的結(jié)果,有效的是陰影部分,其余是 0
遇到一個(gè)超長(zhǎng)的樣本,效果可能不好
LN切出來的結(jié)果,樣本內(nèi)進(jìn)行均值方差計(jì)算
①在持續(xù)的序列模型里面,每個(gè)樣本的長(zhǎng)度可能會(huì)發(fā)生變化,比如機(jī)器翻譯,句子/單詞可長(zhǎng)可短,短的會(huì)在后面補(bǔ)零。BN是跨樣本計(jì)算同一特征的均值和方差,如果樣本的長(zhǎng)度變化非常大,那么每次的mini-batch計(jì)算得到的均值方差的抖動(dòng)可能會(huì)非常大;且預(yù)測(cè)時(shí)候是將全局的均值和方差記錄下來,那么全局的均值方差如果遇到一個(gè)很長(zhǎng)很長(zhǎng)的樣本,那么模型的表現(xiàn)很可能就不盡人意了。而LN來說,是每個(gè)樣本自己的特征來計(jì)算均值和方差,也不需要存一個(gè)全局的均值方差,故不管樣本長(zhǎng)還是短,均值都是在樣本自身里計(jì)算的,相對(duì)穩(wěn)定一些。
②另一篇文章解釋LN:從梯度歸一化等角度解釋LN的有效性,( LayerNorm是Transformer的最優(yōu)解嗎?_夕小瑤的賣萌屋-CSDN博客)
-
解碼器
同樣由個(gè)layer組成,每個(gè)layer同樣有encoder的兩個(gè)sub-layer,但是解碼器還多了第三個(gè)sub-layer,這個(gè)sub-layer同樣是多頭注意力機(jī)制+ResNet+LN,但是區(qū)別在于是“Masked-Multi-Head attention”
(前文提到,解碼器做的是自回歸的過程,即當(dāng)前時(shí)刻的輸出的輸入集是上面一些時(shí)刻的輸出,意味著在做預(yù)測(cè)時(shí)候是不可以看到當(dāng)前之后那些時(shí)刻的輸出,但是注意力機(jī)制中每次是可以看到完整的輸入的,為了避免這種情況發(fā)生,即保證解碼器訓(xùn)練時(shí),在預(yù)測(cè)第個(gè)時(shí)刻的輸出的時(shí)候其不應(yīng)該看到
時(shí)刻以后的那些輸入,
文章的做法是通過一個(gè)帶掩碼的注意力機(jī)制,保證了輸入進(jìn)來時(shí),時(shí)間是不會(huì)看到
時(shí)間以后的那些輸入,從而保證訓(xùn)練和預(yù)測(cè)時(shí)候的行為是一致的。
(這里保證訓(xùn)練和預(yù)測(cè)行為一致是怎么得到的???)
6.2 注意力機(jī)制(attention)
第一段,attention的一般化介紹。注意力函數(shù)是將Query和Key-Value對(duì)映射成一個(gè)輸出的函數(shù)。output是value的一個(gè)加權(quán)和,即輸出的維度和value的維度是一樣的。

value的權(quán)重是此value對(duì)應(yīng)的key和查詢query的相似度得來的。
6.2.1 Scaled Dot-Product Attention (3.2.1)
query和key是等長(zhǎng)的,value的長(zhǎng)度是
。計(jì)算query和key做內(nèi)積,(兩個(gè)向量做內(nèi)積,內(nèi)積越大,余弦相似度越大,如果為0則二者垂直),內(nèi)積再除以
(向量的長(zhǎng)度),再用softmax計(jì)算權(quán)重,得到n個(gè)非負(fù)的和為1的權(quán)重(假設(shè)一個(gè)query,有n個(gè)k-v對(duì))。
實(shí)際計(jì)算中,query作為一個(gè)矩陣,與k矩陣相乘,除以后進(jìn)入
,最后乘以
。

其他注意力機(jī)制:常見兩種:加型注意力機(jī)制,另一種點(diǎn)積注意力機(jī)制。點(diǎn)積注意力機(jī)制和本文的區(qū)別就在于除以了
??當(dāng)

??上圖中的
6.2.2 多頭注意力(3.2.2 Multi-Head Attention)
與其我做一個(gè)單個(gè)的注意力函數(shù),不如把整個(gè),
,
投影到低維,投影
次,然后做
次的投影函數(shù),每一個(gè)函數(shù)的輸出把它并在一起,然后再投影來會(huì)得到最終輸出。下圖演示效果:

為什么要做多頭注意力機(jī)制呢
如果我們回過頭來看dot-product的注意力的話,會(huì)發(fā)現(xiàn)里面沒有什么可以學(xué)的參數(shù),其具體函數(shù)就是內(nèi)積,但有時(shí)候?yàn)榱俗R(shí)別不一樣的那些模式,我希望你可能有一些不一樣的計(jì)算像素的辦法,如果你用的是加性attention的話,那里面其實(shí)還是有一個(gè)權(quán)重的可以用來學(xué)習(xí),也許是可以學(xué)到一些東西。但是對(duì)于點(diǎn)積attention,可以如此:先投影到低維,那么投影的是可以學(xué)的(即給模型
次機(jī)會(huì),希望其學(xué)到不一樣的投影的方法,使得在投影進(jìn)去的那個(gè)度量空間里面能夠去匹配不同模式需要的一些相似函數(shù),最后把這些東西回來,再做一次投影),跟之前說的在卷積神經(jīng)網(wǎng)絡(luò)里面有多個(gè)輸出通道的情形有些像。具體公式:

實(shí)際使用中,
6.2.3 transformer中如何使用注意力機(jī)制(Application of Attention in our Model)
- ① 編碼器中的注意力機(jī)制:
編碼器的輸入:假設(shè)句子長(zhǎng)度是的話,那么其輸入是
個(gè)長(zhǎng)為
的向量(假設(shè)
大小設(shè)置為1了)。注意力層有三個(gè)輸入(Q,K,V),但是圖中可以看到,是同一個(gè)輸入復(fù)制了三份,就是說此處的
是一個(gè)東西(故稱為自注意力機(jī)制),輸入了
個(gè)
,那么每個(gè)
會(huì)拿到一個(gè)輸出,則會(huì)有
個(gè)輸出,且輸出和長(zhǎng)度是一樣的,維度都是
,即輸入和輸出都是
,計(jì)算過程見前文。 不考慮多頭和投影的情況,輸出其實(shí)就是輸入的加權(quán)和,權(quán)重來自于本身跟各個(gè)向量的相似度。多頭和投影情況下,會(huì)學(xué)到
個(gè)不一樣的距離空間出來。輸出則和純粹的單注意力機(jī)制會(huì)不一樣。
- ② 解碼器的第一個(gè)注意力機(jī)制(下方的注意力塊)
輸入也是一樣,只是不是
而是
,主要計(jì)算過程和編碼器一樣,但是有一個(gè)
操作,只看到
以前不包括
的數(shù)據(jù),詳見前文描述。
- ③ 解碼器的第二個(gè)注意力機(jī)制。
首先輸入的不同,
和
是來自于編碼器的輸出,
是來自于解碼器下方的輸出。此時(shí)權(quán)重的計(jì)算為解碼器輸出作為的
去和編碼器的輸出作為的
去計(jì)算相似度作為權(quán)重,在和
計(jì)算得到注意力分?jǐn)?shù),即此attention做的事情是:有效的把編碼器里面輸出根據(jù)相似度給拎出來。根據(jù)解碼器的輸入不一樣,根據(jù)當(dāng)前的向量去編碼器的輸出中挑出感興趣(對(duì)應(yīng))的內(nèi)容出來。
三個(gè)attention
6.3 Position-wise Feed-Forward Networks
其實(shí)就是全連接神經(jīng)網(wǎng)絡(luò)層(MLP),但是不一樣的是,()position是指輸入序列中每個(gè)詞,即MLP對(duì)每個(gè)詞作用了一次,說白了就是MLP只是作用在最后一個(gè)維度。
注意力層的輸出為512,那么公式中的就是一個(gè)512的向量,
會(huì)把512投影成2048,即維度擴(kuò)大四倍。因?yàn)樽詈笥袀€(gè)殘差鏈接,還得投影回去,故
又把2048投影回512,說白就是個(gè)單隱層的MLP。如果用pytorch實(shí)現(xiàn),兩個(gè)線性層放在一起就可以了,不需要改任何參數(shù),因?yàn)閜ytorch的輸入是3D時(shí),其計(jì)算默認(rèn)就是在最后一個(gè)維度做計(jì)算。


attention起的作用:把整個(gè)序列里面的信息抓取出來,做一次匯聚aggregation,注意力的輸出中已經(jīng)有了序列中感興趣的內(nèi)容,信息已經(jīng)抓取到,在做投影,MLP時(shí),映射到我更想要的語義空間的時(shí)候,由于每個(gè)attention的輸出已經(jīng)包含序列信息,所以MLP對(duì)每個(gè)點(diǎn)獨(dú)立做即可。
對(duì)比RNN:RNN的輸入是向量,對(duì)于第一個(gè)點(diǎn),其實(shí)就是做了一個(gè)線性層MLP,直接出去即可,下一個(gè)點(diǎn),時(shí)序信息(綠色)上一時(shí)刻的輸出和輸入(藍(lán)色)一起并入,如此完成了歷史信息的傳遞。
二者雖有區(qū)別,但是關(guān)注點(diǎn)都是在于如何利用序列信息。
6.4 Embeddings and Softmax
embedding:輸入是一個(gè)個(gè)的詞,或者叫詞源叫token,我需要把它映射成一個(gè)向量,embedding就是說給任何一個(gè)詞,學(xué)一個(gè)一個(gè)長(zhǎng)為的向量表示它。本文中
就是512啦。
transformer的三個(gè)embedding:編碼器輸入,解碼器輸入,softmax前面的線性也需要embedding。
三個(gè)embedding權(quán)重一樣,且把權(quán)重乘以了,因?yàn)樵趯W(xué)embedding的時(shí)候,多多少少會(huì)把向量的L2 Norm學(xué)成相對(duì)比較小的,比如說1,即不管維度多大,最后的值都會(huì)等于1. 即維度一大,學(xué)到的權(quán)重值就會(huì)變小,但是之后加上的位置編碼(position encoding),位置便編碼并不會(huì)隨著長(zhǎng)度變長(zhǎng),是把long固定住的。所以權(quán)重乘以
之后,使得位置編碼和embedding相加的時(shí)候,二者具有差不多的scale,相當(dāng)于做了一個(gè)hat。【這里沒明白】
6.5 position encoding
attention并不具有時(shí)序信息,輸出是value的加權(quán)和,權(quán)重是query和key的距離,和順序(序列信息)是無關(guān)的,一句話打亂順序前后的attention值是一樣,這樣的情況在處理時(shí)序信息是有問題的。
故而,transformer在輸入中加入時(shí)序信息,即位置編碼。
(RNN是上一時(shí)刻的輸出作為下一個(gè)時(shí)刻的輸入來傳遞歷史信息)

思路:舉例:計(jì)算機(jī)表示數(shù)值,32bit二進(jìn)制,可以理解為長(zhǎng)度為32的向量表示。而transformer中,一個(gè)詞在嵌入層會(huì)表示成512的向量,同樣再使用512維的向量表示詞的位置,用周期不一樣的sin/cos函數(shù)的值算出來的。二者相加,就完成了給attention添加時(shí)序信息。
?位置編碼是cos/sin函數(shù),在+1和-1之間抖動(dòng),輸入的embedding乘以
為什么使用自注意力機(jī)制(chapter 4)

三個(gè)維度:① 復(fù)雜度;②順序的計(jì)算:下一步計(jì)算必須要等前面多少步計(jì)算完成,越不需要等,那么并行度就越高; ③ 信息從一個(gè)數(shù)據(jù)點(diǎn)到另外一個(gè)數(shù)據(jù)點(diǎn)要走多遠(yuǎn),越短越好。
- 自注意力層:① n是序列的長(zhǎng)度,d是向量的長(zhǎng)度。self-attention的矩陣運(yùn)算:query×key,q和k都是n×d維度。③矩陣計(jì)算,并行度很高,認(rèn)為O(1)
③ 任何query和任何k-v對(duì)只要一次就可以 - RNN層:① 序列長(zhǎng)為n,就一個(gè)一個(gè)做運(yùn)算,每個(gè)里面計(jì)算時(shí)d×d的矩陣再乘以n的輸入。 ② n個(gè)步驟都是一次依賴的 ③ 最初到最后,需要走過n步
- CNN層:①序列上的用的1d的卷積,k為kernel數(shù),n是序列長(zhǎng)度,d是輸入/輸出通道數(shù)。② 并行度非常高 ③ 每次一個(gè)長(zhǎng)為k的窗口,k以內(nèi)可以一次傳遞,超過k需要多層,一層一層地傳遞
- 自注意力層(受限)query只和最近的r個(gè)鄰居進(jìn)行計(jì)算,這樣復(fù)雜度就降低了(① 提升)。但是舉例比較長(zhǎng)的點(diǎn),就需要多走幾步才能完成傳遞(③犧牲)
得與失使用了attention后,對(duì)長(zhǎng)數(shù)據(jù)的處理更好,而且算的也不慢,但是實(shí)際上,由于attention對(duì)模型的假設(shè)做的更少,導(dǎo)致需要更多的數(shù)據(jù)和更大的模型才能訓(xùn)練出RNN/CNN同樣的效果。
7. 實(shí)驗(yàn)(chapter 5)
英語-德語。WMT 2014的數(shù)據(jù),使用byte-pair encoding:每個(gè)詞有各種變化形式,如果每個(gè)形式都單獨(dú)做成一個(gè)詞,他們之間的區(qū)別模型就無法獲知了,且會(huì)造成詞典太大。bpe做的是把詞的詞根提出來,詞典可以較小。并且英語和德語共享一個(gè)字典,好處:編碼器和解碼器可以使用同一種embedding,即編碼器和解碼器共享權(quán)重。
優(yōu)化器使用adma,
學(xué)習(xí)率公式計(jì)算:

正則化:每一個(gè)子層的輸出上,進(jìn)入殘差前和進(jìn)入layernorm之前,加了dropout(0.1),輸入:加上詞嵌入和位置編碼時(shí),也加了dropout(0.1)
label smoothing,將softmax的輸出為0.1時(shí),即可認(rèn)為是正確的。(置信度為0.1),這里會(huì)損失困惑度(perplexity)可理解為模型不確信度。
8. 評(píng)論
寫作非常簡(jiǎn)潔,沒有用什么寫作技巧,基本就是提出了什么模型,模型長(zhǎng)什么樣子,跟RNN/CNN比,結(jié)論是什么。不推薦這樣寫,而是:可以選擇把自己的東西減少一些,甚至把一些東西不那么重要的東西放到附錄里面,建議正文最好講個(gè)故事,為什么做這些事情,設(shè)計(jì)理念是什么樣的,整個(gè)文章的思考是什么樣子的,這樣會(huì)讓大家認(rèn)為文章比較有深度一些。
transformer架構(gòu)作為一種類似CNN的一種基礎(chǔ)架構(gòu),應(yīng)用非常廣泛,有影響力。同樣一個(gè)模型能在許多領(lǐng)域使用。transformer能夠融合多模態(tài)的數(shù)據(jù)。
attention主要在模型起了一部分作用:把整個(gè)序列的信息給聚合起來,后面的MLP,殘差是缺一不可的;attention根本沒有對(duì)序列順序建模但是效果卻比CNN/RNN效果好,現(xiàn)在認(rèn)為,attention使用了一個(gè)更廣泛的歸納偏置,使得它能處理更一般化的信息。從而使得attention并沒有做任何空間上的假設(shè),他也能夠跟CNN甚至比CNN取得更好的一些效果,但是代價(jià)是假設(shè)更一般,造成對(duì)數(shù)據(jù)的信息抓取能力變?nèi)?,所以transformer的模型都是非常大





