1. 程式人生 > >深度學習中的Attention模型介紹及其進展(attention入門參考文獻 第一篇)

深度學習中的Attention模型介紹及其進展(attention入門參考文獻 第一篇)

1. 基本原理

  Attention模型最初應用於影象識別,模仿人看影象時,目光的焦點在不同的物體上移動。當神經網路對影象或語言進行識別時,每次集中於部分特徵上,識別更加準確。如何衡量特徵的重要性呢?最直觀的方法就是權重,因此,Attention模型的結果就是在每次識別時,首先計算每個特徵的權值,然後對特徵進行加權求和,權值越大,該特徵對當前識別的貢獻就大。 
  機器翻譯中的Attention模型最直觀,易於理解,因為每生成一個單詞,找到源句子中與其對應的單詞,翻譯才準確。此處就以機器翻譯為例講解Attention模型的基本原理。在此之前,需要先介紹一下目前機器翻譯領域應用最廣泛的模型——Encoder-Decoder結構,谷歌最新發布的機器翻譯系統就是基於該框架

[1],並且採用了Attention模型。 
  Encoder-Decoder框架包括兩個步驟,第一步是Encoder,將輸入資料(如影象或文字)編碼為一系列特徵,第二步是Decoder,以編碼的特徵作為輸入,將其解碼為目標輸出。Encoder和Decoder是兩個獨立的模型,可以採用神經網路,也可以採用其他模型。機器翻譯中的Encoder-Decoder示例如下圖(取自[2]): 


該示例將一個句子(ABC)翻譯為另一種語言的句子(WXYZ),其中A、B、C和W、X、Y、Z分別表示一個字或一個單詞,圖中每個方框表示一個RNN模型,不同的方框表示不同的時刻,<eos>表示句子結束。 
  瞭解Encoder-Decoder結構之後,我們再回到Attention模型,Attention在Encoder-Decoder中介於Encoder和Decoder中間,首先根據Encoder和Decoder的特徵計算權值,然後對Encoder的特徵進行加權求和,作為Decoder的輸入,其作用是將Encoder的特徵以更好的方式呈獻給Decoder。

[3]首次將Attention模型應用到機器翻譯中,我們參照下圖對其展開講解。 


圖片名稱 


  該圖將句子(x1,x2,...,xT)(◂,▸x1,x2,...,xT)翻譯為(y1,y2,...,yt,...)(◂,▸y1,y2,...,yt,...),Encoder和Decoder均採用RNN模型,下方的一系列h為Encoder生成的特徵,考慮到句子中單詞的上下文關係,此處採用了雙向RNN模型,所以每個時刻生成的特徵由兩個方向的特徵組合而成,即hi=[hi→;hi←]◂=▸hi=[◂,▸hi→;hi←]。圖中的αt,i◂◽.▸αt,i就是Attention模型生成的權值,在t時刻,對特徵h進行加權組合 
  ct=∑i=1Tαt,ihict=◂∑▸∑i=1T◂◽.▸αt,i⁢hi 
那麼生成新的單詞的過程為 
  p(yt)=RNN(yt−1,st,ct)◂=▸p⁡(yt)=◂⋅▸R⁢N⁢N⁡(◂,▸◂◽.▸yt−1,st,ct) 
如果沒有Attention模型計算權值,那麼該過程就變為 
  c=f(h1,...,hT)◂=▸c=f⁡(◂,▸h1,...,hT) 
  p(yt)=RNN(yt−1,st,c)◂=▸p⁡(yt)=◂⋅▸R⁢N⁢N⁡(◂,▸◂◽.▸yt−1,st,c) 
也就是說,在Decoder的每個時刻,其輸入特徵均是固定的,將所有的輸入x編碼為一個固定的特徵容易造成資訊損失,而且在Decoder的時候,每一個時刻均選取所有特徵,沒有針對性,因此就產生了Attention模型。那麼Attention模型中的權值αα是怎麼計算的呢? 
  αt,i=exp(et,i)∑Tk=1exp(et,k)◂◽.▸αt,i=◂⋅▸e⁢x⁢p⁡(◂◽.▸et,i)◂∑▸∑k=1T◂⋅▸e⁢x⁢p⁡(◂◽.▸et,k) 
  et,i=fatt(st−1,hi)◂=▸◂◽.▸et,i=◂◽.▸fa⁢t⁢t⁡(◂,▸◂◽.▸st−1,hi) 
