論文筆記 | NIPS2017 | Attention Is All You Need

transformer-title.png

論文地址:https://arxiv.org/abs/1706.03762

官方代碼:https://github.com/tensorflow/tensor2tensor

第三方代碼:https://github.com/Kyubyong/transformer

一 為什么讀這篇

本文名字起的十分霸氣凿将,又稱作變形金剛(transformer)剩晴,其實(shí)這篇文章早就收入zotero了,光看名字就知道要做attention相關(guān)的東西本文是繞不開(kāi)的衷敌,正好最近的工作有用到self-attention,其實(shí)就是基于本文的工作毕籽,初看項(xiàng)目代碼時(shí)一臉懵逼脐供,惡補(bǔ)了下相關(guān)知識(shí),各種各樣的解讀讲坎,現(xiàn)在通過(guò)閱讀原作來(lái)進(jìn)一步加深理解孕惜,提高煉丹效率。晨炕。

二 截止閱讀時(shí)這篇論文的引用次數(shù)

2019.6.20 2136次衫画。當(dāng)然比不過(guò)CV,不過(guò)也相當(dāng)高了瓮栗,自從看推薦相關(guān)的論文削罩,就沒(méi)見(jiàn)過(guò)引用上千的,這篇引用高可能也跟NLP有關(guān)费奸。

三 相關(guān)背景介紹

中了17年的NIPS弥激,同年6月掛到arXiv上。本篇出來(lái)后最先開(kāi)始在機(jī)器翻譯領(lǐng)域炸了愿阐,后來(lái)被各種花式引入解決其他領(lǐng)域的問(wèn)題微服。

又是google出品,總共8個(gè)作者换况,有Google Brain的职辨,也有Google Research的。文中特意注明戈二,8個(gè)作者貢獻(xiàn)是一樣的舒裤。。排名是隨機(jī)排的觉吭。腾供。這也行,神操作。其中隨機(jī)排列的一作Ashish Vaswani小哥來(lái)自印度伴鳖,在南加州大學(xué)碩博總共讀了10年节值。。還算高產(chǎn)榜聂,發(fā)了不少paper搞疗。

四 關(guān)鍵詞

transformer

self-attention

multi-head attention

五 論文的主要貢獻(xiàn)

1 提出Transformer架構(gòu),只用Attention须肆,而不用CNN和RNN來(lái)解決時(shí)間序列問(wèn)題

2 提出Self-Attention匿乃,Multi-head Attention

六 詳細(xì)解讀

0 摘要

一上來(lái)先批判一下CNN和RNN,稱其復(fù)雜豌汇。提出的新架構(gòu)Transformer僅基于attention機(jī)制幢炸,完全避免了遞歸和卷積。在效果很好的同時(shí)還能做到并行化拒贱,并且訓(xùn)練時(shí)間更少宛徊。在WMT2014的各個(gè)數(shù)據(jù)集上取得了SOTA。

1 介紹

基于RNN的模型已經(jīng)在序列問(wèn)題上取得了SOTA的效果逻澳,不過(guò)因?yàn)槠涔逃械倪f歸屬性闸天,其阻止了并行訓(xùn)練,并且長(zhǎng)序列也是受限的赡盘。Attention機(jī)制已成為各種任務(wù)中序列建模和轉(zhuǎn)換模型的重要組成部分号枕,它可以在不考慮輸入或輸出序列中的距離時(shí)對(duì)依賴關(guān)系進(jìn)行建模。但是幾乎所有的attention都是用來(lái)連接RNN的陨享。

Transformer在8卡的P100上訓(xùn)練12個(gè)小時(shí)葱淳。

2 背景

基于CNN的模型可以并行化,不過(guò)使得學(xué)習(xí)遠(yuǎn)距離位置之間的依賴性變得更加困難抛姑。Transformer將這個(gè)運(yùn)算減少到常數(shù)級(jí)赞厕。另外由于平均注意力加權(quán)位置導(dǎo)致有效分辨率降低,3.2節(jié)提出的Multi-Head Attention來(lái)解決這個(gè)問(wèn)題定硝。

