Attention Is All You Need簡(jiǎn)記(多頭注意力虱咧、自注意力熊榛、層歸一化、位置嵌入)

首先注意力模型可以宏觀上理解為一個(gè)查詢(query)到一系列(鍵key-值value)對(duì)的映射腕巡。

將Source(源)中的構(gòu)成元素想象成是由一系列的<Key,Value>數(shù)據(jù)對(duì)構(gòu)成玄坦,此時(shí)給定Target(目標(biāo))中的某個(gè)元素Query(查詢),通過(guò)計(jì)算Query和各個(gè)Key的相似性或者相關(guān)性绘沉,得到每個(gè)Key對(duì)應(yīng)Value的權(quán)重系數(shù)煎楣,通過(guò)softmax歸一化后,對(duì)權(quán)重和相應(yīng)Value進(jìn)行加權(quán)求和车伞,即得到了最終的Attention數(shù)值择懂。所以本質(zhì)上Attention機(jī)制是對(duì)Source中元素的Value值進(jìn)行加權(quán)求和,而Query和Key用來(lái)計(jì)算對(duì)應(yīng)Value的權(quán)重系數(shù)另玖。目前在NLP研究中困曙,key和value常常都是同一個(gè)表伦,即key=value。

注意力模型可以宏觀上理解為一個(gè)查詢(Query)到一系列(鍵key-值value)對(duì)的映射


Attention Is All You Need(2017.6)

放縮點(diǎn)積attention層圖示定義式
逐向量來(lái)看上圖結(jié)構(gòu)

其中 Z 是歸一化因子赂弓。K绑榴、V 是一一對(duì)應(yīng)的,它們就像是 key-value 的關(guān)系盈魁,那么上式的意思就是通過(guò) q_t這個(gè) query翔怎,通過(guò)與各個(gè)k_s內(nèi)積的并?softmax 的方式,來(lái)得到?q_t 與各個(gè)v_s 的相似度杨耙,然后加權(quán)求和赤套,得到一個(gè) d_v維的向量。此處在進(jìn)行q_t珊膜、v_s相似度計(jì)算時(shí)容握,使用點(diǎn)積,除此之外還有拼接车柠,感知機(jī)等方式剔氏。

其中因子\sqrt{d_k} 起到調(diào)節(jié)作用,使得上方內(nèi)積不至于太大(太大的話 softmax 后就非 0 即 1 了竹祷,不夠“soft”了)谈跛,其中\sqrt{d_k} 指的是鍵向量維度的平方根。


1塑陵、多頭attention(Multi-head attention)

多頭attention允許模型同時(shí)注意來(lái)自不同位置的不同表示子空間的信息

多頭attention(Multi-head attention)結(jié)構(gòu)如上圖感憾,Query,Key令花,Value首先進(jìn)過(guò)一個(gè)線性變換阻桅,然后輸入到放縮點(diǎn)積attention,注意這里要做h次兼都,也就是所謂的多頭嫂沉,每一次算一個(gè)頭,頭之間參數(shù)不共享扮碧,每次Q趟章,K,V進(jìn)行線性變換的參數(shù)W是不一樣的芬萍。然后將h次的放縮點(diǎn)積attention結(jié)果進(jìn)行拼接,再進(jìn)行一次線性變換得到的值作為多頭attention的結(jié)果搔啊。

可以看到柬祠,google提出來(lái)的多頭attention的不同之處在于進(jìn)行了h次計(jì)算而不僅僅算一次,論文中說(shuō)到這樣的好處是可以允許模型在不同的表示子空間里學(xué)習(xí)到相關(guān)的信息负芋。


2漫蛔、自注意力(Self Attention)

所謂 Self Attention嗜愈,其實(shí)就是 Attention(X,X,X),X 就是前面說(shuō)的輸入序列莽龟。Self-attention即K=V=Q蠕嫁,例如輸入一個(gè)句子,那么里面的每個(gè)詞都要和該句子中的所有詞進(jìn)行attention計(jì)算毯盈。目的是學(xué)習(xí)句子內(nèi)部的詞依賴關(guān)系剃毒,捕獲句子的內(nèi)部結(jié)構(gòu)。更準(zhǔn)確來(lái)說(shuō)搂赋,Google 所用的是 Self Multi-Head Attention赘阀。

