目錄
本能
在認知神經學中,注意力是一種人類不可或缺的複雜認知功能,指人可以在關注一些信息的同時忽略另一些信息的選擇能力。在日常生活中,我們通過視覺、聽覺、觸覺等方式接收大量的感覺輸入。但是我們的人腦可以在這些外界的信息轟炸中還能有條不紊地工作,是因爲人腦可以有意或無意地從這些大量輸入信息中選擇小部分的有用信息來重點處理,並忽略其他信息。這種能力就叫做注意力。
------ 摘自《百度百科》
想解決什麼問題?
深度神經網絡中引入注意力機制,主要想解決時序模型中的上下文問題。
RNN是時序建模的一個最常見的方法,RNN通過形如f(f(f(x)))的遞歸形式順序表達序列。
RNN存在梯度爆炸、梯度消失的問題,對於長期依賴的上下文情況比較喫力;同時串行計算,尤其是當序列很長時,導致訓練時間複雜度高。
Attention意圖非常簡單,嘗試簡化上下文問題,直接顯式建立與相關位置的關係。
在深度學習中,直接的輸入一般是原始文本、圖片等信息,這裏的上下文關係一般是基於初步提取(比如embedding)之後的特徵,理論上,並不限制具體輸入。
注意力機制就是通過線性加權上下文源序列的特徵來表徵目標位置的特徵。
是的,就是如此原始,如此簡單。
眼花繚亂的各種形式只是在表達選擇哪些源序列、目標位置在不在源序列裏面以及如何形式化權重。
當目標位置在序列裏面,就是self Attention;當考查的是整個序列時,就是global Attention;當考查的是局部序列時,就是local Attention。
global/local Attention
比如,原問題:
Global Attention層設計:
local Attention層的設計分成兩步,先選擇關聯的局部序列,再計算權重。
additive Attention
self Attention
self Attention機制是最重要的一種Attention策略,重新表達序列內部每一個位置的包含自身的上下文特徵。
如果把源序列的原始特徵矩陣用V表示,採用特徵之間的點積作爲相似度度量,那麼上圖序列self Attention之後,就變爲V x V x V。
但是採用特徵向量且點積作爲相似度是個很強的假設,可以推廣爲Q x K x V,其中(Q x K)表示權重,K表示V的某種在Q空間的映射,Q、K、V只需要形狀(shape)一致即可,具體內容由機器模擬。
Multi-Head Attention
Multi-Head Attention是並行表示多個上下文c,然後期望不同的Attention有不同的關注點,最終組合出更多樣的注意力機制。
以下是Transformer中的Multi-Head Attention機制,每一個Head的Q、K、V輸入都加了線性層,會使Attention更加多樣性。
應用案例
注意Attention層的具體位置。