Self-attention皿桑,有時(shí)也稱為intra-attention,其關(guān)聯(lián)單個(gè)序列的不同位置以計(jì)算序列的表示蔬啡。

端到端記憶網(wǎng)絡(luò)基于遞歸注意機(jī)制诲侮,而不是序列對(duì)齊遞歸,在簡(jiǎn)單的問(wèn)答模型中表現(xiàn)良好箱蟆。

Transformer是第一個(gè)只依賴self-attention沟绪,而不依賴序列對(duì)齊RNN或卷積來(lái)計(jì)算輸入輸出序列表示。

3 模型架構(gòu)

transformer-fig1.jpg

3.1 編碼器和解碼器堆疊

編碼器

編碼器由N=6個(gè)相同的層堆疊而成空猜。每個(gè)層有2個(gè)子層绽慈,第一個(gè)是multi-head self-attention恨旱,第二個(gè)是簡(jiǎn)單的,position-wise的全連接前饋網(wǎng)絡(luò)坝疼。在兩個(gè)子層之間用殘差連接搜贤,并接上layer normalization,即\text { LayerNorm }(x+\text { Sublayer }(x))钝凶,embedding層及所有子層的輸出維度為d_{\text { model }}=512

解碼器

編碼器也是由N=6個(gè)相同的層堆疊而成仪芒。此外解碼器還插入第三個(gè)子層,用于在編碼器上的輸出上執(zhí)行multi-head attention耕陷。注意這里的是Masked Multi-head Attention桌硫,主要是避免偷看到未來(lái)信息。

3.2 Attention

attention函數(shù)可以認(rèn)為是一個(gè)query和一組key-value對(duì)到輸出的映射啃炸,其中,query卓舵,keys南用,values和輸出都是vectors。輸出為values的加權(quán)和掏湾,其中分配給每個(gè)value的權(quán)重由query與對(duì)應(yīng)key通過(guò)函數(shù)計(jì)算得到裹虫。

3.2.1 Scaled Dot-Product Attention
transformer-fig2.jpg

query和key的維度為d_{k},value的維度為d_{v}融击,計(jì)算query和所有key的點(diǎn)積筑公,之后除\sqrt{d_{k}},通過(guò)softmax函數(shù)的應(yīng)用來(lái)得到value的權(quán)重尊浪。公式如下:
\text { Attention }(Q, K, V)=\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) V
加法attention和點(diǎn)積(乘法)attention是最常見(jiàn)的兩種attention函數(shù)匣屡,本文在點(diǎn)積attention的基礎(chǔ)上使用了縮放因子\frac{1}{\sqrt{d_{k}}}

雖然對(duì)于值較小的d_{k}拇涤,兩種機(jī)制的表現(xiàn)類似捣作,但是對(duì)于值較大的d_{k},加法attention優(yōu)于沒(méi)有縮放的點(diǎn)積attention鹅士。本文懷疑對(duì)于大的d_{k}券躁,點(diǎn)積大幅增加,將softmax函數(shù)推向具有極小梯度的區(qū)域掉盅,因此通過(guò)\frac{1}{\sqrt{d_{k}}}來(lái)縮放點(diǎn)積也拜。

3.2.2 Multi-Head Attention

如圖2-右所示。

Multi-head attention可以讓模型共同關(guān)注來(lái)自不同位置的不同表示子空間的信息趾痘。
\text { MultiHead }(Q, K, V)=\text { Concat }\left(\text { head }_{1}, \ldots, \text { head }_{\mathrm{h}}\right) W^{O} \\ \text { where }\text head_{i} = { Attention }\left(Q W_{i}^{Q}, K W_{i}^{K}, V W_{i}^{V}\right)
本文用h=8作為并行attention層慢哈,對(duì)于每一個(gè)使用d_{k}=d_{v}=d_{\text { model }} / h=64

3.2.3 Attention在Transformer中的應(yīng)用

