論文筆記:Attention is all you need

今天做完深度學(xué)習(xí)的論文分享,將這篇論文記錄下來,以便日后回顧查看梧兼。
PS:簡書不支持 MathJax 編輯公式萝挤,簡直悲傷的想哭泣御毅,之后再上傳到farbox上好啦??
論文原文:Attention is all you need

image.png

這篇論文是Google于2017年6月發(fā)布在arxiv上的一篇文章,現(xiàn)在用attention處理序列問題的論文層出不窮怜珍,本文的創(chuàng)新點(diǎn)在于拋棄了之前傳統(tǒng)的encoder-decoder模型必須結(jié)合cnn或者rnn的固有模式端蛆,只用attention,可謂大道至簡酥泛。文章的主要目的是在減少計(jì)算量和提高并行效率的同時(shí)不損害最終的實(shí)驗(yàn)結(jié)果今豆,創(chuàng)新之處在于提出了兩個(gè)新的Attention機(jī)制,分別叫做 Scaled Dot-Product Attention 和 Multi-Head Attention.

六個(gè)作者都是一作柔袁,不愧是google大佬4舳恪!捶索!

image.png

接下來從以下幾方面進(jìn)行講解插掂。
?Background
?Attention
?Transformer
?Experiments
?Conclusions

1.BACKGROUND

image.png

目前主流的處理序列問題像機(jī)器翻譯,文檔摘要,對話系統(tǒng)辅甥,QA等都是encoder和decoder框架箩祥,
編碼器:從單詞序列到句子表示
解碼器:從句子表示轉(zhuǎn)化為單詞序列分布

image.png

傳統(tǒng)的編碼器解碼器一般使用RNN,這也是在機(jī)器翻譯中最經(jīng)典的模型肆氓,但正如我們都知道的袍祖,RNN難以處理長序列的句子,無法實(shí)現(xiàn)并行谢揪,并且面臨對齊問題蕉陋。


image.png

之后這類模型的發(fā)展大多從三個(gè)方面著手:
input的方向性 - 單向或雙向
深度 - 單層或多層
類型– RNN,LSTM或GRU


image.png

但是依舊收到一些潛在問題的制約拨扶,神經(jīng)網(wǎng)絡(luò)需要能夠?qū)⒃凑Z句的所有必要信息壓縮成固定長度的向量凳鬓。這可能使得神經(jīng)網(wǎng)絡(luò)難以應(yīng)付長時(shí)間的句子,特別是那些比訓(xùn)練語料庫中的句子更長的句子患民;每個(gè)時(shí)間步的輸出需要依賴于前面時(shí)間步的輸出缩举,這使得模型沒有辦法并行,效率低匹颤;仍然面臨對齊問題仅孩。

image.png

再然后CNN由計(jì)算機(jī)視覺也被引入到deep NLP中,CNN不能直接用于處理變長的序列樣本但可以實(shí)現(xiàn)并行計(jì)算印蓖。完全基于CNN的Seq2Seq模型雖然可以并行實(shí)現(xiàn)辽慕,但非常占內(nèi)存,很多的trick赦肃,大數(shù)據(jù)量上參數(shù)調(diào)整并不容易溅蛉。

image.png

以上這些缺點(diǎn)的話就是由于無論輸入如何變化,encoder給出的都是一個(gè)固定維數(shù)的向量他宛,存在信息損失船侧;在生成文本時(shí),生成每個(gè)詞所用到的語義向量都是一樣的厅各,這顯然有些過于簡單镜撩。為了解決上面提到的問題,一種可行的方案是引入attentionmechanism讯检。
深度學(xué)習(xí)里的Attentionmodel其實(shí)模擬的是人腦的注意力模型琐鲁,舉個(gè)例子來說,當(dāng)我們觀賞一幅畫時(shí)人灼,雖然我們可以看到整幅畫的全貌,但是在我們深入仔細(xì)地觀察時(shí)顾翼,其實(shí)眼睛聚焦的就只有很小的一塊投放,這個(gè)時(shí)候人的大腦主要關(guān)注在這一小塊圖案上,也就是說這個(gè)時(shí)候人腦對整幅圖的關(guān)注并不是均衡的适贸,是有一定的權(quán)重區(qū)分的灸芳。這就是深度學(xué)習(xí)里的AttentionModel的核心思想涝桅。所謂注意力機(jī)制,就是說在生成每個(gè)詞的時(shí)候烙样,對不同的輸入詞給予不同的關(guān)注權(quán)重冯遂。我們可以看一下上面??這幅圖——通過注意力機(jī)制,我們將輸入句子編碼為一個(gè)向量序列谒获,并自適應(yīng)地選擇這些向量的一個(gè)子集蛤肌,同時(shí)對譯文進(jìn)行譯碼,例如where are you——>你在哪批狱?現(xiàn)在我們在翻譯“你”的時(shí)候給"you"更多的權(quán)重裸准,那么就可以有效的解決對齊問題。

