對【Attention is all your need!!】的理解

0、背景

Transformer是2018年穀歌大佬們聯手出品的用於替代RNN的模型,單單使用注意力機制,在該文中使用了多頭自注意力,僅用線性變換來提取特徵信息,能夠極大程度提升並行性,且準確性也有大幅提升。
Transformer被提出用於機器翻譯領域,但後續在基於Transformer或BERT也被表示在其他任務中都有不錯表現。
這篇論文的名字也很拉風,同時本人表示該名字極具有啓示性,我非常喜歡,本文簡單梳理下對它的理解。
是的,Attention Is All Your Need就是Transformer的原文出處。

1、模型詳解

1.1模型架構

Transformer模型基於自編碼器AutoEncoder,分爲Encoder和Decocer,每部分各6層。Transformer借鑑了Seq2Seq的思想,Encoder用於提取語義特徵,並層層堆疊,但只使用最後一層所提取的特徵信息。 並將最後一層Encoder中的內容(Key和Value)連接輸出到每一層Decoder中,Decoder同時依然層層堆疊,並在Decoder第一層開始輸入Embedding信息。先甩一張經典的模型架構圖:

  • Encoder
    上圖中左側是Encoder,輸入採用了word Embedding + 位置編碼Position Embedding(PE). 每個Block使用多頭注意力處理Embeddings, 再接殘差Add、層歸一化Layer Norm, 之後再通過一層全連接網絡(或叫前饋網絡FFN,MLP)及殘差Add,Layer Norm。

  • Decoder
    上圖右側是Decoder,輸入同樣是用word Embedding + PE,Block基本相似,不同之處有:
    1. 採用了Masked多頭注意力
    2. 採用句間注意力,計算Q K V相似性時,用Decoder的Q, 用Encoder的K V

需注意:Transformer在做機器翻譯時是用監督學習場景下的帶標註數據。如英法翻譯,知道每一句話的英文和發文表述。

1.2自注意力

注意力機制自提出以來就一直被廣泛使用,它的出現有效解決了長句子語義依賴問題。探究注意力的本質,就是線性加權,在NLP領域常用文本語義相似度來表示在注意力中的權重大小。
自注意力從名字理解就是自己注意自己,這一理念在機器翻譯中尤爲適合,因爲每一個詞都有依賴的語境和指代關係,通過自注意力來編碼源領域語言的依賴關係,並解碼轉換爲目標領域的詞表示即完成了機器翻譯。

在注意力機制中有三個變量:Query(Q)、Key(K)、Value(V),需要解釋一下:
其實這三個變量是具有相同shape的向量,來源於信息檢索領域,比如在Baidu中搜索:手機
- Query就是輸入在搜索框的內容(通常爲關鍵詞),
- Key就是命中和Query高度相似的內容(通常爲網頁標題並經預處理後的關鍵詞,只是搜索後顯示的結果依然是標題),
- Value就是對應標題連接跳進去的內容 (可見K-V之間是有映射關係的)
如下圖所示:

說到Transformer的自注意力其實是使用縮放點積注意力(Scaled Dot-Product Attention)

輸入X(詞embedding + PE)經線性變換映射成三個相同shape的向量: Q K V , 通過當前時間步的Q與該句中所有位置的K進行點乘,並經Softmax映射出Attention權重,結果再乘以V
而在實際使用中除了 Q (或K V) 向量的維度 \(\sqrt {d_k}\), 目的是避免梯度消失或梯度爆炸

1.3多頭注意力(multi-head Attention)

同一個詞通常會注意多個不同詞,而使用多頭注意力則從多個角度來表示該詞在整句語義信息中所對其他詞的注意力,最後將多個頭的結果進行拼接,如下圖所示:

舉例: The animal didn't cross the street because it was too tired。 其中代詞it,所注意到的詞會有多個,且權重不同,用multi-head 捕捉效果更好:

1.4 位置編碼

原文使用sin cos函數來對每個詞進行位置編碼(Position Embedding PE),PE的shape和詞embedding相同, 在輸入模型計算時,把每個位置的PE 相加於 對應位置的詞Embedding,
如下式:pos表示每個詞在該句中的位置, i表示PE的維度

之所以爲什麼用sin cos函數來編碼位置,據分析說是這樣容易得出詞在句子中的絕對位置,以及詞與詞之間的相對位置,相對位置可以經一次線性變換得到(使用sin cos的 和、差角公式)
這樣可把一句話裏不同詞間的距離轉爲1,有效解決長依賴問題。

2、實驗結果

模型剛一出,就刷新各種SOTA, 在機器翻譯領域勝過了emsemble其他。

同時其並行性可以充分加速訓練,時間複雜度如下圖:

3、個人總結

Transformer很經典, 個人感覺原文還需詳讀, 先留2篇大佬的blog吧

參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章