Transformer論文逐段精讀【論文精讀】筆記 - 嗶哩嗶哩 (bilibili.com)
Transformer論文逐段精讀【論文精讀】_嗶哩嗶哩_bilibili
1. 標(biāo)題 + 作者(title & author)
8位作者都帶了星號(hào)蜈抓,貢獻(xiàn)是一樣的哦。
文章末尾有說明,每位作者的分工嬉探。
200頁(yè)綜述(來自評(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鞍盗⌒枇耍【之前一般都以novel的架構(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)揭糕。
左半邊是編碼器,右半邊是解碼器锻霎≈牵“input embedding”是編碼器輸入,比如中文翻譯英文時(shí)的中文句子embedding旋恼,“output”是解碼器之前時(shí)刻的輸出吏口,作為此刻解碼器的輸入”“shifted 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。
二維情況: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)豕迷詔ransformer的模型都是非常大