image.png

2. ATTENTION

image.png

Neural machine translation by jointly learning to align and translate

這篇論文首先將注意力機(jī)制運(yùn)用在NLP上赔硫,提出了soft Attention Model炒俱,并將其應(yīng)用到了機(jī)器翻譯上面。其實(shí)爪膊,所謂Soft权悟,意思是在求注意力分配概率分布的時(shí)候,對于輸入句子X中任意一個(gè)單詞都給出個(gè)概率推盛,是個(gè)概率分布僵芹。加入注意力機(jī)制的模型表現(xiàn)確實(shí)更好,但也存在一定問題小槐,例如:attention mechanism通常和RNN結(jié)合使用拇派,我們都知道RNN依賴t-1的歷史信息來計(jì)算t時(shí)刻的信息,因此不能并行實(shí)現(xiàn)凿跳,計(jì)算效率比較低件豌,特別是訓(xùn)練樣本量非常大的時(shí)候。


image.png

基于CNN的Seq2Seq+attention的優(yōu)點(diǎn):基于CNN的Seq2Seq模型具有基于RNN的Seq2Seq模型捕捉long distance dependency的能力控嗜,此外茧彤,最大的優(yōu)點(diǎn)是可以并行化實(shí)現(xiàn),效率比基于RNN的Seq2Seq模型高疆栏。缺點(diǎn):計(jì)算量與觀測序列X和輸出序列Y的長度成正比曾掂。


image.png

3. Transformer

image.png

谷歌的這篇論文里提出的transformer模型拋棄了cnn,rnn壁顶,初次看有點(diǎn)一頭霧水珠洗,總結(jié)了一下迷惑的地方有三個(gè):

  • Positional embedding;(位置嵌入向量——其實(shí)類似word2vec若专,只不過處理的是位置信息罷了)许蓖。
  • multi-head attention; (多頭注意力機(jī)制——點(diǎn)乘注意力的升級(jí)版本)
  • Position-wise Feed-Forward Networks(位置全鏈接前饋網(wǎng)絡(luò)——MLP變形)
    現(xiàn)在一一分析:

multi-head attention

image.png

有兩種常用的注意力函數(shù),一種是加法注意力(additive attention),另外一種是點(diǎn)乘注意力(dot-productattention)膊爪,論文所采用的就是點(diǎn)乘注意力自阱,這種注意力機(jī)制對于加法注意力而言,更快米酬,同時(shí)更節(jié)省空間沛豌。
輸入q、k赃额、v加派,分別代表query、key-valuepair爬早。這里的 key,value, 和 query需要解釋一下哼丈,這里把a(bǔ)ttention抽象為對 value() 的每個(gè) token進(jìn)行加權(quán),而加權(quán)的weight就是 attentionweight筛严,而 attention weight 就是根據(jù) query和 key 計(jì)算得到醉旦,其意義為:為了用 value求出 query的結(jié)果, 根據(jù) query和 key 來決定注意力應(yīng)該放在value的哪部分。以前的 attention是用 LSTM 做 encoder桨啃,也就是用它來生成key 和 value车胡,然后由 decoder來生成 query。
具體到 Bahdanau 的論文 Neural machine translation by jointly learning to align and translate照瘾,key 和 value是一樣的匈棘,都是文中的h ,而 query是文中的 s析命。
為什么要乘以√1dk主卫?是因?yàn)槿绻鹍_k太大,點(diǎn)乘的值太大鹃愤,如果不做scaling簇搅,結(jié)果就沒有加法注意力好。另外软吐,點(diǎn)乘的結(jié)果過大瘩将,這使得經(jīng)過softmax之后的梯度很小,不利于反向傳播的進(jìn)行凹耙,所以我們通過對點(diǎn)乘的結(jié)果進(jìn)行尺度化姿现。

image.png