Transformer用三種不同的方式來(lái)使用multi-head attention

  1. 在編解碼attention層扼脐,query來(lái)自前一個(gè)解碼層岸军,記憶key和value是來(lái)自編碼層的輸出奋刽。這可以使解碼器的每個(gè)位置都參與輸入序列中的所有位置。
  2. 編碼器包含self-attention層艰赞。其中所有key佣谐,value和query都是來(lái)自相同的空間,在這種情況下方妖,也就是上一層的輸出狭魂。編碼器中的每個(gè)位置都可以處理編碼器前一層中的所有位置。
  3. 類似的党觅,解碼器中的self-attention也可以使每個(gè)位置處理解碼器前一層的所有位置雌澄。需要防止解碼器中的信息向左流動(dòng)以保持自回歸屬性,可以通過(guò)mask來(lái)實(shí)現(xiàn)(設(shè)置為-\infty)

3.3 Position-wise前饋網(wǎng)絡(luò)

\operatorname{FFN}(x)=\max \left(0, x W_{1}+b_{1}\right) W_{2}+b_{2}

輸入和輸出的維度為d_{\text { model }}=512杯瞻,層內(nèi)部的維度為d_{f f}=2048

3.4 Embedding和Softmax

常規(guī)操作镐牺,但是給embedding層的權(quán)重乘了一個(gè)\sqrt{d_{\text { model }}}

3.5 位置編碼

因?yàn)楸疚哪P图葲](méi)有rnn也沒(méi)有cnn,為了讓模型利用到序列的順序魁莉,必須注入一些關(guān)于序列相對(duì)或絕對(duì)位置的信息睬涧。所以使用和embedding相同維度的位置編碼,兩者融合相加旗唁。本文使用sin和cos函數(shù):
P E_{(p o s, 2 i)}=\sin \left(p o s / 10000^{2 i / d_{\text { model }}}\right) \\ P E_{(\text {pos}, 2 i+1)}=\cos \left(\operatorname{pos} / 10000^{2 i / d_{\text { model }}}\right)
其中pos是位置畦浓,i是維度。

本文發(fā)現(xiàn)用這個(gè)函數(shù)和用學(xué)習(xí)到的位置embedding效果差不多检疫。

4 Why Self-Attention

使用self-attention基于三個(gè)需求讶请。

  1. 每層總的計(jì)算復(fù)雜度
  2. 可以并行化的計(jì)算量,通過(guò)所需的最小順序操作數(shù)來(lái)衡量
  3. 網(wǎng)絡(luò)中長(zhǎng)距離依賴之間的路徑長(zhǎng)度
transformer-table1.jpg

如表1所示屎媳,self-attention層用常數(shù)級(jí)序列運(yùn)算連接所有的位置夺溢。而遞歸層需要O(n)的序列運(yùn)算。除此之外剿牺,self-attention得到的模型有更好的解釋性企垦。

5 訓(xùn)練

5.1 訓(xùn)練數(shù)據(jù)和批次

在有450w句子對(duì)的WMT 2014英語(yǔ)-德語(yǔ)數(shù)據(jù)集上訓(xùn)練,大約有37000個(gè)token晒来。對(duì)于英語(yǔ)-法語(yǔ)數(shù)據(jù)集钞诡,有3600w句子對(duì),劃分為32000個(gè)token湃崩。

5.2 硬件和進(jìn)度

8卡的P100荧降。沒(méi)一步大約0.4秒。base模型大約10w步攒读,耗時(shí)12小時(shí)朵诫。大模型每步1秒,訓(xùn)練30w步薄扁,耗時(shí)3.5天剪返。

5.3 優(yōu)化器

用Adam废累,\beta_{1}=0.9\beta_{2}=0.98脱盲,\epsilon=10^{-9}邑滨,學(xué)習(xí)率變化公式如下:
\text {lrate}=d_{\text { model }}^{-0.5} \cdot \min \left(\text {step}_{-} n u m^{-0.5}, \text { step_num } \cdot \text { warmup_steps }^{-1.5}\right)
其中\text {warmup}_{-} \text {steps}=4000

5.4 正則化

用了3種類型的正則化???

Residual Dropout

