在Encoder-Decoder框架中加入Attention機制
Attention-based模型最早見於圖像識別問題,之後在自然語言處理(例如翻譯)中大放異彩。
以翻譯問題為例,在傳統的Encoder-Decoder框架中,編碼器會將輸入序列 轉化為一個中間序列c,再由解碼器將c轉化為輸出序列 . 在解碼的過程中,每一步生成的 所利用的中間序列c都是固定的. 這與人的行為模式不同. 例如將英文He is a student翻譯為中文「他是個學生」中,在翻譯「他」時,顯然應該給予He更高的權重,而不是對原句的每個單詞都給予同樣的權重。Attention-based模型框架就是在Encoder-Decoder框架上進行改進,每一步輸出時使用的中間序列是動態調整的——每一次對輸入序列的每個元素都給予了不同的權重分配. 這就好像人的「注意力」,會隨著問題的不同、對觀察的內容的不同部分給予不同的關注度.
讓我們先從Encoder-Decoder框架開始,如下圖(來自論文[1]):
編碼器(Encoder)將輸入序列 中間序列c;編碼器通常可以為RNN結構,那麼其隱藏層狀態為 ,編碼為中間序列的過程可表示為:
.
解碼器通常也是RNN結構,對於第t步的輸出 ,解碼器通過中間序列c和前一步的輸出 得到 .
在RNN結構中,每一步的概率可表示為:
其中 是隱藏層狀態, 是固定不變的.
注意,前述的Encoder-Decoder是一種框架,我們並未限定Encoder或Decoder的具體結構.
Attention-based框架與傳統的Encoder-Decoder框架的差異在於,c並非固定不變的.
在解碼器中,第t步的輸出 的概率是:
其中 是輸出網路中第t步的隱藏層的狀態,可表示為:
其中 與傳統的Encoder-Decoder框架中的c不同,它與 的關係並非固定的,而是動態變化的. 的計算可表示為:
其中 是輸入網路中第j步的隱藏層的狀態, 是的權重. 在輸出網路的第t步, 之和為1. 的計算可表示為:
那麼問題最後就歸結為 的計算. 在Attention-based模型中, 的存在是為了衡量 和 之間的相關性,如相關性越高,則「注意力」就應當越集中在輸入中 位置附近的元素,亦即給予這部分元素更高的權重. 在論文[1]中, 的模型被稱為校準模型(alignment model),可表示為:
其中 , 和 是權重矩陣,可以與整個模型共同訓練. 不同論文中,對 的計算方法不同.
整個模型的結構可以用下圖表示,此圖同樣來自論文[1]. 圖中連接 的節點就是 :
圖中輸入網路的隱藏層 是雙向RNN結構的隱藏層,不是本文Attention-based模型的重點,這裡就不詳說了.
小結一下,在Encoder-Decoder框架中加入Attention機制後的模型可總結為如下公式:
[1] Bahdanau, D., Cho, K., & Bengio, Y. (2014). Neural machine translation by jointly learning to align and translate. Computer Science
推薦閱讀:
※從下往上看--新皮層資料的讀後感 第十一部分 hopfield-記憶的兩面
※從下往上看--新皮層資料的讀後感 第一部分:皮層細胞
※深度神經網路(DNN)
※玩轉 TensorFlow Playground
※Paper Reading | 讓機器像人類一樣學畫畫?GANs 「全家福」一覽
TAG:深度學習DeepLearning | 神經網路 |