完全基於卷積神經網絡的seq2seq


本文參考文獻:
Gehring J, Auli M, Grangier D, et al. Convolutional Sequence to Sequence Learning[J]. arXiv preprint arXiv:1705.03122, 2017.
被引次數:13
 
Dauphin Y N, Fan A, Auli M, et al. Language modeling with gated convolutional networks[J]. arXiv preprint arXiv:1612.08083, 2016.
被引次數:24
 
今天要講的一個模型是由Facebook 人工智能研究院提出來的完全基於卷積 神經網絡的seq2seq框架,seq2seq我在之前的推送中已經講過好多次了,傳統的seq2seq模型是基於RNN來實現的,特別是LSTM,這就帶來了計算量復雜的問題。Facebook作出大膽改變,將編碼器、解碼器、注意力機制甚至是記憶單元全部替換成卷積神經網絡,想法是不是簡單粗暴?雖然單層CNN只能看到固定范圍的上下文,但是將多個CNN疊加起來就可以很容易將有效的上下文范圍放大。Facebook將此模型成功地應用到了英語-法語機器翻譯、英語-德語機器翻譯,不僅刷新了二者前期的記錄,而且還將訓練速度提高了一個數量級,無論是GPU還是CPU上。
 
在詳細開始介紹Facebook的conv seq2seq模型之前,我們需要回顧一下Gated CNN,這個同樣是Facebook在去年底提出來的用於語言建模的模型。
 
用於語言建模的Gated CNN模型如下圖所示,可以看到,最上層的word embedding操作與傳統的語言建模沒有區別,緊接着就是對這些embedding向量划分時間窗並做卷積操作,注意這里使用了兩個卷積神經網絡,這兩個神經網絡中的其中一個通過激活函數一個與另外一個進行相乘,得到最終的輸出。說到這里,應該有讀者已經發現了其中一個卷積神經網絡的功能就是充當了閘門的作用,即控制着多少有用的信息作為最終的輸出。同時,實驗結果也表明Gated CNN在WikiText-103上取得了較好的效果。
 

在conv seq2seq這篇文章中,也使用了Gated CNN以及Residual connection,文中的模型結構圖如下所示,下面我來仔細說明一下這里的計算細節。
 

對於編碼器,原始的單詞首先需要經過embedding層得到其相應的embedding向量,然后將embedding向量作為Gated CNN的輸入,這里需要注意的是,為了保證經過卷積操作之后與之前的輸入長度一致,卷積需要做pad操作。模型中有兩個地方都使用到了GLU(Gated Linear Unit),我在圖中已經用紅色字眼標出,編碼器的embedding和解碼器的embedding分別通過各自的GLU單元得到各自的分布式狀態,將兩個狀態矩陣進行點乘即可得到注意力權重,圖中已用紅色字體Attention標出,具體的注意力權重的計算如下公式所示:
 

 
注意到圖中編碼器的embedding和編碼器的狀態進行相加,並且乘上注意力權重,得到的結果文中稱之為條件輸入c,這里我們可以對比傳統的注意力機制,傳統的注意力機制是直接將注意力權重和編碼器的狀態進行相乘,而這里引入了embedding量,文中解釋是因為embedding可以在做預測的時候可以結合具體元素的信息,增加了位置感,條件輸入c的計算如下圖公式所示:

 
將條件輸入c加上解碼器的狀態,即可得到輸出序列的概率,以上就是conv seq2seq的模型結構。作者最終在機器翻譯上相比其他RNN的模型速度提高了近10倍!


免責聲明!

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



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