transformer再記(編碼器)

transformer整體結(jié)構(gòu)

Attention Is All You Need(2017.6)

本文從微觀角度(張量角度)討論transformer的前向傳播


自注意力層

一取具、計算自注意力的第一步就是用每個編碼器的輸入向量(每個單詞的詞向量)生成三個向量脖隶。也就是說對于每個單詞,我們創(chuàng)造一個查詢向量(Query)暇检、一個鍵向量(Key)和一個值向量(Value)产阱。(在本文的討論范圍內(nèi),及目前實際中絕大多數(shù)討論中一個詞的鍵向量等于值向量)块仆。這三個向量是通過每個詞嵌入向量與各自的權(quán)重矩陣相乘后創(chuàng)建的构蹬。可以發(fā)現(xiàn)這些新向量在維度上比詞嵌入向量更低 ,論文中詞嵌入和編碼器的輸入/輸出向量的維度是512悔据,新向量維度是64庄敛。但實際上不強(qiáng)求維度更小,這只是一種基于架構(gòu)上的選擇科汗,它可以使多頭注意力(multiheaded attention)的大部分計算保持不變藻烤。

X1與WQ權(quán)重矩陣相乘得到q1, 就是與這個單詞相關(guān)的查詢向量。最終使得輸入序列的每個單詞的創(chuàng)建一個查詢向量头滔、一個鍵向量和一個值向量怖亭。

二、計算自注意力的第二步是計算得分坤检。假設(shè)我們在為一個例子中的第一個詞“Thinking”計算自注意力向量兴猩,我們需要拿輸入句子中的每個單詞對“Thinking”打分。這些分?jǐn)?shù)決定了在編碼單詞“Thinking”的過程中有多關(guān)注句子的其它部分早歇。這些分?jǐn)?shù)是通過打分單詞(輸入句子的所有單詞)的鍵向量(Key)與“Thinking”的查詢向量(Query)相點積來計算的倾芝。所以如果我們是處理位置最靠前的詞的自注意力的話,第一個分?jǐn)?shù)是q1和k1的點積箭跳,第二個分?jǐn)?shù)是q1和k2的點積晨另。

三、分?jǐn)?shù)除以8(8是論文中使用的鍵向量的維數(shù)64的平方根衅码,即\sqrt{d_k} 拯刁,這會讓梯度更穩(wěn)定。這里也可以使用其它值逝段,8只是默認(rèn)值)

四、然后通過softmax傳遞結(jié)果割捅。softmax的作用是使所有單詞的分?jǐn)?shù)歸一化奶躯,得到的分?jǐn)?shù)都是正值且和為1。這個softmax分?jǐn)?shù)決定了每個單詞對編碼當(dāng)下位置(“Thinking”)的貢獻(xiàn)亿驾。

五嘹黔、將每個值向量(Value)乘以softmax分?jǐn)?shù)(這是為了準(zhǔn)備之后將它們求和)。這里的直覺是希望關(guān)注語義上相關(guān)的單詞,并弱化不相關(guān)的單詞儡蔓。

六郭蕉、對加權(quán)值向量求和(譯注:自注意力的另一種解釋就是在編碼某個單詞時,就是將所有單詞的表示(值向量)進(jìn)行加權(quán)求和喂江,而權(quán)重是通過該詞的表示(鍵向量)與被編碼詞表示(查詢向量)的點積并通過softmax得到召锈。),然后即得到自注意力層在該位置的輸出(在我們的例子中是對于第一個單詞)获询。?

這樣自自注意力的計算就完成了涨岁。得到的向量就可以傳給前饋神經(jīng)網(wǎng)絡(luò)。然而實際中吉嚣,這些計算是以矩陣形式完成的梢薪,以便算得更快


實際中矩陣實現(xiàn)上述計算:

一尝哆、計算查詢矩陣(Query)秉撇、鍵矩陣(Key)和值矩陣(Value)。為此秋泄,我們將輸入句子的詞嵌入裝進(jìn)矩陣X中畜疾,將其乘以我們訓(xùn)練的權(quán)重矩陣(W^Q、W^K印衔、W^V)啡捶。

x矩陣中的每一行對應(yīng)于輸入句子中的一個單詞。我們再次看到詞嵌入向量 (512奸焙,或圖中的4個格子)和q/k/v向量(64瞎暑,或圖中的3個格子)的大小差異。

步驟二到六可以合并為一個公式來計算自注意力層的輸出与帆。


多頭注意力(“multi-headed” attention):

較普通自注意力優(yōu)勢:

1了赌、它擴(kuò)展了模型專注于不同位置的能力。