自注意力可以提取句子自身詞間依賴,比如常用短語(yǔ)脑奠、代詞指代的事物等基公。或者說(shuō)宋欺, 這層幫助編碼器在對(duì)每個(gè)單詞編碼時(shí)關(guān)注輸入句子的其他單詞轰豆。

對(duì)于使用自注意力機(jī)制的原因,論文中提到主要從三個(gè)方面考慮(每一層的復(fù)雜度齿诞,是否可以并行酸休,長(zhǎng)距離依賴學(xué)習(xí)),并給出了和RNN掌挚,CNN計(jì)算復(fù)雜度的比較雨席。

1、可以看到吠式,如果輸入序列n小于表示維度d的話陡厘,每一層的時(shí)間復(fù)雜度self-attention是比較有優(yōu)勢(shì)的。當(dāng)n比較大時(shí)特占,作者也給出了一種解決方案self-attention(restricted)即每個(gè)詞不是和所有詞計(jì)算attention糙置,而是只與限制的r個(gè)詞去計(jì)算attention。

2是目、在并行方面谤饭,多頭attention和CNN一樣不依賴于前一時(shí)刻的計(jì)算,可以很好的并行懊纳,優(yōu)于RNN揉抵。

3、在長(zhǎng)距離依賴上嗤疯,由于self-attention是每個(gè)詞和所有詞都要計(jì)算attention冤今,所以不管他們中間有多長(zhǎng)距離,最大的路徑長(zhǎng)度也都只是1茂缚。能夠無(wú)視詞之間的距離直接計(jì)算依賴關(guān)系戏罢,能夠?qū)W習(xí)一個(gè)句子的內(nèi)部結(jié)構(gòu)屋谭。

????????先來(lái)看一個(gè)翻譯的例子“I arrived at the bank after crossing the river” 這里面的bank指的是銀行還是河岸呢,這就需要我們聯(lián)系上下文龟糕,當(dāng)我們看到river之后就應(yīng)該知道這里bank很大概率指的是河岸桐磁。在RNN中我們就需要一步步的順序處理從bank到river的所有詞語(yǔ),而當(dāng)它們相距較遠(yuǎn)時(shí)RNN的效果常常較差讲岁,且由于其順序性處理效率也較低我擂。

????????Self-Attention則利用了Attention機(jī)制,計(jì)算每個(gè)單詞與其他所有單詞之間的關(guān)聯(lián)催首,在這句話里扶踊,當(dāng)翻譯bank一詞時(shí),river一詞就有較高的Attention score郎任。利用這些Attention score就可以得到一個(gè)加權(quán)的表示秧耗,然后再放到一個(gè)前饋神經(jīng)網(wǎng)絡(luò)中得到新的表示,這一表示很好的考慮到上下文的信息舶治》志總之Self-Attention機(jī)制對(duì)每一個(gè)詞得到新的考慮了上下文信息的表征


3霉猛、位置嵌入(Position Embedding)

上述模型并不能學(xué)習(xí)序列的順序尺锚。換句話說(shuō),如果將 K,V 按行打亂順序(相當(dāng)于句子中的詞序打亂)惜浅,那么 Attention 的結(jié)果還是一樣的瘫辩。學(xué)習(xí)不到順序信息,那么效果將會(huì)大打折扣(比如機(jī)器翻譯中坛悉,有可能只把每個(gè)詞都翻譯出來(lái)了伐厌,但是不能組織成合理的句子)。這就引出了位置向量(Position Embedding)裸影。

將每個(gè)位置編號(hào)挣轨,然后每個(gè)編號(hào)對(duì)應(yīng)一個(gè)向量,通過(guò)結(jié)合位置向量和詞向量轩猩,就給每個(gè)詞都引入了一定的位置信息卷扮,這樣 Attention 就可以分辨出不同位置的詞了,進(jìn)而學(xué)習(xí)位置信息了均践。

在Attention Is All You Need一文中晤锹,Google直接給出了位置向量構(gòu)造公式:

這里的意思是將 id 為 p的位置映射為一個(gè)?d_{pos}維的位置向量,這個(gè)向量的第i個(gè)元素的數(shù)值就是 PE_i(p)彤委。

