長期以來,序列建模一直是循環神經網絡(RNN)的天下。然而,近年來,卷積神經網絡(CNN)開始入侵這一RNN的保留領地,在建模長距離上下文方面表現尤為出色。這兩年來,更出現了獨立于RNN和CNN之外的完全基于自注意力機制的模型。
CMU和Intel的研究人員Shaojie Bai、J. Zico Kolter、Vladlen Koltun剛剛(2018年10月15日)發布了論文Trellis Networks for Sequence Modeling,提出了一種新穎的架構——網格網絡(TrellisNet)。網格網絡的結構融合了CNN和RNN,因此可以直接吸收許多為CNN和RNN設計的技術,從而在多項序列建模問題上戰勝了當前最先進的CNN、RNN、自注意力模型。
TrellisNet架構
TrellisNet的基本單元如下圖所示:
上圖中,t表示時刻,i表示網絡層,W表示權重,x表示序列輸入(藍色),z表示隱藏狀態(黃色)。可以看到,這一基本構件的輸入是前一層i在t、t+1時刻的隱藏狀態,以及t、t+1時刻的輸入向量。
這些輸入經過前饋線性變換(省略了偏置):
和前一層t時刻的隱藏狀態一起傳給非線性激活函數f:
平鋪上述單元,我們就得到了完整的TrellisNet:
注意,所有時刻和網絡層的權重都是一樣的,這也是TrellisNet的一個重要特征。
順便提一下,由于TrellisNet每層都接受(相同的)輸入序列x1:T作為(部分)輸入,我們可以預先計算輸入序列的線性變換:
然后在所有網絡層使用。
TrellisNet和CNN
回過頭去看下完整的TrellisNet示意圖,可以看到,其實TrellisNet的每一層,都可以視為對隱藏狀態序列進行一維卷積運算,然后將卷積輸出傳給激活函數。也就是說,TrellisNet的網絡層i的運算可以總結為:
這就意味著TrellisNet可以看成一種特殊的CNN,隨著網絡層的加深,感受野也隨之增大。
不過,TrellisNet和一般的(時序)CNN有兩個地方不一樣:
如前所述,所有時刻和網絡層的權重是一樣的。換句話說,所有網絡層共享過濾矩陣。這樣的權重系聯大大降低了模型的尺寸,而且可以看成一種正則化(更穩定的訓練、更好的概括性)。
(線性變換后的)輸入序列直接插入每個隱藏層。輸入序列的插入混合了深層特征和原始序列。
相應地,TrellisNet也可以直接應用一些為CNN設計的技術:
深度監督。深度監督技術使用CNN的中間層損失作為輔助,即
(λ是固定參數,控制輔助損失的權重)。
例如,在訓練一個L層TrellisNet的過程中,為了預測t時刻的輸出,除了最后一層的zt(L)外,我們可以同時在zt(L-l)、zt(L-2l)等隱藏狀態上應用損失函數。
空洞卷積。在CNN中應用空洞卷積可以更快地擴大感受野。TrellisNet可以直接應用這一技術。注意,如果我們改動了核大小或卷積設定,TrellisNet的激活函數f可能需要做相應調整。例如,假設空洞為d,核大小為2,則激活函數需調整為
權重歸一化。在卷積核上應用權重歸一化(WN)能起到正則化作用,并加速收斂。
并行。TrellisNet同樣可以利用并行卷積操作。
TrellisNet和RNN
RNN和CNN看起來完全不一樣。CNN的每個網絡層并行操作序列的所有元素,而RNN每次處理序列的一個元素,并在時間上展開。
然而,論文作者證明了,任何展開至有限長度的RNN等價于核矩陣W使用特別的稀疏結構的TrellisNet:
論文作者以一個雙層RNN為例,演示了兩者的等價性。TrellisNet的每個單元同時表示3個RNN單元(輸入xt、第一層的隱藏向量ht(1)、第二層隱藏向量ht(2))。
而層間線性變換構成了混合分組卷積(mixed group convolution)——一種非常規的分組卷積,t時刻的分組k通過t+1時刻的分組k-1進行卷積。應用非線性g之后,便精確重現了原本的雙層RNN的輸出。
由于之前的等價性推導不涉及RNN的非線性變換g的內在結構,因此,同樣適用于LSTM和GRU等RNN變體。例如,對LSTM而言:
和之前的例子同理,一個雙層LSTM可以表達為使用混合分組卷積的TrellisNet:
另一方面,LSTM細胞可以作為TrellisNet的非線性激活。下一節的各項試驗中,論文作者就使用了LSTM細胞作為TrellisNet的激活。
同樣,TrellisNet也可以使用一些源自RNN的技術:
History repackaging:理論上,RNN可以表示無限長度的歷史。但在許多應用中,序列長度太長,會導致反向傳播難以為繼(梯度消失)。經典的解決方案是將序列分為較小的子序列,在每個子序列上進行截斷BPTT。在序列邊界處,重新打包隱藏狀態ht并傳給下一個RNN序列。因此梯度流停在序列邊界處。TrellisNet也可以利用這一技術。如下圖所示,在RNN中傳遞壓縮歷史向量ht等價于在TrellisNet的混合分組卷積中指定非零補齊,也就是在TrellisNet中使用先前序列上最后一層的最后一步作為補齊(“歷史”補齊)。
門控激活如前所述,TrellisNet可以使用LSTM的門控函數作為激活。實際上,GRU等其他門控激活同樣可以應用于TrellisNet。
變分dropoutRNN的變分dropout(VD)是一種在每層的所有時步應用相同掩碼的正則化方案(參見下圖,每種顏色代表一種dropout掩碼)。如果直接翻譯這一技術到TrellisNet的話,需要為網絡的每條對角線和混合分組卷積的每個分組創建不同掩碼。論文作者轉而采用了一種極其簡單的替代方案,在每次迭代中,時間維度和深度維度上的每一時步都應用相同的掩碼。論文作者的試驗表明,這一方案效果優于其他dropout方案。
循環權重dropout/DropConnectDropConnect推廣了dropout,dropout歸零隨機選擇的激活子集,而DropConnect歸零隨機選擇的權重子集(如下圖所示)。
Merity等表明,在隱藏層之間的權重Whh上應用DropConnect,可以優化LSTM語言模型的表現(arXiv:1708.02182)。受此啟發,TrellisNet的卷積核應用了DropConnect。
另外,如前所述,等價于RNN的TrellisNet的權重矩陣使用了特別的稀疏結構。那么,有理由相信,去除了這一權重矩陣限制的TrellisNet應該具有更強的表達能力,可以建模比原本的RNN更廣的變換。
試驗結果
論文作者在單詞層面和字符層面的語言建模問題上的測試表明,TrellisNet表現優于當前最先進模型。
單詞層面的語言建模測試是在Penn Treebank(PTB)數據集和WikiText-103(WT103)數據集上進行的。PTB是相對較小的數據集,因此比較容易出現過擬合現象,需要應用前兩節提到的一些正則化技術。
在PTB上的測試結果(MoS指混合softmax)
而WT103規模比PTB大一百倍,過擬合風險較低,但268K的詞匯量使得訓練很有挑戰性。參照之前研究的成果,論文作者在TrellisNet上應用了自適應softmax,提高了內存效率。
在WT103上的測試結果
在WT103上,TrellisNet不僅表現優于當前最先進的基于自注意力機制的RMC模型(提升約4%),而且收斂速度比RMC要快很多:TrellisNet在22個epoch內收斂,而RMC需要90個epoch。
對于字符層面的語言建模而言,PTB算是中等規模的數據集。因此,論文作者使用了更深的TrellisNet,同時采用了權重歸一化和深度監督技術。
論文作者也評估了TrellisNet建模長期依賴的能力。序列化MNIST、PMNIST、序列化CIFAR-10任務,將圖像視作長序列,每次處理一個像素。論文作者為此實現的TrellisNet模型有八百萬參數,和之前的研究所用的模型規模相當。為了覆蓋更多上下文,論文作者在TrellisNet的中間層應用了空洞卷積。同樣,TrellisNet在這些任務上的表現超過了之前的成果。
如前所述,不同任務的TrellisNet采用了不同的超參數和設定,詳見下表:
“-”表示未使用
為了驗證吸收自CNN和RNN的各種技術的效果,論文作者在單詞層面的PTB數據集上進行了消融測試:
結語
TrellisNet在CNN和RNN間架起了一座橋梁。在理論層面,這可能有助于我們得到對序列建模更深入、更統一的理解。在實踐層面,通過吸收源自CNN和RNN的技術,TrellisNet的表現超越了當前最先進模型。而且,TrellisNet的表現仍有優化空間。例如,相比經典的LSTM細胞,其他門控激活可能帶來更好的效果。同理,其他超參數調整也可能進一步提升TrellisNet的表現。
另外,如果能夠建立TrellisNet和基于自注意力機制的架構(如Transformers)的連接,就可以統一時序建模的三大主要范式。
-
神經網絡
+關注
關注
42文章
4781瀏覽量
101178 -
cnn
+關注
關注
3文章
353瀏覽量
22338
原文標題:CNN和RNN混血兒:序列建模新架構TrellisNet
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論