天天看點

attention機制_Attention機制與Transformer算法

一、Attention機制

attention概括下就是:對全部依賴對象根據重要程度進行差別對待,或叫權重求和。可借下圖進行說明:

attention機制_Attention機制與Transformer算法

參見上圖,以常見的機器翻譯任務來說,Query代表上一時刻的輸出資訊,而Key和Value一般是相同的,如代表隐藏層的輸出。attention的計算過程分為如下三步:

1)根據Query和

attention機制_Attention機制與Transformer算法

計算兩者之間的相關性,即

attention機制_Attention機制與Transformer算法

2)用softmax對

attention機制_Attention機制與Transformer算法

進行歸一化處理計算注意力權重值

attention機制_Attention機制與Transformer算法

3)通過注意力權重

attention機制_Attention機制與Transformer算法

對value進行權重求和,得到目前數學表達

attention機制_Attention機制與Transformer算法

1.1 attention分類

attention有多種形式,可以從多種角度進行劃分。如:計算區域、所用資訊、結構層次和模型等角度。

1、計算區域

  • soft attention:對所有key求權重機率,參考所有key進行權重求和。
  • hard attention:精準定位到某個key,此key權重機率為1,其餘key為0。
  • local attention:上述兩者折中。先基于hard定位到某key,然後在key的一個視窗内應用soft。

2、所用資訊:假設要對一段原文進行attention處理,可能會用到内部資訊和外部資訊。

  • general attention:用到了外部資訊,常見于用來建構兩段文本關系的任務。query一般包含了外部資訊,根據外部query對原文進行對齊。
  • local attention:隻使用内部資訊,即query、key、value都隻和輸入原文有關系,如:self attention。

3、結構層次

  • 單層attention:用一個query對一段原文進行一次attention。
  • 多層attention:比如把一個文檔劃分成多個句子。第一層對每個句子使用attention計算一個句向量,第二層對所有句向量執行attention生成文檔向量進行後續使用。
  • 多頭attention:可參考《attention is all you need》中的multihead attention。

4、模型結構

  • CNN+attention:可對卷積層輸出做attention或者可用attention替換max pooling。
  • LSTM+attention:如對所有step的hidden state進行權重,把注意力集中到整段文本中比較重要的hidden state資訊。
  • 純attention:最經典的方案,如《attention is all you need》就屬于這種。
二、Transformer算法 【參考資料】

1、Attention用于NLP的一些小結:https://zhuanlan.zhihu.com/p/35739040。

2、Mechanics of Seq2seq Models With Attention:https://jalammar.github.io/visualizing-neural-machine-translation-mechanics-of-seq2seq-models-with-attention/。

3、The Illustrated Transformer:http://jalammar.github.io/illustrated-transformer/。