這里有沒有很像cnn的思想!PけА备典!
之前看的另一篇論文sentence embedding也有類似的用法∨傲ぃ可以參見A Structured Self-attentive Sentence Embedding

image.png

Transformer會(huì)在三個(gè)不同的方面使用multi-headattention:
1.encoder-decoder attention:使用multi-head attention熊经,輸入為encoder的輸出和decoder的self-attention輸出泽艘,其中encoder的self-attention作為 key and value欲险,decoder的self-attention作為query

  1. encoder self-attention:使用 multi-head attention镐依,輸入的Q、K天试、V都是一樣的(input embedding and positional embedding)
    3.decoder self-attention:在decoder的self-attention層中,deocder 都能夠訪問當(dāng)前位置前面的位置
    Position-wise feed forward network


    image.png

    用了兩層Dense層,activation用的都是Relu胁赢∈羌海可以看成是兩層的1*1的1d-convolution。hidden_size變化為:512->2048->512
    Position-wise feed forward network带兜,其實(shí)就是一個(gè)MLP 網(wǎng)絡(luò)枫笛,1 的輸出中,每個(gè) d_model 維向量 x 在此先由 xW_1+b_1 變?yōu)?d_f $維的 x'刚照,再經(jīng)過max(0,x')W_2+b_2 回歸 d_model 維刑巧。之后再是一個(gè)residual connection。輸出 size 仍是 $[sequence_length, d_model]$


    image.png

    Positional embedding
    image.png

    這樣做的目的是因?yàn)檎液陀嘞液瘮?shù)具有周期性无畔,對于固定長度偏差k(類似于周期)啊楚,post +k位置的PE可以表示成關(guān)于pos位置PE的一個(gè)線性變化(存在線性關(guān)系),這樣可以方便模型學(xué)習(xí)詞與詞之間的一個(gè)相對位置關(guān)系浑彰。

模型整體

image.png

Transformer也會(huì)遵循這種結(jié)構(gòu)恭理,encoder和decoder都使用堆疊的self-attention和point-wise,fully connected layers郭变。

Encoder: encoder由6個(gè)相同的層堆疊而成颜价,每個(gè)層有兩個(gè)子層。第一個(gè)子層是多頭自我注意力機(jī)制(multi-head self-attention mechanism)诉濒,第二層是簡單的位置的全連接前饋網(wǎng)絡(luò)(position-wise fully connected feed-forward network)周伦。在兩個(gè)子層中會(huì)使用一個(gè)殘差連接,接著進(jìn)行層標(biāo)準(zhǔn)化(layer normalization)循诉。也就是說每一個(gè)子層的輸出都是LayerNorm(x + sublayer(x))横辆。網(wǎng)絡(luò)輸入是三個(gè)相同的向量q, k和v,是word embedding和position embedding相加得到的結(jié)果茄猫。為了方便進(jìn)行殘差連接狈蚤,我們需要子層的輸出和輸入都是相同的維度。

Decoder: decoder也是由N(N=6)個(gè)完全相同的Layer組成划纽,decoder中的Layer由encoder的Layer中插入一個(gè)Multi-Head Attention + Add&Norm組成脆侮。輸出的embedding與輸出的position embedding求和做為decoder的輸入,經(jīng)過一個(gè)Multi-HeadAttention + Add&Norm((MA-1)層勇劣,MA-1層的輸出做為下一Multi-Head Attention + Add&Norm(MA-2)的query(Q)輸入靖避,MA-2層的Key和Value輸入(從圖中看潭枣,應(yīng)該是encoder中第i(i = 1,2,3,4,5,6)層的輸出對于decoder中第i(i = 1,2,3,4,5,6)層的輸入)幻捏。MA-2層的輸出輸入到一個(gè)前饋層(FF)盆犁,經(jīng)過AN操作后,經(jīng)過一個(gè)線性+softmax變換得到最后目標(biāo)輸出的概率篡九。
對于decoder中的第一個(gè)多頭注意力子層谐岁,需要添加masking,確保預(yù)測位置i的時(shí)候僅僅依賴于位置小于i的輸出榛臼。
層與層之間使用的Position-wise feed forward network伊佃。


image.png

實(shí)驗(yàn)

image.png

image.png

總結(jié)我們的結(jié)果,并將我們的翻譯質(zhì)量和培訓(xùn)成本與文獻(xiàn)中的其他模型架構(gòu)進(jìn)行比較沛善。
我們通過將訓(xùn)練時(shí)間航揉,所使用的GPU數(shù)量以及每個(gè)GPU的持續(xù)單精度浮點(diǎn)容量相乘來估計(jì)用于訓(xùn)練模型的浮點(diǎn)運(yùn)算的數(shù)量。
可以看出金刁,transformer 用了最少的資源得到了state-of-art的輸出回報(bào)帅涂。
值得注意的是


image.png

這是今年5月份facebook發(fā)布的用cnn做機(jī)器翻譯,當(dāng)時(shí)說他們?nèi)〉昧俗詈玫慕Y(jié)果胀葱,然而不到一個(gè)月就被google用一堆a(bǔ)ttention來了回?fù)簟?br>
image.png

