深度學習中注意力機制

2021-09-02 01:31:04 字數 4723 閱讀 5803

attention機制的本質思想

如果把attention機制從上文講述例子中的encoder-decoder框架中剝離,並進一步做抽象,可以更容易看懂attention機制的本質思想。

圖9 attention機制的本質思想

我們可以這樣來看待attention機制(參考圖9):將source中的構成元素想象成是由一系列的資料對構成,此時給定target中的某個元素query,通過計算query和各個key的相似性或者相關性,得到每個key對應value的權重係數,然後對value進行加權求和,即得到了最終的attention數值。所以本質上attention機制是對source中元素的value值進行加權求和,而query和key用來計算對應value的權重係數。即可以將其本質思想改寫為如下公式:

其中,=||source||代表source的長度,公式含義即如上所述。上文所舉的機器翻譯的例子裡,因為在計算attention的過程中,source中的key和value合二為一,指向的是同乙個東西,也即輸入句子中每個單詞對應的語義編碼,所以可能不容易看出這種能夠體現本質思想的結構。

當然,從概念上理解,把attention仍然理解為從大量資訊中有選擇地篩選出少量重要資訊並聚焦到這些重要資訊上,忽略大多不重要的資訊,這種思路仍然成立。聚焦的過程體現在權重係數的計算上,權重越大越聚焦於其對應的value值上,即權重代表了資訊的重要性,而value是其對應的資訊。

從圖9可以引出另外一種理解,也可以將attention機制看作一種軟定址(soft addressing):source可以看作儲存器內儲存的內容,元素由位址key和值value組成,當前有個key=query的查詢,目的是取出儲存器中對應的value值,即attention數值。通過query和儲存器內元素key的位址進行相似性比較來定址,之所以說是軟定址,指的不像一般定址只從儲存內容裡面找出一條內容,而是可能從每個key位址都會取出內容,取出內容的重要性根據query和key的相似性來決定,之後對value進行加權求和,這樣就可以取出最終的value值,也即attention值。所以不少研究人員將attention機制看作軟定址的一種特例,這也是非常有道理的。

至於attention機制的具體計算過程,如果對目前大多數方法進行抽象的話,可以將其歸納為兩個過程:第乙個過程是根據query和key計算權重係數,第二個過程根據權重係數對value進行加權求和。而第乙個過程又可以細分為兩個階段:第乙個階段根據query和key計算兩者的相似性或者相關性;第二個階段對第一階段的原始分值進行歸一化處理;這樣,可以將attention的計算過程抽象為如圖10展示的三個階段。

圖10 三階段計算attention過程

在第乙個階段,可以引入不同的函式和計算機制,根據query和某個,計算兩者的相似性或者相關性,最常見的方法包括:求兩者的向量點積、求兩者的向量cosine相似性或者通過再引入額外的神經網路來求值,即如下方式:

第一階段產生的分值根據具體產生的方法不同其數值取值範圍也不一樣,第二階段引入類似softmax的計算方式對第一階段的得分進行數值轉換,一方面可以進行歸一化,將原始計算分值整理成所有元素權重之和為1的概率分布;另一方面也可以通過softmax的內在機制更加突出重要元素的權重。即一般採用如下公式計算:

第二階段的計算結果即為對應的權重係數,然後進行加權求和即可得到attention數值:

通過如上三個階段的計算,即可求出針對query的attention數值,目前絕大多數具體的注意力機制計算方法都符合上述的三階段抽象計算過程。

self attention模型

通過上述對attention本質思想的梳理,我們可以更容易理解本節介紹的self attention模型。self attention也經常被稱為intra attention(內部attention),最近一年也獲得了比較廣泛的使用,比如google最新的機器翻譯模型內部大量採用了self attention模型。

在一般任務的encoder-decoder框架中,輸入source和輸出target內容是不一樣的,比如對於英-中機器翻譯來說,source是英文句子,target是對應的翻譯出的中文句子,attention機制發生在target的元素query和source中的所有元素之間。而self attention顧名思義,指的不是target和source之間的attention機制,而是source內部元素之間或者target內部元素之間發生的attention機制,也可以理解為target=source這種特殊情況下的注意力計算機制。其具體計算過程是一樣的,只是計算物件發生了變化而已,所以此處不再贅述其計算過程細節。

如果是常規的target不等於source情形下的注意力計算,其物理含義正如上文所講,比如對於機器翻譯來說,本質上是目標語單詞和源語單詞之間的一種單詞對齊機制。那麼如果是self attention機制,乙個很自然的問題是:通過self attention到底學到了哪些規律或者抽取出了哪些特徵呢?或者說引入self attention有什麼增益或者好處呢?我們仍然以機器翻譯中的self attention來說明,圖11和圖12是視覺化地表示self attention在同乙個英語句子內單詞間產生的聯絡。

