seq2seq+attention解讀


1什么是注意力機制?
Attention是一種用於提升Encoder + Decoder模型的效果的機制。

2.Attention Mechanism原理

要介紹Attention Mechanism結構和原理,首先需要介紹下Seq2Seq模型的結構。Seq2Seq模型,想要解決的主要問題是,如何把機器翻譯中,變長的輸入X映射到一個變長輸出Y的問題,其主要結構如圖3所示。

  

圖3 傳統的Seq2Seq結構

從圖中可以看出,seq2seq模型分為兩個階段:編碼階段和解碼階段。

編碼階段:

把一個變長的輸入序列x1,x2,x3....xt輸入RNN,LSTM或GRU模型,然后將得到各個隱藏層的輸出進行匯總,生成語義向量:

也可以將最后的一層隱藏層的輸出作為語義向量C :

這里的語義向量c有兩個作用:1、做為decoder模型預測y1的初始向量。2、做為語義向量,指導y序列中每一個step的y的產出。

解碼階段:

Decoder主要是基於語義向量c和上一步的輸出yi-1解碼得到該時刻t的輸出yi:

 yi=g(yi-1,Si,C)

其中Si為隱藏層的輸出。其中g代表的是非線性激活函數。

直到碰到結束標志(<EOS>),解碼結束。

以上就是seq2seq的編碼解碼階段。從上面可以看出,該模型存在兩個明顯的問題:

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

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

因此,需要引入Attention Mechanism來解決這個問題。

我們將解碼yi時的公式改為如下形式:

yi=g(yi-1,Si,Ci)

即不同時刻的輸出y使用不同的語義向量。

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

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

其中,i表示decoder端的第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乘積矩陣,即把解碼端的輸出隱狀態ht與編碼端的輸出隱狀態hs進行矩陣乘。常見的對齊計算方式如下:

常見的計算方式有以上幾種方式。點乘(Dot product),權值網絡映射(General)和concat映射幾種方式。


免責聲明!

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



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