前面說了那麼多,其實這裡的fatt◂◽.▸fa⁢t⁢t才是Attention模型的核心,它被稱為alignment模型,計算Encoder的特徵與Decoder特徵的對應關係。舉例如下圖: 


圖片名稱 


該圖表示法語到英語的翻譯,圖中的小方格就是表示Attention模型的權值αα的大小,顏色越淺表示權值越大。可以看到,大的權值基本上分佈在對角線上,而在European Economic Area三個單詞處,權值成反對角線分佈,這是因為法語與英語的句法結構不同,這三個單詞的權值依然是對應的,說明Attention模型在這裡準確實現了單詞之間的對應關係。 
  綜上所述,Attention模型就是對輸入特徵進行加權以衡量每個特徵對當前識別的重要性,它自己集中於重要的特徵,忽略不重要的特徵。

2. Attention模型的主要應用

  Attention模型主要應用於深度學習,目前深度學習最熱門的應用就是自然語言理解、影象識別和語音識別三大領域。本文針對三個領域分別列舉幾個Attention模型的應用。

2.1 自然語言理解

  第一節的機器翻譯就是一個非常重要的應用,谷歌在最新發布的機器翻譯模型中就採用了Attention模型,[4]一文中將Attention模型應用到文字摘要,從長句子或段落中提取關鍵詞,如下圖: 


圖片名稱 


華為諾亞方舟實驗室的李航博士將Attention模型應用於短文字對話[5]

2.2 影象識別

  Attention模型在影象識別裡的應用既有影象分類,如[6][7],又有影象生成,如[8][9],個人最感興趣的是影象標題生成[10],如下圖:

該研究中將Attention模型的權值視覺化,顯示在原圖中,即圖中白色的區域,可以看出,圖中的飛盤和狗分別與句子中的frisbee和dog形成了對應關係。

2.3 語音識別

  語音識別的經典模型要數CTC,基於Attention模型的Encoder-Decoder框架也取得了較好的結果,如[11][12],Attention模型也建立了語音與單詞之間的對應關係。 


圖片名稱 

3. 研究進展

  自從Attention模型引入深度學習後,不但獲得了廣泛應用,也產生了很多改進,下面列舉幾個研究進展。 
   [10]首次將Attention模型引入影象標題應用時,提出了兩種Attention方法——soft attention和hard attention,其中soft attention就是最初的attention方法,而hard attention在選取特徵組合時,並不針對所有的特徵生成權值,而是隻選取1個或者幾個特徵,因此是hard的。 
  從Attention中的alignment模型et,i=fatt(st−1,hi)◂=▸◂◽.▸et,i=◂◽.▸fa⁢t⁢t⁡(◂,▸◂◽.▸st−1,hi)可以看出,它實際上是基於Decoder的t-1時刻的狀態預測t時刻狀態與Encoder特徵hihi的關聯程度,在[13]中,首先不使用Attention模型進行Decoder,然後就可以使用Attenion計算t時刻的Decoder狀態與Encoder特徵的關聯程度,et,i=fatt(st,hi)◂=▸◂◽.▸et,i=◂◽.▸fa⁢t⁢t⁡(◂,▸st,hi),並且文章基於bilinear方法提出了簡化版的Attention模型,計算更加高效。 
  在機器翻譯中,存在過翻譯和欠翻譯的現象,即有些詞被多次翻譯,有些詞卻被漏掉,這是因為Attention模型沒有記憶翻譯程序的機制,[14]一文增加了Coverage模型,用於記錄哪些單詞已被翻譯,哪些尚未翻譯,從而使Attention模型專注於未翻譯的單詞,忽略已經翻譯的單詞。 
  在2017年,google的團隊提出一個只基於attention機制的結構來處理序列模型相關的問題[15],沒有采用常見的RNN和CNN網路,該結構能夠並行訓練,大大地減少了訓練時間。

4. 總結

  Attention模型在深度學習的各個領域均取得廣泛的應用,作為一個獨立的框架,attention機制還可以使用更加複雜的網路結構來改善其效果。並且,attention機制尚有不完善之處,如未記憶歷史資訊、缺乏對attention的評價機制等,仍在存在一定的改進空間。