《Convolutional Sequence Modeling Revisited》 閱讀筆記
來自專欄西土城的搬磚日常
轉載請註明出處:西土城的搬磚日常
原文鏈接:Convolutional Sequence Modeling Revisited來源:ICLR 2018
在深度學習領域,RNN結構被用來對序列進行建模,儘管有著梯度彌散和梯度爆炸等問題,但是與CNN結構相比,其擁有的被稱為記憶力的能力依舊使其在序列建模領域佔主導地位。由於其存在的一系列問題,人們在改進RNN的同時,也在試圖尋求更好的序列建模方式。人們嘗試了一些列注意力模型(如transformer)和CNN(如TCN,Temporal Convolution Networks )結構,期望在高速運算的同時達到相對較優的效果。本文嘗試比較了TCN結構和RNN結構在序列建模上的效果,重新審視了CNN在序列建模中的地位。
TCN的特點:
- 未來和過去之間不存在信息泄漏
- 可以將任意長度的序列映射到相同長度的輸出序列
- 序列建模任務
對於輸入的序列 ,預測出對應時刻的的輸出 。關鍵點在於當預測 時,限制僅有的輸入是 ,不包含任何未來的信息。
- TCN
限制:輸出與輸入相同長度的序列,且不能有任何未來信息傳遞到過去。
基於上述限制,分別採用了1D卷積和因果卷積。
為了獲得更長久有效的歷史信息規模,需要構建非常深度或者非常大的網路,作者採用了下面兩種方式。
- Dilated Convolutions
為了獲得更長久的歷史信息,作者採用了dilated casual convolution。
對於1-D的序列輸入 和filter ,dilated卷積操作F定義如下:
dilated convolution提供了兩種方式改變感受野的大小:
- 改變濾波器的大小
- 改變膨脹係數d的大小
通過這些操作可以更好的控制模型的記憶長短
- Residual Connections
為了提高深度網路的穩定性, 作者採用了殘差連接。
在TCN中,輸入和輸出的寬度不相等,因此採用了1*1的卷積確保 操作的輸入有相同的維度。
TCN的優點:
- 不同於RNN結構,TCN可以大規模並行處理,因此在訓練和驗證時網路的速度都會更快
- TCN可以通過增加層數、改變膨脹係數和濾波器的大小改變感受野,歷史信息長短上更加靈活
- 避免了RNN中的梯度彌散和梯度爆炸的問題
- 訓練時佔用的內存更少,尤其是對於長序列
- 與RNN相同,輸入序列的長度可以是動態的
TCN的缺點:
- 在測試中,RNN只需要維護一個隱藏狀態並接受當前輸入,便可以生成一個預測,這意味著觀察到的序列可以被丟棄。但是TCN仍舊需要完整的序列才能進行預測
- 不同的問題需要的歷史信息量是不一樣的,因此TCN的遷移能力並不是很好。將模型從一個需要較少記憶的問題遷移到一個需要長記憶的問題上時,可能會表現很差,因為模型的感受野不夠大
實驗
作者比較了TCN和各個RNN結構在一系列實驗上的效果:
- The Adding Proble
所有的模型都大約有70k個參數,在problem size T在不同大小的情況下,loss的收斂如下圖所示
- Sequential MNIST and P-MNIST
- Copy Memory Task
上述實驗結果表明,TCN相比於RNN結構能夠更快的收斂。在Copy Memory Task中,增加序列長度可以有效比較模型的記憶能力,TCN的實驗結果也更加好(好得離譜)。
總結
RNN結構是seq2seq模型的一種通用結構,但是其存在的問題(無法並行計算,梯度問題)也使得人們在不斷的改進該結構的同時尋求更好的建模方式。本文比較了基礎的TCN和RNN結構的效果,除此之外google brain提出的transformer也是一個很好的嘗試,並且被很多人添加到自己的結構中。但是感覺這兩種方式在現有狀態下並不能撼動RNN的地位,期待有更好的通用結構可以用來進行序列建模,畢竟RNN是真的太慢了。
推薦閱讀:
※RNN基本模型匯總(deeplearning.ai)
※第七篇 自然語言處理與語音合成
※NN4NLP課程筆記(一)
※一篇通俗易懂的word2vec
※python學習之文章數據分析
TAG:自然語言處理 |