圖11 視覺化self attention例項

圖12 視覺化self attention例項

從兩張圖(圖11、圖12)可以看出,self attention可以捕獲同乙個句子中單詞之間的一些句法特徵(比如圖11展示的有一定距離的短語結構)或者語義特徵(比如圖12展示的its的指代物件law)。

很明顯,引入self attention後會更容易捕獲句子中長距離的相互依賴的特徵,因為如果是rnn或者lstm,需要依次序序列計算,對於遠距離的相互依賴的特徵,要經過若干時間步步驟的資訊累積才能將兩者聯絡起來,而距離越遠,有效捕獲的可能性越小。

但是self attention在計算過程中會直接將句子中任意兩個單詞的聯絡通過乙個計算步驟直接聯絡起來,所以遠距離依賴特徵之間的距離被極大縮短,有利於有效地利用這些特徵。除此外,self attention對於增加計算的並行性也有直接幫助作用。這是為何self attention逐漸被廣泛使用的主要原因。

attention機制的應用

前文有述,attention機制在深度學習的各種應用領域都有廣泛的使用場景。上文在介紹過程中我們主要以自然語言處理中的機器翻譯任務作為例子,下面分別再從影象處理領域和語音識別選擇典型應用例項來對其應用做簡單說明。

圖13 -描述任務的encoder-decoder框架

描述(image-caption)是一種典型的**結合的深度學習應用,輸入一張,人工智慧系統輸出一句描述句子,語義等價地描述所示內容。很明顯這種應用場景也可以使用encoder-decoder框架來解決任務目標,此時encoder輸入部分是一張,一般會用cnn來對進行特徵抽取,decoder部分使用rnn或者lstm來輸出自然語言句子(參考圖13)。

此時如果加入attention機制能夠明顯改善系統輸出效果,attention模型在這裡起到了類似人類視覺選擇性注意的機制,在輸出某個實體單詞的時候會將注意力焦點聚焦在中相應的區域上。圖14給出了根據給定生成句子「a person is standing on a beach with a surfboard.」過程時每個單詞對應中的注意力聚焦區域。

圖14 生成句子中每個單詞時的注意力聚焦區域

圖15給出了另外四個例子形象地展示了這種過程,每個例子上方左側是輸入的原圖,下方句子是人工智慧系統自動產生的描述語句,上方右側圖展示了當ai系統產生語句中劃橫線單詞的時候,對應中聚焦的位置區域。比如當輸出單詞dog的時候,ai系統會將注意力更多地分配給中小狗對應的位置。

圖15 影象描述任務中attention機制的聚焦作用                     

圖16 語音識別中音訊序列和輸出字元之間的attention

語音識別的任務目標是將語音流訊號轉換成文字,所以也是encoder-decoder的典型應用場景。encoder部分的source輸入是語音流訊號,decoder部分輸出語音對應的字串流。

圖16視覺化地展示了在encoder-decoder框架中加入attention機制後,當使用者用語音說句子 how much would a woodchuck chuck 時,輸入部分的聲音特徵訊號和輸出字元之間的注意力分配概率分布情況,顏色越深代表分配到的注意力概率越高。從圖中可以看出,在這個場景下,attention機制起到了將輸出字元和輸入語音頻號進行對齊的功能。

深度學習 注意力機制

李巨集毅ml self attention ppt筆記 任務 輸入乙個向量序列 v1,v2,vn 輸出乙個相同長度的向量序列,如詞性標註 輸出乙個向量,如情感分析 輸出任意長度的向量序列,seq2seq 比如考慮序列標註問題,不能孤立看乙個個輸入的向量,而是要考慮整個序列。self attentio...

注意力機制

從網路結構本身的角度出發,可以從以下四個維度來提公升卷積神經網路的效能,分別是 深度 resnet 寬度 wideresnet 基數 resnext 和注意力 senet 一般來說,網路越深,所提取到的特徵就越抽象 網路越寬,其特徵就越豐富 基數越大,越能發揮每個卷積核獨特的作用 而注意力則是一種能...

注意力機制

深度學習中的attention,源自於人腦的注意力機制,當人的大腦接受到外部資訊,如視覺資訊 聽覺資訊時,往往不會對全部資訊進行處理和理解,而只會將注意力集中在部分顯著或者感興趣的資訊上,這樣有助於濾除不重要的資訊,而提最早將attention利用在影象處理上的出發點是,希望通過乙個類似於人腦注意力...