transformer再記(編碼器)

transformer整體結構

Attention Is All You Need(2017.6)

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


自注意力層

一、計算自注意力的第一步就是用每個編碼器的輸入向量(每個單詞的詞向量)生成三個向量。也就是說對于每個單詞,我們創造一個查詢向量(Query)、一個鍵向量(Key)和一個值向量(Value)。(在本文的討論范圍內,及目前實際中絕大多數討論中一個詞的鍵向量等于值向量)。這三個向量是通過每個詞嵌入向量與各自的權重矩陣相乘后創建的。可以發現這些新向量在維度上比詞嵌入向量更低 ,論文中詞嵌入和編碼器的輸入/輸出向量的維度是512,新向量維度是64。但實際上不強求維度更小,這只是一種基于架構上的選擇,它可以使多頭注意力(multiheaded attention)的大部分計算保持不變。

X1與WQ權重矩陣相乘得到q1, 就是與這個單詞相關的查詢向量。最終使得輸入序列的每個單詞的創建一個查詢向量、一個鍵向量和一個值向量。

二、計算自注意力的第二步是計算得分。假設我們在為一個例子中的第一個詞“Thinking”計算自注意力向量,我們需要拿輸入句子中的每個單詞對“Thinking”打分。這些分數決定了在編碼單詞“Thinking”的過程中有多關注句子的其它部分。這些分數是通過打分單詞(輸入句子的所有單詞)的鍵向量(Key)與“Thinking”的查詢向量(Query)相點積來計算的。所以如果我們是處理位置最靠前的詞的自注意力的話,第一個分數是q1和k1的點積,第二個分數是q1和k2的點積。

三、分數除以8(8是論文中使用的鍵向量的維數64的平方根,即\sqrt{d_k} ,這會讓梯度更穩定。這里也可以使用其它值,8只是默認值)

四、然后通過softmax傳遞結果。softmax的作用是使所有單詞的分數歸一化,得到的分數都是正值且和為1。這個softmax分數決定了每個單詞對編碼當下位置(“Thinking”)的貢獻。

五、將每個值向量(Value)乘以softmax分數(這是為了準備之后將它們求和)。這里的直覺是希望關注語義上相關的單詞,并弱化不相關的單詞

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

這樣自自注意力的計算就完成了。得到的向量就可以傳給前饋神經網絡。然而實際中,這些計算是以矩陣形式完成的,以便算得更快


實際中矩陣實現上述計算:

一、計算查詢矩陣(Query)、鍵矩陣(Key)和值矩陣(Value)。為此,我們將輸入句子的詞嵌入裝進矩陣X中,將其乘以我們訓練的權重矩陣(W^Q、W^K、W^V)。

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

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


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

較普通自注意力優勢:

1、它擴展了模型專注于不同位置的能力。

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

如果我們做與上述相同的自注意力計算,只需八次不同的權重矩陣運算,我們就會得到八個不同的Z矩陣。

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

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

當我們編碼“it”一詞時,一個注意力頭集中在“animal”上,而另一個則集中在“tired”上,從某種意義上說,模型對“it”一詞的表達在某種程度上是“animal”和“tired”的代表。



位置編碼(Positional Encoding):

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

如果我們假設詞嵌入的維數為4,則實際的位置編碼如下:

更進一步,在下圖中,每一行對應一個詞向量的位置編碼,所以第一行對應著輸入序列的第一個詞。每行包含512個值,每個值介于1和-1之間。我們已經對它們進行了顏色編碼,所以圖案是可見的。

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


綜上一個編碼器的結構如下圖所示。我們需要提到一個編碼器架構中的細節:在每個編碼器中的每個子層(自注意力、前饋網絡)的周圍都有一個殘差連接(虛線),并且都跟隨著一個“層歸一化”步驟。

虛線是殘差連接


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

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

有用的文章:? ? ? ?關于transformer各組件的說明

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,996評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容