1. 程式人生 > >深度學習中的Attention模型介紹及其進展

深度學習中的Attention模型介紹及其進展

  近期對深度學習中的Attention模型進行了深入研究,該模型在影象識別、語音識別和自然語言處理三大深度學習的熱門領域均有廣泛的使用,是2014和2015年深度學習領域的重要進展。現對其原理、主要應用及研究進展進行詳細介紹。

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)翻譯為(y1,y2,...,yt,...),Encoder和Decoder均採用RNN模型,下方的一系列h為Encoder生成的特徵,考慮到句子中單詞的上下文關係,此處採用了雙向RNN模型,所以每個時刻生成的特徵由兩個方向的特徵組合而成,即hi=[hi;hi]。圖中的αt,i就是Attention模型生成的權值,在t時刻,對特徵h進行加權組合
  
ct=i=1Tαt,ihi

那麼生成新的單詞的過程為
  p(yt)=RNN(yt1,st,ct)
如果沒有Attention模型計算權值,那麼該過程就變為
  c=f(h1,...,hT)
  p(yt)=RNN(yt1,st,c)
也就是說,在Decoder的每個時刻,其輸入特徵均是固定的,將所有的輸入x編碼為一個固定的特徵容易造成資訊損失,而且在Decoder的時候,每一個時刻均選取所有特徵,沒有針對性,因此就產生了Attention模型。那麼Attention模型中的權值α是怎麼計算的呢?
  αt,i=exp(et,i)k=1Texp(et,k)
  et,i=fatt(st1,hi)
前面說了那麼多,其實這裡的fatt才是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(st1,hi)可以看出,它實際上是基於Decoder的t-1時刻的狀態預測t時刻狀態與Encoder特徵hi的關聯程度,在[13]中,首先不使用Attention模型進行Decoder,然後就可以使用Attenion計算t時刻的Decoder狀態與Encoder特徵的關聯程度,

深度學習基於tensorflow_slim進行復雜模型訓練三之TFRecords的介紹

一、TFRecords的資料結構 TFRecords資料集是一種二進位制的資料集,是tensorflow推薦的標準檔案格式。Tensorflow通過ProtocolBuffers定義了TFRecords檔案中儲存的記錄及其所含的欄位結構,使用該方式可以將資料,標籤以及和資料相關的資訊通過ke

深度學習基於tensorflow_slim進行復雜模型訓練一之tensorflow_slim基本介紹

最近在進行微表情識別,但是目前沒有查到比較有效的模型方式,考慮使用inception_v3的模型進行開發,但是該模的構造過程比較複雜,訓練更是麻煩,因此考慮基於tensorflow_slim的模組進行二次訓練,首先介紹一下關於tensorflow_slim的基本模組。 tensorflow_

深度學習的序列模型演變及學習筆記(含RNN/LSTM/GRU/Seq2Seq/Attention機制)

【說在前面】本人部落格新手一枚,象牙塔的老白,職業場的小白。以下內容僅為個人見解,歡迎批評指正,不喜勿噴![認真看圖][認真看圖] 【補充說明】深度學習中的序列模型已經廣泛應用於自然語言處理(例如機器翻譯等)、語音識別、序列生成、序列分析等眾多領域! 【再說一句】本文主要介紹深度學習中序列模型的演變路徑,和往

深度學習的注意力模型(2017版)

摘自 張俊林 https://zhuanlan.zhihu.com/p/37601161 注意力模型最近幾年在深度學習各個領域被廣泛使用,無論是影象處理、語音識別還是自然語言處理的各種不同型別的任務中,都很容易遇到注意力模型的身影。所以,瞭解注意力機制的工作原理對於關注深度

深度學習的Normalization模型

作者:張俊林,新浪微博AI Lab擔任資深演算法專家 注:小白想系統整理一些深度學習相關的理論知識,如有侵權請聯絡刪除。 Batch Normalization(簡稱BN)自從提出之後,因為效果特別好,很快被作為深度學習的標準工具應用在了各種場合。BN大法雖然好,但是

[優化]深度學習的 Normalization 模型