在每一個(gè)子層輸出后加dropout,以及embedding后加钱反。用P_{d r o p}=0.1

Label Smoothing

\epsilon_{l s}=0.1掖看,效果有提升

6 結(jié)果

6.1 機(jī)器翻譯

transformer-table2.png

注意這里為了達(dá)到更好的效果,用了融合最后幾個(gè)checkpoint的trick面哥。

6.2 模型變種

transformer-table3.png

第A行說(shuō)明head太少哎壳,太多都不行。

第B行說(shuō)明d_{k}減少效果變差尚卫。

第C行和第D行說(shuō)明模型越大越好归榕,同時(shí)dropout可以抑制過(guò)擬合。

第E行說(shuō)明用正弦positional embedding和學(xué)習(xí)得到的positional embedding效果差不多吱涉。

6.3 英語(yǔ)成分句法分析

這一節(jié)是證明Transformer在其他任務(wù)上的泛化能力蹲坷。

transformer-table4.png

七 小結(jié)

非常有影響力的一篇paper,后續(xù)與NLP邑飒,時(shí)間序列有關(guān)的問(wèn)題都繞不開(kāi)本文了,據(jù)說(shuō)BERT也重度依賴了本文提出的模型結(jié)構(gòu)级乐。另外文章的名字也非常霸氣疙咸,這個(gè)對(duì)傳播也是很有幫助滴。

素質(zhì)四連

要解決什么問(wèn)題

進(jìn)一步提升機(jī)器翻譯的效果风科,突破RNN的限制

用了什么方法解決

完全用Attention機(jī)制撒轮,沒(méi)有用RNN和CNN。并提出self-attention和multi-head attention

效果如何

17年的各種刷榜贼穆,當(dāng)年的SOTA题山。

還存在什么問(wèn)題

總感覺(jué)位置編碼embedding那里有點(diǎn)可以,后續(xù)會(huì)有改進(jìn)

算法背后的模式和原理

multi-head attention有點(diǎn)類似CNN的一些玩法(分分合合)故痊。self-attention的提法非常好顶瞳,充分利用了全局信息。

八 補(bǔ)充

google官方翻譯版?

The Illustrated Transformer 這篇必看

《Attention is All You Need》淺讀(簡(jiǎn)介+代碼) 蘇神的大作愕秫,同樣值得一看

一步步解析Attention is All You Need慨菱!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市戴甩,隨后出現(xiàn)的幾起案子符喝,更是在濱河造成了極大的恐慌,老刑警劉巖甜孤,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件协饲,死亡現(xiàn)場(chǎng)離奇詭異畏腕,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)茉稠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門描馅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人战惊,你說(shuō)我怎么就攤上這事流昏。” “怎么了吞获?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵况凉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我各拷,道長(zhǎng)刁绒,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任烤黍,我火速辦了婚禮知市,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘速蕊。我一直安慰自己嫂丙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布规哲。 她就那樣靜靜地躺著跟啤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪唉锌。 梳的紋絲不亂的頭發(fā)上隅肥,一...
    開(kāi)封第一講書(shū)人閱讀 49,850評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音袄简,去河邊找鬼腥放。 笑死,一個(gè)胖子當(dāng)著我的面吹牛绿语,可吹牛的內(nèi)容都是我干的秃症。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼吕粹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼伍纫!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起昂芜,我...
    開(kāi)封第一講書(shū)人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤莹规,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后泌神,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體良漱,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舞虱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了母市。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矾兜。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖患久,靈堂內(nèi)的尸體忽然破棺而出胡本,到底是詐尸還是另有隱情共啃,我是刑警寧澤诅挑,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布夫嗓,位于F島的核電站,受9級(jí)特大地震影響篙挽,放射性物質(zhì)發(fā)生泄漏荆萤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一铣卡、第九天 我趴在偏房一處隱蔽的房頂上張望链韭。 院中可真熱鬧,春花似錦煮落、人聲如沸敞峭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)儡陨。三九已至,卻和暖如春量淌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嫌褪。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工呀枢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人笼痛。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓裙秋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親缨伊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子摘刑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容