Encoder-Decoder架構與注意力機制

Encoder-Decoder架構模型,如下圖:

Encoder會利用整個原始句子生成一個語義向量,Decoder再利用這個向量翻譯成其它語言的句子。這樣可以把握整個句子的意思、句法結構、性別信息等等。

Encoder對X 進行非線性變換得到中間語義向量c :

c=G(x_{1},x_{2},...,x_{n})

Decoder根據語義c 和生成的歷史單詞(y_{1},y_{2},...,y_{i-1})生成第i個單詞 y_i :

y_i=f(c,y_1,y_2,...,y_{i-1})

Encoder和Decoder具體使用什麼模型,都可以自己選擇。通常有CNN,RNN,BiRNN,GRU,LSTM, Deep LSTM。

當句子較長時,所有語義完全通過一箇中間語義向量來表示,單詞自身的信息已經消失,會丟失更多的細節信息。

Attention Model的架構如下:

生成每個單詞y_i時,都有各自的語義向量C_i,不再是統一的C 。

y_i=f(C_i,y1,...,y_{i-1})

普通注意力機制

將編碼器和解碼器的隱含狀態用來求解打分函數:

Local-based ,沒有外部的關注對象,自己關注自己。

General, 有外部的關注對象,直接乘積,全連接層。

Concatenation-based, 有關注的對象,先concat或相加再過連接層。

注意力分數經過softmax層:

Soft Attention 是對所有的信息進行加權求和。Hard Attention是選擇最大信息的那一個。若是使用軟性注意力選擇機制,求得編碼器的隱含狀態與歸一化分數的加權平均:

串聯得到帶有注意力的解碼器隱含狀態:

通過注意力隱狀態得到預測概率:

多頭注意力

Multi-head Attention利用多個查詢Q來並行地從輸入信息中選取多個信息。每個注意力關注輸入信息的不同部分。

比如Attention Is All You Need

硬性注意力

硬性注意力是只關注到一個位置上。選取最高概率的輸入信息,在注意力分佈上隨機採樣。

缺點:loss與注意力分佈之間的函數關係不可導,無法使用反向傳播訓練。一般使用軟性注意力。

需要:硬性注意力需要強化學習來進行訓練。

鍵值對注意力

輸入信息:鍵值對(Key, Value)。 Key用來計算注意力分佈\alpha_iValue用來生成選擇的信息。

結構化注意力

如果輸入信息,本身就有層次化的結構,詞、句子、段落、篇章等不同粒度的層次。這時用層次化的注意力來進行更好的信息選擇。

也可以使用一種圖模型,來構建更加複雜的結構化注意力分佈。

指針網絡

指針網絡pointer network是一種序列到序列的模型,用來指出相關信息的位置。也就是隻做第一步。

輸入: X_{1:n}=[x_1,...,x_n]

輸出:c_{1:m}=c_1,c_2,...,c_mc_i∈[1,n] , 輸出是序列的下標。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章