來源:https://www.chainnews.com/articles/504060702149.htm 機器之心專欄 作者:張俊林 Batch Normalization (簡稱 BN)自從提出之後,因為效果特別好,很快被作為深度學習的標準工具應用在了各種場合。BN 大法雖然好,但是也存

深度學習基於tensorflow_slim進行復雜模型訓練二之tensorflow_slim的使用

上篇部落格主要介紹了tensorflow_slim的基本模組,本篇主要介紹一下如何使用該模組訓練自己的模型。主要分為資料轉化,資料讀取,資料預處理,模型選擇,訓練引數設定,構建pb檔案,固化pb檔案中的引數幾部分。 一、資料轉化: 主要目的是將圖片轉化為TFrecords檔案,該部分屬於

基於深度學習的目標檢測演算法及其在醫學影像的應用

(自己寫的,需要轉載請聯絡作者,或者標明出處呀) 摘要:目標檢測是計算機視覺中一個重要問題,在行人跟蹤、車牌識別、無人駕駛等領域都具有重要的研究價值。近年來,隨著深度學習對影象分類準確度的大幅度提高,基於深度學習的目標檢測演算法逐漸成為主流。本文介紹了目前發展迅猛的深度

深度 | 機器學習模型評價、模型選擇及演算法選擇

作者:Sebastian Raschka翻譯:reason_W編輯:周翔簡介正確使用模型評估、模

深度學習筆記——Attention Model(注意力模型學習總結

深度學習裡的Attention model其實模擬的是人腦的注意力模型,舉個例子來說,當我們觀賞一幅畫時,雖然我們可以看到整幅畫的全貌,但是在我們深入仔細地觀察時,其實眼睛聚焦的就只有很小的一塊,這個時候人的大腦主要關注在這一小塊圖案上,也就是說這個時候人腦對整幅圖的關注並

深度學習attention機制

最近兩年,注意力模型(Attention Model)被廣泛使用在自然語言處理、影象識別及語音識別等各種不同型別的深度學習任務中,是深度學習技術中最值得關注與深入瞭解的核心技術之一。本文以機器翻譯為例,深入淺出地介紹了深度學習中注意力機制的原理及關鍵計算機制,同時也抽象出其本

深度學習的注意力機制(Attention Model)

目錄 注意力模型最近幾年在深度學習各個領域被廣泛使用,無論是影象處理、語音識別還是自然語言處理的各種不同型別的任務中,都很容易遇到注意力模型的身影。所以,瞭解注意力機制的工作原理對於關注深度學習技術發展的技術人員來說有很大的必要。 一、人類的視

深度學習的數學與技巧(7):特徵值和特徵向量的幾何意義、計算及其性質

一、特徵值和特徵向量的幾何意義 特徵值和特徵向量確實有很明確的幾何意義,矩陣(既然討論特徵向量的問題,當然是方陣,這裡不討論廣義特徵向量的概念,就是一般的特徵向量)乘以一個向量的結果仍是同維數的一個向量。因此,矩陣乘法對應了一個變換,把一個向量變成同維數的另一個向量。

深度學習神經網路模型的量化

深度學習神經網路模型中的量化是指浮點數用定點數來表示,也就是在DSP技術中常說的Q格式。我在以前的文章(Android手機上Audio DSP頻率低 memory小的應對措施 )中簡單講過Q格式,網上也有很多講Q格式的,這裡就不細講了。神經網路模型在訓練時都是浮點運算的,得到的模型引數也是浮點的。通常模型引數

資深程序員帶你玩轉深度學習的正則化技術(附Python代碼)!

c51 進行 ros batch num 簡單的 oat 深度學習 repr 目錄 1. 什麽是正則化? 2. 正則化如何減少過擬合? 3. 深度學習中的各種正則化技術: L2和L1正則化 Dropout 數據增強(Data augmentation) 提前停止(Ear

卷積在深度學習的作用(轉自http://timdettmers.com/2015/03/26/convolution-deep-learning/)

範圍 SM 全連接 判斷 contact con 發展 .dsp length 卷積可能是現在深入學習中最重要的概念。卷積網絡和卷積網絡將深度學習推向了幾乎所有機器學習任務的最前沿。但是,卷積如此強大呢?它是如何工作的?在這篇博客文章中,我將解釋卷積並將其與其他概念聯系起來