2玄糟、它給出了注意力層的多個“表示子空間”(representation subspace)勿她。對于“多頭”注意機(jī)制,我們有多個查詢/鍵/值權(quán)重矩陣集(Transformer使用八個注意力頭阵翎,因此我們對于每個編碼器/解碼器有八個矩陣集合)逢并。這些集合中的每一個都是隨機(jī)初始化的,在訓(xùn)練之后郭卫,每個集合都被用來將輸入詞嵌入(或來自上一級編碼器/解碼器的向量)投影到不同的表示子空間中砍聊。

如果我們做與上述相同的自注意力計算,只需八次不同的權(quán)重矩陣運算贰军,我們就會得到八個不同的Z矩陣玻蝌。

這給我們帶來了一點挑戰(zhàn)。前饋層不需要8個矩陣,它只需要一個矩陣(由每一個單詞的表示向量組成)俯树。所以我們需要一種方法把這八個矩陣壓縮成一個矩陣帘腹。可以直接把這些矩陣拼接在一起许饿,然后用一個附加的權(quán)重矩陣W^0與它們相乘阳欲,得到最終的Z矩陣。

多頭注意力(multi-headed” attention)帶來的“多重注意力”

當(dāng)我們編碼“it”一詞時米辐,一個注意力頭集中在“animal”上胸完,而另一個則集中在“tired”上,從某種意義上說翘贮,模型對“it”一詞的表達(dá)在某種程度上是“animal”和“tired”的代表赊窥。



位置編碼(Positional Encoding):

為了解決上述還缺少的理解輸入單詞順序的方法,Transformer為每個輸入的詞嵌入添加了一個向量狸页。

如果我們假設(shè)詞嵌入的維數(shù)為4锨能,則實際的位置編碼如下:

更進(jìn)一步,在下圖中芍耘,每一行對應(yīng)一個詞向量的位置編碼址遇,所以第一行對應(yīng)著輸入序列的第一個詞。每行包含512個值斋竞,每個值介于1和-1之間倔约。我們已經(jīng)對它們進(jìn)行了顏色編碼,所以圖案是可見的坝初。

20字(行)的位置編碼實例浸剩,詞嵌入大小為512(列)。你可以看到它從中間分裂成兩半鳄袍。這是因為左半部分的值由一個函數(shù)(使用正弦)生成绢要,而右半部分由另一個函數(shù)(使用余弦)生成。然后將它們拼在一起而得到每一個位置編碼向量拗小。


綜上一個編碼器的結(jié)構(gòu)如下圖所示重罪。我們需要提到一個編碼器架構(gòu)中的細(xì)節(jié):在每個編碼器中的每個子層(自注意力、前饋網(wǎng)絡(luò))的周圍都有一個殘差連接(虛線)哀九,并且都跟隨著一個“層歸一化”步驟剿配。

虛線是殘差連接


下一篇:? ? ? ? ? ??transformer再記(解碼器)

參考文章:? ? ? ??BERT大火卻不懂Transformer?讀這一篇就夠了

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

? ? ? ? ? ? ? ? ? ? ? ? ? transfromer代碼解釋

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末勾栗,一起剝皮案震驚了整個濱河市惨篱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌围俘,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異界牡,居然都是意外死亡簿寂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進(jìn)店門宿亡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來常遂,“玉大人,你說我怎么就攤上這事挽荠】烁欤” “怎么了?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵圈匆,是天一觀的道長漠另。 經(jīng)常有香客問我,道長跃赚,這世上最難降的妖魔是什么笆搓? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮纬傲,結(jié)果婚禮上满败,老公的妹妹穿的比我還像新娘。我一直安慰自己叹括,他們只是感情好算墨,可當(dāng)我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著汁雷,像睡著了一般净嘀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上摔竿,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天面粮,我揣著相機(jī)與錄音,去河邊找鬼继低。 笑死熬苍,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的袁翁。 我是一名探鬼主播柴底,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼粱胜!你這毒婦竟也來了柄驻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤焙压,失蹤者是張志新(化名)和其女友劉穎鸿脓,沒想到半個月后抑钟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡野哭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年在塔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拨黔。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蛔溃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出篱蝇,到底是詐尸還是另有隱情贺待,我是刑警寧澤,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布零截,位于F島的核電站麸塞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瞻润。R本人自食惡果不足惜喘垂,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绍撞。 院中可真熱鬧正勒,春花似錦、人聲如沸傻铣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽非洲。三九已至鸭限,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間两踏,已是汗流浹背败京。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留梦染,地道東北人赡麦。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像帕识,于是被迫代替她去往敵國和親泛粹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,576評論 2 349

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