CNN和RNN混血兒:序列建模新架構TrellisNet
論文: ofollow,noindex"> https:// arxiv.org/abs/1810.0668 2
編譯:weakish
長期以來,序列建模一直是迴圈神經網路(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每層都接受(相同的)輸入序列 作為(部分)輸入,我們可以預先計算輸入序列的線性變換:

然後在所有網路層使用。
TrellisNet和CNN
回過頭去看下完整的TrellisNet示意圖,可以看到,其實TrellisNet的每一層,都可以視為對隱藏狀態序列進行一維卷積運算,然後將卷積輸出傳給啟用函式。也就是說,TrellisNet的網路層i的運算可以總結為:

這就意味著TrellisNet可以看成一種特殊的CNN,隨著網路層的加深,感受野也隨之增大。
不過,TrellisNet和一般的(時序)CNN有兩個地方不一樣:
- 如前所述,所有時刻和網路層的權重是一樣的。換句話說,所有網路層共享過濾矩陣。這樣的權重系聯大大降低了模型的尺寸,而且可以看成一種正則化(更穩定的訓練、更好的概括性)。
- (線性變換後的)輸入序列直接插入每個隱藏層。輸入序列的插入混合了深層特徵和原始序列。
相應地,TrellisNet也可以直接應用一些為CNN設計的技術:
- 深度監督 。深度監督技術使用CNN的中間層損失作為輔助,即

(λ是固定引數,控制輔助損失的權重)。
例如,在訓練一個L層TrellisNet的過程中,為了預測t時刻的輸出,除了最後一層的

等隱藏狀態上應用損失函式。

- 空洞卷積 。在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。在序列邊界處,重新打包隱藏狀態
並傳給下一個RNN序列。因此梯度流停在序列邊界處。TrellisNet也可以利用這一技術。如下圖所示,在RNN中傳遞壓縮歷史向量
等價於在TrellisNet的混合分組卷積中指定非零補齊,也就是在TrellisNet中使用先前序列上最後一層的最後一步作為補齊(“歷史”補齊)。

- 門控啟用 如前所述,TrellisNet可以使用LSTM的門控函式作為啟用。實際上,GRU等其他門控啟用同樣可以應用於TrellisNet。
- 變分dropout RNN的變分dropout(VD)是一種在每層的所有時步應用相同掩碼的正則化方案(參見下圖,每種顏色代表一種dropout掩碼)。如果直接翻譯這一技術到TrellisNet的話,需要為網路的每條對角線和混合分組卷積的每個分組建立不同掩碼。論文作者轉而採用了一種極其簡單的替代方案,在每次迭代中,時間維度和深度維度上的每一時步都應用 相同的掩碼 。論文作者的試驗表明,這一方案效果優於其他dropout方案。

- 迴圈權重dropout/DropConnect DropConnect推廣了dropout,dropout歸零隨機選擇的啟用子集,而DropConnect歸零隨機選擇的 權重 子集(如下圖所示)。

Merity等表明,在隱藏層之間的權重Whh上應用DropConnect,可以優化LSTM語言模型的表現(arXiv:1708.02182)。受此啟發,TrellisNet的卷積核應用了DropConnect。
另外,如前所述,等價於RNN的TrellisNet的權重矩陣使用了特別的稀疏結構。那麼,有理由相信,去除了這一權重矩陣限制的TrellisNet應該具有更強的表達能力,可以建模比原本的RNN更廣的變換。
試驗結果
論文作者在單詞層面和字元層面的語言建模問題上的測試表明,TrellisNet表現優於當前最先進模型。
單詞層面的語言建模測試是在Penn Treebank(PTB)資料集和WikiText-103(WT103)資料集上進行的。PTB是相對較小的資料集,因此比較容易出現過擬合現象,需要應用前兩節提到的一些正則化技術。

而WT103規模比PTB大一百倍,過擬合風險較低,但268K的詞彙量使得訓練很有挑戰性。參照之前研究的成果,論文作者在TrellisNet上應用了自適應softmax,提高了記憶體效率。

在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)的連線,就可以統一時序建模的三大主要正規化。
程式碼地址: slab/trellisnet" target="_blank" rel="nofollow,noindex"> https:// github.com/locuslab/tre llisnet