對模型自身的一些參數(shù)做了改變自變量的測試漠秋,看一下哪些參數(shù)對模型的影響比較大。


image.png

將task推廣到其他任務(wù)上發(fā)現(xiàn)效果也很好抵屿,這里是英國選民分析任務(wù)庆锦。
image.png

Conclusion

image.png

思考

1.將soft attention換成local attention效果如何?
2.將task 換成文本摘要效果如何轧葛?

  1. 處理中文翻譯效果如何搂抒?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市尿扯,隨后出現(xiàn)的幾起案子求晶,更是在濱河造成了極大的恐慌,老刑警劉巖衷笋,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芳杏,死亡現(xiàn)場離奇詭異,居然都是意外死亡辟宗,警方通過查閱死者的電腦和手機(jī)爵赵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泊脐,“玉大人空幻,你說我怎么就攤上這事∪菘停” “怎么了秕铛?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵约郁,是天一觀的道長。 經(jīng)常有香客問我但两,道長鬓梅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任镜遣,我火速辦了婚禮己肮,結(jié)果婚禮上士袄,老公的妹妹穿的比我還像新娘悲关。我一直安慰自己,他們只是感情好娄柳,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布寓辱。 她就那樣靜靜地躺著,像睡著了一般赤拒。 火紅的嫁衣襯著肌膚如雪秫筏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天挎挖,我揣著相機(jī)與錄音这敬,去河邊找鬼。 笑死蕉朵,一個(gè)胖子當(dāng)著我的面吹牛崔涂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播始衅,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼冷蚂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了汛闸?” 一聲冷哼從身側(cè)響起蝙茶,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诸老,沒想到半個(gè)月后隆夯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡别伏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年蹄衷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畸肆。...
    茶點(diǎn)故事閱讀 40,488評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宦芦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出轴脐,到底是詐尸還是另有隱情调卑,我是刑警寧澤抡砂,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站恬涧,受9級(jí)特大地震影響注益,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜溯捆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一丑搔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧提揍,春花似錦啤月、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至刨仑,卻和暖如春郑诺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杉武。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工辙诞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人轻抱。 一個(gè)月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓飞涂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親十拣。 傳聞我的和親對象是個(gè)殘疾皇子封拧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評論 2 359

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

  • 前面的文章主要從理論的角度介紹了自然語言人機(jī)對話系統(tǒng)所可能涉及到的多個(gè)領(lǐng)域的經(jīng)典模型和基礎(chǔ)知識(shí)。這篇文章夭问,甚至之后...
    我偏笑_NSNirvana閱讀 13,928評論 2 64
  • 近日泽西,谷歌官方在 Github開放了一份神經(jīng)機(jī)器翻譯教程,該教程從基本概念實(shí)現(xiàn)開始缰趋,首先搭建了一個(gè)簡單的NMT模型...
    MiracleJQ閱讀 6,407評論 1 11
  • 最近人工智能隨著AlphaGo戰(zhàn)勝李世乭這一事件的高關(guān)注度捧杉,重新掀起了一波新的關(guān)注高潮,有的說人工智能將會(huì)如何超越...
    MiracleJQ閱讀 2,834評論 2 1
  • 對比兩篇論文 : 其中一篇是A Neural Attention Model for Abstractive Se...
    MiracleJQ閱讀 3,543評論 0 1
  • 《好好學(xué)習(xí)》成甲老師出品秘血,中信出版集團(tuán) 閱讀時(shí)間40分鐘味抖,閱讀范圍:序一到引言 4月份開始計(jì)劃閱讀在京東一下子買的...
    鄭珍容閱讀 257評論 1 1