注意力機制【1】-入門篇


注意力機制近幾年比較熱,在圖像識別、圖像翻譯、語音識別、文本摘要、機器翻譯等各個領域都有應用,特別是 NLP領域效果很好,本文旨在闡述其基本原理。

 

研究背景

當前神經網絡的問題

算力問題:計算量太大,硬件無法支持,或者計算速度較慢

長序列問題:在處理序列問題時,當前的預測目標如果跟前一刻的狀態很相關,則容易預測,如果跟很久之前的狀態相關,即使引入了 記憶機制,也較難預測,

舉個例子,文本預測,

我愛籃球,如果預測 我()籃球,很明顯,括號內很可能是 愛,

我今天看了場NBA,很有靈感,想去打籃球,如果預測 我()籃球,很難預測了

問題啟發

在深度學習領域,或者說算法領域、AI領域很多問題都借鑒了人類處理問題的方式,注意力機制也是如此

人類的視覺注意力

當人類在看東西時,一般會將注意力聚焦在某些區域,而不是關注所有區域,這使得人類視覺能夠快速捕捉有效信息,如下圖

圖中有貓、有草、有石頭,但人類往往只關注貓

人類的語言注意力

人類在閱讀或者說話時,會自動忽略低可能、低價值的文字,比如我們看到一個錯別字,直接忽略,也來張圖

圖中有亂序、錯字,但不影響我們閱讀

 

所以,注意力機制就是 通過 某種方式 將 注意力放在重點信息上,從而快速有效地完成任務

 

Encode-Decode 框架

當前大部分Attention模型是基於Encode-Decode框架的,需要強調的是:

1. Encode-Decode框架 是一種思想,不單指自編碼器,其可以是 NN、CNN、RNN、LSTM的隨意組合

2. Attention 模型也是一種思想,其不依賴於任何框架

 

Encode-Decode框架是深度學習領域的一種研究模式,應用十分廣泛,下圖為常規的Encode-Decode 框架

以NLP任務來解釋這張圖,圖中給出(x,y),訓練好模型后,給出x,即可預測y,

如果x是中文,y是英語,模型就是機器翻譯,

如果x是問題,y是答案,模型就是對話機器人,

如果x是文章,y是摘要,模型就是文本摘要,

 

在實際預測時,yi是一個一個預測的,即

yi=g(C,y1,y2…yi-1)

其中C是語義編碼,它是解碼器的直接輸入

C=f(x1,x2,..xn)

 

存在問題

在預測不同時刻的y時,其輸入C都是相同的,是對全體x的高度抽象,但實際上不同時刻的y可能只與某幾個時刻的x相關,

比如情感分析,評論一堆,可能只看到很差二字,就可預測為負面評價,而全體文字一視同仁,很可能弱化很差二字,導致預測錯誤

 

故上述Encode-Decode 框架也被稱為注意力不集中的 分心模型

 

Attention 模型

Encode-Decode 框架的問題在於C不變,那解決方法很簡單,預測不同時刻的yi時C變化不就行了,如下圖

Attention 模型是對Encode-Decode 框架的擴展,

下面以中英翻譯來解釋上圖

X:Tom chase Jerry

y:湯姆追逐傑瑞

顯然,翻譯 湯姆 時只與 Tom 有關,翻譯 追逐 時與 chase 和 Tom 有關,等,

翻譯過程用數學公式表達如下

y1=f1(c1)

y2=f1(c2,y1)

y3=f1(c3,y1,y2)

其中f1代表解碼器

ci代表x中不同單詞注意力分配不同權重概率的語義編碼

ci=g(aij, hj)

c1=g(0.6*f2(Tom), 0.2*f2(chase), 0.2*f2(Jerry))

c2=g(0.2*f2(Tom), 0.7*f2(chase), 0.1*f2(Jerry))

c3=g(0.3*f2(Tom), 0.2*f2(chase), 0.5*f2(Jerry))

其中f2代表編碼器,g代表將x中的多個單詞轉換成句子的一種變換函數通常是加權求和

ci代表預測y第i個單詞時解碼器的輸入,

aij表示預測y第i個單詞時與x第j個單詞的相關度,

hj表示x第j個單詞的編碼器的輸出,隱層狀態,語義編碼,

len(x)表示x的單詞數量

 

