Attention注意力机制的前世今身
?PaperWeekly 原創 ·?作者|馬敏博
學校|西南交通大學碩士生
研究方向|命名實體識別
總體介紹
注意力機制(Attention Mechanism)最早應用 CV 任務上 ,但最初的論文引用,作者沒有找到,如有知曉的,還望在評論中給出。在 NLP 中的最早應用,應該是文獻 [1],機器翻譯中對齊與翻譯聯合學習。
直觀地說,注意力機制是衡量重要性權重的向量,或元素之間相關性的表示。
先引入 seq2seq 框架,由編碼器和解碼器組成,廣泛用于機器翻譯、自動文摘等任務。
由編碼器對原始輸入進行編碼,壓縮為固定長度的上下文向量;
編碼器最后的一個隱藏層狀態送入解碼器,進行解碼輸出。
可以解決變長的輸入與輸出,用于不同語言、不同長短的輸入與輸出。常用的網絡結構為 RNN,具體為 LSTM 或 GRU。
Attention最初的樣子
但是上述任務面臨一個問題,僅靠編碼層最后一個隱層狀態能否包含整個輸入的信息,特別當翻譯的語句特別長時,這種問題更加顯著。
文獻 [1] 提出將編碼層所有隱層狀態經過線性加權后,送入解碼層,進行每一步的輸出,如下圖所示。這樣能夠保證在解碼不同詞時,每個詞的編碼貢獻是不同的,也能反映出源語言與目標語言中哪些詞是較為相關的。
▲ 文獻1中編解碼圖
公式也特別簡單,下面來復述一下:
2.1 首先定義符號:
表示輸入序列;
表示輸出序列;
表示編碼層的第 i 時刻的隱藏層狀態;
表示解碼層第 t 時刻的隱藏層狀態;
表示第 t 時刻解碼時注意力分布,這是本篇論文的關鍵。
總體是為了計算條件概率分布:
2.2 計算?
表示解碼輸出第 t 個詞時,與第 i 個輸入序列詞之間的相關因子。
2.3 計算?
這里就是一個 softmax 函數,歸一化所有的注意力權重。
2.4 計算?
在文中為對齊模型(前饋神經網絡)。
至此,公式就介紹結束。這里需要注意的一點是,計算 的函數又被統稱為配分函數,即 score 函數。后面會介紹多種配分函數的計算方式。
論文還通過對齊分數矩陣可視化所提模型的翻譯對齊效果,通過顏色的深淺反應兩者之間的聯系緊密,這也成為后面應用注意力機制解決其他問題的常用實驗結果分析方法。
▲ 文獻1中的對齊分數矩陣圖
注意力統一化描述
將 Attention 從 seq2seq 框架中抽取出來,可以描述為下圖所示:
▲ 來自張俊林blog分享 [2]
source 中包含鍵值對(相當于文獻 [1] 中的編碼層隱層狀態),計算 Target 中query(前一時刻的解碼層隱層狀態)與 key 的相關性,得到 key 對應 value 的權重(),最后對 value 加權求和得到 attention value。
將上述描述公式化:
其計算過程可以分為三個階段,如下圖所示:
計算 query 和 key 之間的相似性或相關性;
對權重進行歸一化處理;
依據權重對 value 進行加權求和。
▲ 來自張俊林blog分享 [2]
其中,計算相似度或相關性函數是上節提到的 score 函數,在文獻 [3] 中給出了其他幾種常用的配分函數計算形式:
▲ 來自文獻 [3]
這里的 ?等價于上節的 , 第一項為點積運算,在計算相似度上還有常用的 cosine 計算(文獻 [4]);第二項常用于輸入輸出維度不對等,使用中間矩陣相乘將其對齊;第三項為二者進行拼接后,使用 tanh 函數進行激活。
此外,還有 Transfomer 中使用到的縮放點積注意力, (文獻 [5]),是點積計算的延伸,增加了一個縮放因子。
Attention的分類
注意力機制發展至今,研究者從各個方面對其進行了改進,也就產生了注意力的各種形式,下面將分類對其進行介紹。
注:內容參考了文獻 [2]、[6]、[7]。
Soft attention v.s. Hard attention
Global attention v.s. Local attention
Self-attention
Multi-head attention
Hierarchical attention
Attention over attention
Memory-based attention
Soft Attention VS Hard Attention
這種分類方式由文獻 [8] 提出,該研究任務是由圖片生成文字描述(Image Caption),文中使用注意力捕獲文字與圖中特定區域的聯系。
Soft Attention
NLP 中嘗試用的注意力方式,取值為 [0, 1] 的權重概率分布,使用了所有編碼層的隱層狀態,與上兩節的介紹相同,可以直接在模型訓練過程中,通過后向傳播優化對參數進行優化。
Hard Attention
Hard attention 在原文中被稱為隨機硬注意力(Stochastic hard attention),這里的隨機是指對編碼層隱狀體的采樣過程,Hard attention 沒有使用到所有的隱層狀態,而是使用 one-hot 的形式對某個區域提取信息,使用這種方式無法直接進行后向傳播(梯度計算),需要蒙特卡洛采樣的方法來估計梯度。
Global Attention VS Local Attention
由文獻 [3] 提出,文中小節首句介紹,先打消了字面的意思,不是按照原序列的所有位置和局部位置做 attention 來劃分。
These classes differ in terms of whether the “attention”is placed on all source positions or on only a few source positions.
這兩者的區別在于 source-side 的上下文向量 的計算,關于 的介紹具體看第一小節。
Global Attention
以下簡稱 Global attention 為 GA, GA 在推導 c_t 時考慮了所有的編碼層隱層狀態,模型圖如下圖所示,其中藍色表示編碼碼層,紅色表示解碼層。
可以看到 global attention 是在計算 c_t 時考慮了當前的目標解碼隱層狀態和所有編碼隱層狀態,這里的 a_t 為全局對齊權重。若不指定說明,一般 attention 都是指 global attention。
▲ global attention model
Local Attention
Global Attention 存在以下兩個缺點:
每次解碼目標詞,都要計算所有的編碼隱層向量,在翻譯或處理長文本序列時計算代價高。
文本序列過長,也有可能導致注意力不集中、過度分散(這個不是論文中介紹,只是借鑒他人介紹,可不做參考)。
Local attention 相對于 global attention 直觀的感受,專注于小窗口的上下文,也就是不考慮所有的編碼隱層狀態,模型結構圖如下所示。為實現該想法,要在每一時刻解碼時構造一個位置變量 ,記錄當前解碼位置,該窗口就可以表示為 ,其中 D 為窗口大小,為實驗選值。
不同于 global attention 中對齊向量是變長的,Local attention 中 是定長的,文中給出了兩種方法定義該對齊向量:
local-m 固定的, ;
local-p 預測的,利用 預測 ,計算公式為:,其中 S 為原句長度, 為待學習的模型參數。此外,為了使對齊點更接近 ,引入了高斯分布計算對齊權重 ,公式這里就不給出了,感興趣的可以看論文公式 10。
Self-attention
Self-attention 又稱為 intra attention,顧名思義,其不是計算 source-target 之間的注意力分布,而是單一計算 source 或 target 內部的注意力分布,也可以看作特殊的 source=target 的情況。其可視化的示例如下圖所示,文本序列內部不同詞之間的聯系。
▲ self attention 可視化
具體來講,self attention 具有以下優點:
可以捕獲句法特征和語義特征(可視化結果);
相比 RNN 依次序列計算,在長距離依賴特征上表現更好;可并行化計算。
在文獻 [5] 中給出了不同層模型(self-attention\RNN\CNN)在層復雜度、序列操作、最大路徑長度的對比,結果如下圖所示。
▲ 文獻5
Multi-Head attention [5]
注意力并行化的代表,縮放點積注意力在前面小節中已經提過,多頭注意力不僅計算一次注意力,而是并行化計算多次注意力,這樣模型可以同時關注多個子空間的信息。計算公式為:
Hierarchical attention
Hierarchical attention (層次注意力)由文獻 [9] 提出,由詞級別、句子級別注意力機制組成,在文檔級別的任務上,往往由多篇章、多句子、多詞語組成,Hierarchical attention 能夠更好捕獲 global 和 local 的信息。
attention over attention
由文獻 [10] 提出,論文研究任務為閱讀理解,AOA 從結構圖(下圖)上來看時 attention 之后再 attention,與 hierarchical attention 有些相似,但是其具體計算卻不同。首先對文檔與當前 query 進行點積注意力,然后從行、列分別對齊進行歸一化,得到兩個注意力權重分布,再次求一次點積注意力。
memory-based attention
memory 中存儲了的鍵值對,當 key 和 value 相同時,就是最基本的 attention 形式。以 Q&A 任務 [11] 為例能夠更好地說明計算,memory 存儲了 question(key)---->>answer(value),現新來一個 question,要依據 memory 中的問題-答案對得到答案。起計算方式為:
計算新來的 question 與歷史 question 的相似度,即
歸一化,
得到新的答案,
網上有一個例子,比較能夠說明問題,不過沒找到最初的來源,如下圖所示:
寫在最后
Attention 的“花樣”真的很多,每次看都有很多新的玩法,不過基本也不脫離最本質的 QKV 結構,期待著有更多研究。
參考鏈接
[1] Neural Machine Translation by Jointly Learning to Align and Translate. https://arxiv.org/abs/1409.0473
[2] https://blog.csdn.net/malefactor/article/details/78767781
[3] Effective approaches to attention-based neural machine translation. https://arxiv.org/abs/1508.04025
[4] Neural Turing Machines. https://arxiv.org/abs/1410.5401
[5] Attention Is All You Need. https://arxiv.org/abs/1706.03762
[6] https://cloud.tencent.com/developer/article/1420941
[7] https://www.jianshu.com/p/270832a34e7f
[8] Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. https://arxiv.org/abs/1502.03044
[9] Hierarchical attention networks for document classification. https://www.aclweb.org/anthology/N16-1174
[10] Attention-over-Attention Neural Networks for Reading Comprehension. https://arxiv.org/abs/1607.04423
[11] End-To-End Memory Networks. https://arxiv.org/abs/1503.08895
更多閱讀
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的Attention注意力机制的前世今身的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 建设银行网上银行如何注销
- 下一篇: 泛化性乱弹:从随机噪声、梯度惩罚到虚拟对