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