1. 程式人生 > >Attention機制學習(一)傳統Attention機制

Attention機制學習(一)傳統Attention機制

前言

縱觀神經網路的發展歷程,從最原始的MLP,到CNN,到RNN,到LSTM,GRU,再到現在的Attention機制,人們不斷的在網路裡面加入一些先驗知識,使得網路不過於“發散”,能夠朝著人們希望的方向去發展。
這些先驗知識是指:區域性視野知識、序列遞迴知識、結構遞迴知識,已經長短時的記憶。現在,人們加入了注意力這種先驗知識。

本文將介紹應用在NLP領域的attention機制,包括傳統的attention機制以及最新的transformer機制。

啥子叫注意力?

注意力機制可以看做一種通用的思想,是指人在工作的是注意力往往會集中在整個場景中的某些焦點上。

舉個例子哈,大家在中學做語文的閱讀理解的時候,有一個常見的題目就是找整篇文章的中心句。這個時候,我們往往都把注意力集中在開頭段、結尾段,中間的內容不是說不重要,但是在找中心句的時候,我們往往把注意力偏重於開頭結尾。這就是一種注意力的體現。

再舉個例子:
在這裡插入圖片描述
這是一種街景圖,假設現在我們處在這個場景中,我想找周圍有沒有超市,那麼對於這麼一個映入我眼瞼的影象,我肯定會認為超市應該在街道的兩邊,不會在空中。於是,我會把我的注意力集中在前方的左右兩邊的商店。

又比如,還是在這個場景中,假設開車在這條道路上,急著去見妹紙,那麼我的注意力自然就是紅綠燈咯。

這兩個例子基本就能體現出注意力機制的核心思想:對於一個複雜的輸入,不同的問題會把注意力側重於不同的地方。

那再看看在機器翻譯的一個小小的attention的例子。
在這裡插入圖片描述
這是一個很典型的基於RNN網路的機器翻譯模型,模型先依次往網路輸入 Tom,Chase,Jerry,然後最後得到待翻譯句子的向量表達 C

C ,這個 C C 理應結合了輸入的所有資訊。然後翻譯的時候,“湯姆”就基於 C C 給計算出來了。
但是,我們隱隱約約感受到這樣的模型似乎在翻譯成“湯姆”的時候,把Tom chase Jerry 這三個詞都視為同等重要來翻譯,但實際上 這個詞的翻譯的 注意力應該在“Tom”這個詞的附近。說的更直白一些,“湯姆”這個翻譯結果對輸入各個詞的關注度應該有所側重,如果用權重衡量的話,Tom 可能佔用了0.7的關注度,其他兩個詞可能分別佔用0.2和0.1的關注度。

基本思想就是這樣子的了,通過關注度的高低大小來體現注意力的傾向。

注意力機制核心思想

假設, ( K i , V i ) (K_{i},V_{i}) K i K_{i} 表示輸入的一部分, V i V_{i} 表達輸入的一部分。現在在某個任務的時候,我們給輸入的各個 V i V_{i} 有個打分 α i \alpha_{i} ,那些任務高度關注的 V i V_{i} 打分就高。那麼應該怎麼做?

在這裡插入圖片描述
如上圖所示,做的方法很簡單的,首先 Q Q 表示一個與當前任務有關的矩陣,它可以協助選擇出那個 V i V_{i} 的權重大。
於是先拿 Q Q K i K_{i} 做一次 f ( Q , K i ) f(Q,K_{i}) 運算得到不同 S i S_{i} ,然後在對這些 S i S_{i} 進行歸一化,得到對應的規範權重。最後,在依這些權重計算 V 1 , V 2 , V 5 V_{1},V_{2}\dots,V_{5} 的線性組合 A t t V Att-V
通常,K和V是相等的。
而這個加權後 V 1 , V 2 , V 5 V_{1},V_{2}\dots,V_{5} 的線性組合 A t t V Att-V 就是傳說中的注意力值,這個值就對 V 1 , V 2 , V 5 V_{1},V_{2}\dots,V_{5} 這幾個值有所側重。

我們再看打分函式 f ( Q , K ) f(Q,K) 一般是那些函式:
在這裡插入圖片描述
它可以是個標註向量內積,也可以是橢圓內積,或者concat,當然也可以專門設計一個小型的MLP來完成這個f的功能。
使用MLP來實現f函式

注意力的分類

求注意力的時候,不同分配限制會有不同的注意力。
例如:

軟注意力

對概率的分配沒有任何限制。
在這裡插入圖片描述

硬注意力:

在軟注意力的基礎上對概率分配新增某種限制,例如:限制概率最大的那個 α i \alpha_{i} 為1,其他強制改為0。

在這裡插入圖片描述
然後考慮計算Attention是基於輸入的全部還是區域性又分為全域性注意力。

全域性注意力

Decoder段在計算Attention是考慮Encoder的所有詞。
在這裡插入圖片描述
這樣得到的注意力值Att-V 是全域性輸入向量的依各列相應概率值的線性組合。

區域性注意力

與全域性注意力形成對比的是,為了加快訓練速度,可以設定一個視窗,使得對於輸入的視窗內的向量進行打分,然後求這些視窗內的向量的線性組合。
在這裡插入圖片描述

Attention的具體應用

見下一篇部落格,專門解讀2015年attention機制用於機器翻譯的句嵌入表示的論文。