求 C 過程總結為下圖

 

那么 aij 是如何得到的呢?

aij是個概率,代表權重,反映了hj對ci的重要性,可用softmax表示

其中

eij=F(Hi,hj) 也有這么寫的 eij=F(Hi-1,hj)  

F 是打分函數,用於計算hj和Hi的相似度,   【這個在以前的 NLP 算法中類似 單詞對齊模型

Hi代表y第i個單詞的解碼器的隱層狀態

由於在計算ci時Hi還沒有Hi,故用Hi-1代替

 

這里的相似度計算比較開放,可以是簡單的相關性計算,也可以是一個神經網絡模型

常用方法如下

 

求 aij 過程總結為下圖

 

綜上,帶有注意力機制的 Encode-Decode 框架總結如下面幾張圖

 

注意力模型 按不同維度可分為很多類,以上介紹的是經典的 Soft-Attention 模型,是最常用的模型 。

 

下圖可視化地展示了【在英語-德語翻譯系統】中加入Attention機制后,Source和Target兩個句子每個單詞對應的注意力分配概率分布

 

Attention 的本質

實際上,Attention 機制是一種思想,只要是對輸入有選擇、有區別的對待都可認為是注意力機制,

我們脫離Encode-Decode 框架,更容易看清 Attention 的本質

我們將 Source(x)的數據想象成一系列 (key,value),當給定 Target(y) 中的某個元素 Query,我們先根據 Query 和 key 計算得到一個相似性或者叫權重W,然后和 value 進行加權求和 到得 attention;

只是有的時候,key 和 value 是一個東西,比如 機器翻譯

 

求 attention 過程總結如下圖

比較火的 Transformer 中主要運用的 就是 Query、Key和Value三個矩陣

 

形象解釋

想象一下相親畫面,我心中有個喜歡女孩的樣子,我按照心目中的形象瀏覽各個女孩的照片,如果女生的樣貌符合我心中的樣子,我會注意到這個人,並安排稍微長一點的時間閱讀她的資料,反之我就會安排少一點時間。

這樣我就能將“注意力”放在滿足條件的候選人身上了。

我心中女神的樣子就是Query,我拿着Query去和所有的候選人(key)做對比,得到一個要注意力(attention),根據這個注意力大小判斷我要花多久時間閱讀候選人的材料(Value)。這個就是Transform的注意力方式。

 

注意力模型分類

按注意力的可微性,可分為:

  • Hard-Attention,就是0/1問題,某個區域要么被關注,要么不關注,這是一個不可微的注意力;
  • Soft-Attention,[0,1]間連續分布問題,用0到1的不同分值表示每個區域被關注的程度高低,這是一個可微的注意力。

按注意力的關注域,可分為:

  • 空間域(spatial domain)
  • 通道域(channel domain)
  • 層域(layer domain)
  • 混合域(mixed domain)
  • 時間域(time domain)

還有 self-attention 機制,多頭注意力等等,后面再講吧

 

漲見識

上圖為Google於2016年部署到線上的基於神經網絡的機器翻譯系統,相對傳統模型翻譯效果有大幅提升,翻譯錯誤率降低了60%,

其架構就是上文所述的加上Attention機制的Encoder-Decoder框架,主要區別無非是其Encoder和Decoder使用了8層疊加的LSTM模型 

 

 

好圖收集

 

 

 

 

 

參考資料:

https://blog.csdn.net/xiaobian_/article/details/108672303  神經網絡注意力機制    入門級,簡單易懂

https://zhuanlan.zhihu.com/p/37601161   深度學習中的注意力機制(2017版)

https://my.oschina.net/u/876354/blog/3061863  大話注意力機制(Attention Mechanism)

https://zhuanlan.zhihu.com/p/66076731  神經網絡中的注意力機制

https://blog.csdn.net/hei653779919/article/details/103360587  圖注意力機制神經網絡基本原理和代碼解讀

https://www.cnblogs.com/databingo/p/9769928.html  神經網絡中注意力機制概述

 

https://zhuanlan.zhihu.com/p/135970560  全面解析RNN,LSTM,Seq2Seq,Attention注意力機制

https://www.jiqizhixin.com/articles/100902  什么是自注意力機制

https://www.zhihu.com/question/395862913  神經網絡中的注意力機制該如何訓練呢?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM