模型匯總17 基於Depthwise Separable Convolutions的Seq2Seq模型_SliceNet原理解析
1、問題提出
基於RNN(LSTM、GRU)的Seq2Seq模型在自然語言處理領域取得了巨大成功,特別是對機器翻譯領域,神經機器翻譯(NMT)已經完全替代了以前的統計(SMT)。但基於RNN的Seq2Seq有2個致命缺點:1、基於sequence中t-i的context計算t時刻估計,不適合併行計算,因此計算效率低;2、基於attention來計算source language與target language之間的對齊關係(alignment relation),但對中文省略部分詞語,特別是口語中,attention計算並不準確,attention會把target中的詞對應到省略詞的上一個詞或下一個詞上,此時,會出現漏譯情況。比如:
今天(我們)一起去逛街吧 -> Today go shopping together
正確的翻譯應該是:Today, We go shopping together。我們被省略掉了,attention把對齊關係把主語對齊到今天上面了。
FaceBook提出了完全基於Convolution的Seq2Seq模型,採用非局部的層疊卷積方式來建模輸入sequence中詞與詞的dependency關係。但基於傳統卷積的seq2seq模型也有兩個明顯缺點:1、參數多,計算複雜度高,Batchsize、隱層神經元數目都不能設大,特別在decoder端非常明顯;2、模型不容易訓練:encoder或decoder層疊卷積層數目超過10層,模型很容易訓飛,收斂時間長。
為了處理這個問題,基於Xception結構和mobileNets的Depthwise separable convolution結構,處理這個問題。
獲取最新消息鏈接:獲取最新消息快速通道 - lqfarmer的博客 - 博客頻道 - CSDN.NET
2、本文的主要貢獻
(1)、在本文中,採用一種深度可分離卷積的網路結構,搭建Seq2Seq模型,用於神經機器翻譯(NMT)。深度可分離卷積(Depthwise Separable Convolution)減少了卷積操作中所需參數數目,降低模型的計算量(computation),同時提升了模型的表述能力(representational efficiency)。最近,Convolutional Seq2Seq在機器翻譯領域取得不錯的結果。
(2)、提出了一種新的網路結構SliceNet,其設計原理受到Xception 和ByteNet啟發。優點:儘可能減少模型的參數,降低計算量。當與ByteNet對比,同樣參數量情況下,SliceNet取得更好的結果。
(3)、將Depthwise Separable Convolution結構用於機器翻譯,發現:深度分離特性(Depthwise separability)可以增大卷積窗口的大小,去除掉filter dilation的需求。
(4)、引入新的卷積操作:super-separable(超分離),進一步減少參數和計算量成本(computation cast)。
獲取最新消息鏈接:獲取最新消息快速通道 - lqfarmer的博客 - 博客頻道 - CSDN.NET
3、分離卷積和組卷積(Separable convolution and grouped convolution)
深度可分離卷積與組卷積(grouped convolution)和Inception卷積網路中的inception module相關。Separable convolution由Depthwise convolution和Pointwise convolution兩部分組成,Pointwise convolution接在Depthwise convolution之後。Depthwise convolution指,從多維空間角度上來看,input的不同channel之間,相互獨立進行卷積。Pointwise convolution採用Inception Net中的1X1的卷積窗口進行卷積,把Depthwise convolution的輸出映射到一個新的channel space中。
注意:Depthwise separable convolution與圖像處理中的spatialy separable convolution處理不一樣。
傳統的convolution、Depthwise convolution、Pointwise convolution和Depthwise separable convolution(separable convolution)數學表達式下所示:
深度神經網路通過逐層的特徵抽取,從複雜的輸入X中抽取出抽象的、易於理解的特徵。特定的i層中,隱含層神經元之間相互獨立,各自抽取特定的特徵(particular feature);i層神經元的輸出,通過特定的方式(全連接、卷積、池化等方式)連接到i+1層神經元輸入端,特定的連接方式起到組合(融合)這個特徵(particular feature)的作用。
常規的卷積層中(regular convolution),需要同時進行特徵抽取和特徵融合的工作,從參數(Parameters)的使用角度來講,效率低且效果不理想。相反,Depthwise separable convolution把兩步分離開來,從深度方向,把不同的channels之間相互獨立開,先進行特徵抽取,在進行特徵融合,這樣做可以充分利用模型參數進行表示學習(representation learning),使用更少的參數,取得更好的效果。
Grouped convolution(sub-separable convolution)是一種介於regular convolution和Depthwise separable convolution之間的一種卷積方式。Grouped convolution把輸入的channel分解成多個互補重疊的groups,每個組分別進行常規的convolution操作,然後把每個channel中的feature maps拼接起來做為最後的輸出。這幾種卷積方式的參數數目和每個位置的近似浮點數運算對比如table1所示:
其中,c是channel或filter的數目(一般c=1000),k是卷積核大小(一般k=3),g是groups的數目。可見,Depthwise separable convolution的數目比其餘三種convolution types要少很多,單位置(per position)的計算量也要少很多。
獲取最新消息鏈接:獲取最新消息快速通道 - lqfarmer的博客 - 博客頻道 - CSDN.NET
4、超分離卷積(super-separable convolution)
Super-separable convolution借鑒了group convolution的思想,把輸入x從深度方向分解成g個組,然後每個組分別進行separable convolution操作,最終把不同的組的結果拼接起來。注意,通常,通常多個super-separable convolution堆疊在一起,且super-separable convolution中每個channels之間相互獨立,沒有信息交換。
Super-separable convolution的表達式如公式(1)所示:
其中,x1....xg表示一個super-separable convolution group中的g(一般g=2或3)個split,(Wp(i),Wd(i)),i=1.....g表示g個的position weight和dimension weight。每個split的dimension卷積操作次數為k*c / g,position映射操作次數為c^2/g^2,一個super-separable convolution group的總計算次數為k*c + c^2 / g。
5、過濾膨脹(filter dilation)和卷積窗口大小
Filter dilation通過增加卷積核的size以獲得更多的multiscale information,同時有效避免卷積核增加帶來的參數爆炸問題。與filter dilation相似且更簡單的方法是選擇更多大卷積窗口,但卷積窗口越大,計算量和需要的存儲空間也越大。在Depthwise separable convolution網路中,需要更少的計算量進行convolution操作,non-embedding層中的參數可以減少一半,因此,可以空餘更多的計算和存儲空間用於選擇更大的卷積窗口。
6、SliceNet結構
模型的輸入和輸出都被embedded成相同長度的embedding,採用兩個獨立的sub-network分別進行encode操作,然後把兩個sub-network的輸出拼接起來,做為自回歸(auto-regressive)decoder的輸入。在給定輸入x和partial prediction(y1...yi-1)的encoded結果條件下,Auto-regressive decoder每一次預測一個輸出yi。SliceNet的網路結構如圖1所示。
其中,encoder由堆疊的convolution module構成,decoder由堆疊的convolution module+attention module構成。
獲取最新消息鏈接:獲取最新消息快速通道 - lqfarmer的博客 - 博客頻道 - CSDN.NET
6.1 卷積模塊
每一個Convolution step由三個部分組成:對輸入x的relu激活,跟著一個Depthwise separable convolution操作SepConv,在跟著一個layer Normalization。(關於layer Normalization詳細介紹,參考文章《<優化策略-2>深度學習加速器Layer Normalization-LN》),一個完整的convolution step的計算公式如下所示:
在encoder和decoder中,每個convolution module由多個convolution steps堆疊起來,相互之間採用殘差連接(Residual connection)。圖1中第二圖給出了由4個convolution step和兩個skip-connections構成的convolution module(convolution block),表達式如下所示:
Encoder和decoder中採用堆疊多個convolution Modules的方式。
6.2 attention模塊
Attention通過計算source 和target 向量之間內積attention(inner-product attention)的相似度來確定,同時根據sequence的長度進行re-scale,計算公式如下:
此外,Attention中添加了timing信息,讓attention獲得輸入sequence中的位置信息。Timing(位置)信息的計算方式與《模型匯總16 各類Seq2Seq模型對比及《Attention Is All You Need》中技術詳解》類似,採用關於word k的頻率的cosine或sine函數計算:
因此,在圖1中給出的decoder的attention module結構:先對在target中添加timing信號t,執行兩次convolution step,然後再對source進行attending。整個結構如下公式所示:
6.3 自回歸結構(Autoregressive structure)
如圖1所示,模型最終通過自回歸(autoregressive)的方式預測output。在基於Depthwise separable convolution的seq2seq模型中,encoder和decoder通過更大的卷積窗口和堆疊的convolution module來學習input sequence和output sequence中的long term dependencies。因此,得到圖1所示的,基於super-convolution 的整個seq2seq模型的表達式如下所示:
獲取最新消息鏈接:獲取最新消息快速通道 - lqfarmer的博客 - 博客頻道 - CSDN.NET
參考文獻:
Depthwise Separable Convolutions for Neural Machine Translation
Neural machine translation in linear time
Wavenet: A generative model for raw audio
Conditional image generation with pixelcnn decoders
Multi-scale context aggregation by dilated convolutions;Factorization tricks for LSTM networks
Factorization tricks for LSTM networks
往期精彩內容推薦
純乾貨7 Domain Adaptation視頻教程(附PPT)及經典論文分享模型匯總15 領域適應性Domain Adaptation、One-shot/zero-shot Learning概述<深度學習優化策略-3> 深度學習網路加速器Weight Normalization_WN《純乾貨-6》Stanford University 2017年最新《Tensorflow與深度學習實戰》視頻課程分享
<純乾貨-5>Deep Reinforcement Learning深度強化學習_論文大集合
推薦閱讀:
※【專知薈萃14】機器翻譯 Machine Translation知識資料全集(入門/進階/綜述/視頻/代碼/專家,附PDF下載)
※都柏林城市大學怎麼樣?
※如何評價谷歌最近提出的Seq2Seq模型SliceNet?
※什麼原因導致現在(2014年5月)的Google翻譯連如此簡單的句式都能翻譯的這麼離譜?
※語言學研究在現階段對機器翻譯有實質性的幫助嗎?
TAG:深度学习DeepLearning | 自然语言处理 | 机器翻译 |