Training RNNs as Fast as CNNs
本期論文
Training RNNs as Fast as CNNs
本文通過有意簡化狀態計算并展現更多的并行性而提出了一個替代性的 RNN 實現,這一循環單元的運算和卷積層一樣快,并且比 cuDNN 優化的 LSTM 快 5-10x。該實現在諸如分類、問題回答、語言建模上證明了其有效性,并已在 PyTorch 和 CNTK1 中開源。
論文鏈接:https://arxiv.org/abs/1709.02755
社區討論精選
?
soloice
幾個觀點:?
1. 不就是先前 Quasi-RNN 的工作換了個殼……只不過這篇文章里實驗做的比較多,更詳實一些。但是實驗部分只和標準的 LSTM 等結構作比較,沒有和 Quasi-RNN 比,固然可能是因為實現一下 Quasi-RNN 工作量太大,但我還是感覺有些避重就輕了,避開了最相關的前人工作。?
2. 訓練速度提升沒有疑問,解除了各個 gate 的時序依賴,但是我謹懷疑推斷速度會變慢。在機器翻譯那個任務里,LSTM 只要兩三層,它的方法要堆六到十層才能獲得同樣的效果;因為在解碼時只能一步一步解碼,解除時序依賴不會帶來加速(在某一步的時候還不知道未來會輸入啥呢),更多的層數可能會帶來 latency 變大。
?
countback
論文從實驗的角度上來說,確實提供了新的思路,但是論文中提出的新的 SRU implementation,實際上在 16 年 6 月份開始陸陸續續有很多論文在做類似的事情,模型設計上并沒有什么新鮮感。
隨便找了幾篇論文展示類似的idea:?
Quasi-RNN: https://arxiv.org/pdf/1611.01576.pdf?
PRU模型:https://arxiv.org/pdf/1611.06530.pdf?
MGU模型: https://arxiv.org/pdf/1603.09420.pdf
?
liujshi
下圖是 GRU 的計算單元,GRU 每一步計算都會引入上一步的隱藏變量:
下圖是 SRU 的計算單元,SRU 計算過程對依賴進行了解耦,使得前三部計算不需要依賴前面的過程,前三部就可以用矩陣拼接的方法對整個句子進行全局計算,起到了加速左右,而后面兩個方程僅僅雖然依賴前向過程,但是涉及到的計算僅僅是矩陣的按位乘法,速度很快。
但是 SRU 顯然對 C~t-1~ 的信息利用很低,所以導致其效果并不好,需要多疊堆層數才能有 GRU 一樣的效果。
?
dalegebit
有個疑問,雖然解除了 h_t 的相關性,減少了那些矩陣乘法,但是 c_t 的還是沒解除,ct 還是需要等待 c{t-1} 生成之后才能生成,還是有時間上的依賴。而且如果沒有時間上的依賴那也不叫 RNN 了。
Soloice:對的。后面的時間步當然還要等,只是減少了等待時間。本來是 gate 和 hidden state 都要等前面的時間步算完,現在只有 hidden state 需要等,各個時間步的 gate 可以同步算。但是,這種加速技巧是 Quasi-RNN 提出來的啊,這篇文章把 Quasi-RNN 的 recurrent unit 還簡化了一下,不過把輸出搞復雜了一點(輸出 = hidden 和 input 的加權,相當于 highway network)。
參與討論
點擊「閱讀原文」即可申請注冊 PaperWeekly 社區,快來發現你感興趣的論文吧。
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的Training RNNs as Fast as CNNs的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开课吧 Python专家级编程:机制与实
- 下一篇: 来自闪闪宝石的光芒 - “宝石迷阵” x