深度學習attention 機制了解


Attention是一種用於提升基於RNN(LSTM或GRU)的Encoder + Decoder模型的效果的的機制(Mechanism),一般稱為Attention Mechanism。Attention Mechanism目前非常流行,廣泛應用於機器翻譯、語音識別、圖像標注(Image Caption)等很多領域,之所以它這么受歡迎,是因為Attention給模型賦予了區分辨別的能力,例如,在機器翻譯、語音識別應用中,為句子中的每個詞賦予不同的權重,使神經網絡模型的學習變得更加靈活(soft),同時Attention本身可以做為一種對齊關系,解釋翻譯輸入/輸出句子之間的對齊關系,解釋模型到底學到了什么知識,為我們打開深度學習的黑箱,提供了一個窗口,如圖1所示。

圖1 NLP中的attention可視化

又比如在圖像標注應用中,可以解釋圖片不同的區域對於輸出Text序列的影響程度。

圖2 圖像標注中的attention可視化

通過上述Attention Mechanism在圖像標注應用的case可以發現,Attention Mechanism與人類對外界事物的觀察機制很類似,當人類觀察外界事物的時候,一般不會把事物當成一個整體去看,往往傾向於根據需要選擇性的去獲取被觀察事物的某些重要部分,比如我們看到一個人時,往往先Attention到這個人的臉,然后再把不同區域的信息組合起來,形成一個對被觀察事物的整體印象。因此,Attention Mechanism可以幫助模型對輸入的X每個部分賦予不同的權重,抽取出更加關鍵及重要的信息,使模型做出更加准確的判斷,同時不會對模型的計算和存儲帶來更大的開銷,這也是Attention Mechanism應用如此廣泛的原因。

有了這些背景知識的鋪墊,接下來就一一介紹下Attention Mechanism其他細節,在接寫來的內容里,我會主要介紹以下一些知識:

 

1. Attention Mechanism原理

1.1 Attention Mechanism主要需要解決的問題

1.2 Attention Mechanism原理

 

2. Attention Mechanism分類

基本attention結構

2.1 soft Attention 與Hard Attention

2.2 Global Attention 和 Local Attention

2.3 Self Attention

組合的attention結構

2.4 Hierarchical Attention

2.5 Attention in Attention

2.3 Multi-Step Attention

 

3. Attention的應用場景

3.1 機器翻譯(Machine Translation)

3.2 圖像標注(Image Captain)

3.3 關系抽取(EntailMent Extraction)

3.4 語音識別(Speech Recognition)

3.5 自動摘要生成(Text Summarization)

1. Attention Mechanism原理

1.1 Attention Mechanism主要需要解決的問題

《Sequence to Sequence Learning with Neural Networks》介紹了一種基於RNN的Seq2Seq模型,基於一個Encoder和一個Decoder來構建基於神經網絡的End-to-End的機器翻譯模型,其中,Encoder把輸入X編碼成一個固定長度的隱向量Z,Decoder基於隱向量Z解碼出目標輸出Y。這是一個非常經典的序列到序列的模型,但是卻存在兩個明顯的問題:

1、把輸入X的所有信息有壓縮到一個固定長度的隱向量Z,忽略了輸入輸入X的長度,當輸入句子長度很長,特別是比訓練集中最初的句子長度還長時,模型的性能急劇下降。

2、把輸入X編碼成一個固定的長度,對於句子中每個詞都賦予相同的權重,這樣做是不合理的,比如,在機器翻譯里,輸入的句子與輸出句子之間,往往是輸入一個或幾個詞對應於輸出的一個或幾個詞。因此,對輸入的每個詞賦予相同權重,這樣做沒有區分度,往往是模型性能下降。

同樣的問題也存在於圖像識別領域,卷積神經網絡CNN對輸入的圖像每個區域做相同的處理,這樣做沒有區分度,特別是當處理的圖像尺寸非常大時,問題更明顯。因此,2015年,Dzmitry Bahdanau等人在《Neural machine translation by jointly learning to align and translate》提出了Attention Mechanism,用於對輸入X的不同部分賦予不同的權重,進而實現軟區分的目的。

 

1.2 Attention Mechanism原理

要介紹Attention Mechanism結構和原理,首先需要介紹下Seq2Seq模型的結構。基於RNN的Seq2Seq模型主要由兩篇論文介紹,只是采用了不同的RNN模型。Ilya Sutskever等人與2014年在論文《Sequence to Sequence Learning with Neural Networks》中使用LSTM來搭建Seq2Seq模型。隨后,2015年,Kyunghyun Cho等人在論文《Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation》提出了基於GRU的Seq2Seq模型。兩篇文章所提出的Seq2Seq模型,想要解決的主要問題是,如何把機器翻譯中,變長的輸入X映射到一個變長輸出Y的問題,其主要結構如圖3所示。

圖3 傳統的Seq2Seq結構

其中,Encoder把一個變成的輸入序列x1,x2,x3....xt編碼成一個固定長度隱向量(背景向量,或上下文向量context)c,c有兩個作用:1、做為初始向量初始化Decoder的模型,做為decoder模型預測y1的初始向量。2、做為背景向量,指導y序列中每一個step的y的產出。Decoder主要基於背景向量c和上一步的輸出yt-1解碼得到該時刻t的輸出yt,直到碰到結束標志(<EOS>)為止。

如上文所述,傳統的Seq2Seq模型對輸入序列X缺乏區分度,因此,2015年,Kyunghyun Cho等人在論文《Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation》中,引入了Attention Mechanism來解決這個問題,他們提出的模型結構如圖4所示。

圖4 Attention Mechanism模塊圖解

在該模型中,定義了一個條件概率:

其中,si是decoder中RNN在在i時刻的隱狀態,如圖4中所示,其計算公式為:

這里的背景向量ci的計算方式,與傳統的Seq2Seq模型直接累加的計算方式不一樣,這里的ci是一個權重化(Weighted)之后的值,其表達式如公式5所示:

其中,i表示encoder端的第i個詞,hj表示encoder端的第j和詞的隱向量,aij表示encoder端的第j個詞與decoder端的第i個詞之間的權值,表示源端第j個詞對目標端第i個詞的影響程度,aij的計算公式如公式6所示:

在公式6中,aij是一個softmax模型輸出,概率值的和為1。eij表示一個對齊模型,用於衡量encoder端的位置j個詞,對於decoder端的位置i個詞的對齊程度(影響程度),換句話說:decoder端生成位置i的詞時,有多少程度受encoder端的位置j的詞影響。對齊模型eij的計算方式有很多種,不同的計算方式,代表不同的Attention模型,最簡單且最常用的的對齊模型是dot product乘積矩陣,即把target端的輸出隱狀態ht與source端的輸出隱狀態進行矩陣乘。常見的對齊計算方式如下:

其中,Score(ht,hs) = aij表示源端與目標單單詞對齊程度。可見,常見的對齊關系計算方式有,點乘(Dot product),權值網絡映射(General)和concat映射幾種方式。

 

https://zhuanlan.zhihu.com/p/31547842

https://blog.csdn.net/jteng/article/details/52864401


免責聲明!

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



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