位置向量是絕對(duì)位置信息鞭铆,相對(duì)位置信息也很重要。Google 選擇前述的位置向量公式的一個(gè)重要原因如下:由于我們有 sin(α+β)=sinα·cosβ+cosα·sinβ 以及 cos(α+β)=cosα·cosβ?sinα·sinβ葫慎,這表明位置 p+k 的向量可以表示成位置 p衔彻、k 的向量的線性變換,這提供了表達(dá)相對(duì)位置信息的可能性偷办。

結(jié)合位置向量和詞向量有幾個(gè)可選方案艰额,可以把它們拼接起來(lái)作為一個(gè)新向量,也可以把位置向量定義為跟詞向量一樣大小椒涯,然后兩者加起來(lái)柄沮,Attention Is All You Need使用的是后者。


4废岂、Layer Normalization

LN(左)和BN(右)對(duì)比示意圖??

我們指出BN并不適用于RNN等動(dòng)態(tài)網(wǎng)絡(luò)和batchsize較小的時(shí)候效果不好祖搓。Layer Normalization(LN)的提出有效的解決BN的這兩個(gè)問(wèn)題。LN和BN不同點(diǎn)是歸一化的維度是互相垂直的湖苞,如圖1所示拯欧。在圖1中N表示樣本軸,C表示通道軸财骨,F是每個(gè)通道的特征數(shù)量镐作。BN如右側(cè)所示,它是取不同樣本的同一個(gè)通道的特征做歸一化隆箩;LN則是如左側(cè)所示该贾,它取的是同一個(gè)樣本的不同通道做歸一化。

LN是和BN非常近似的一種歸一化方法捌臊,不同的是BN取的是不同樣本的同一個(gè)特征杨蛋,而LN取的是同一個(gè)樣本的不同特征。在BN和LN都能使用的場(chǎng)景中理澎,BN的效果一般優(yōu)于LN逞力,原因是基于不同數(shù)據(jù),同一特征得到的歸一化特征更不容易損失信息矾端。但是有些場(chǎng)景是不能使用BN的掏击,例如batchsize較小或者在RNN中,這時(shí)候可以選擇使用LN秩铆,LN得到的模型更穩(wěn)定且起到正則化的作用砚亭。RNN能應(yīng)用到小批量和RNN中是因?yàn)長(zhǎng)N的歸一化統(tǒng)計(jì)量的計(jì)算是和batchsize沒(méi)有關(guān)系的。


5殴玛、transformer

綜合上述部分組成整體結(jié)構(gòu)transformer

transformer模型分為編碼器解碼器兩個(gè)部分捅膘。

編碼器由6個(gè)相同的層堆疊在一起,每一層又有兩個(gè)支層滚粟。第一個(gè)支層是一個(gè)多頭的自注意機(jī)制寻仗,第二個(gè)支層是一個(gè)簡(jiǎn)單的全連接前饋網(wǎng)絡(luò)。在兩個(gè)支層外面都添加了一個(gè)殘差連接(residual)凡壤,然后進(jìn)行了layer nomalization的操作署尤。模型所有的支層以及embedding層的輸出維度都是d_{model}耙替。

解碼器也是堆疊了6個(gè)相同的層。不過(guò)每層除了編碼器中那兩個(gè)支層曹体,解碼器還加入了第三個(gè)支層俗扇,如圖中所示同樣也用了殘差連接以及l(fā)ayer normalization。


另一篇關(guān)于transformer:transformer再記(編碼器)

酷文章:BERT大火卻不懂Transformer箕别?讀這一篇就夠了

有用的文章:? ? ? ? ? ? ? ?關(guān)于transformer各組件的說(shuō)明

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?transformer代碼注解

最后編輯于
?著作權(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ō)我怎么就攤上這事陷遮。” “怎么了垦江?”我有些...
    開封第一講書人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵帽馋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我比吭,道長(zhǎng)绽族,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任衩藤,我火速辦了婚禮吧慢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赏表。我一直安慰自己检诗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開白布瓢剿。 她就那樣靜靜地躺著逢慌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪间狂。 梳的紋絲不亂的頭發(fā)上攻泼,一...
    開封第一講書人閱讀 49,850評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼忙菠。 笑死何鸡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的牛欢。 我是一名探鬼主播音比,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼氢惋!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起稽犁,我...
    開封第一講書人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤焰望,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后已亥,有當(dāng)?shù)厝嗽跇淞掷锇l(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
  • 文/蒙蒙 一蜕便、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贩幻,春花似錦轿腺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至鸯檬,卻和暖如春决侈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 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)容