Encoder-Decoder
架構模型,如下圖:
Encoder會利用整個原始句子生成一個語義向量
,Decoder再利用這個向量翻譯成其它語言的句子。這樣可以把握整個句子的意思、句法結構、性別信息等等。
Encoder對X 進行非線性變換得到中間語義向量c
:
Decoder根據語義c 和生成的歷史單詞來生成第個單詞 :
Encoder和Decoder具體使用什麼模型,都可以自己選擇。通常有CNN,RNN,BiRNN,GRU,LSTM, Deep LSTM。
當句子較長時,所有語義完全通過一箇中間語義向量來表示,單詞自身的信息已經消失,會丟失更多的細節信息。
Attention Model的架構如下:
生成每個單詞時,都有各自的語義向量,不再是統一的C 。
普通注意力機制
將編碼器和解碼器的隱含狀態用來求解打分函數:
Local-based
,沒有外部的關注對象,自己關注自己。
General
, 有外部的關注對象,直接乘積,全連接層。
Concatenation-based
, 有關注的對象,先concat或相加再過連接層。
注意力分數經過softmax層:
Soft Attention
是對所有的信息進行加權求和。Hard Attention
是選擇最大信息的那一個。若是使用軟性注意力選擇機制,求得編碼器的隱含狀態與歸一化分數的加權平均:
串聯得到帶有注意力的解碼器隱含狀態:
通過注意力隱狀態得到預測概率:
多頭注意力
Multi-head Attention
利用多個查詢Q來並行地從輸入信息中選取多個信息。每個注意力關注輸入信息的不同部分。
硬性注意力
硬性注意力是只關注到一個位置上
。選取最高概率的輸入信息,在注意力分佈上隨機採樣。
缺點:loss與注意力分佈之間的函數關係不可導,無法使用反向傳播訓練。一般使用軟性注意力。
需要:硬性注意力需要強化學習來進行訓練。
鍵值對注意力
輸入信息:鍵值對(Key, Value)
。 Key用來計算注意力分佈 ,Value
用來生成選擇的信息。
結構化注意力
如果輸入信息,本身就有層次化的結構,詞、句子、段落、篇章等不同粒度的層次。這時用層次化的注意力
來進行更好的信息選擇。
也可以使用一種圖模型,來構建更加複雜的結構化注意力分佈。
指針網絡
指針網絡pointer network
是一種序列到序列的模型,用來指出相關信息的位置。也就是隻做第一步。
輸入:
輸出: ,∈[1,n] , 輸出是序列的下標。