QRNN [1] 是 Salesforce Research 团队(Update: 官方pytorch实现)提出的一种使用卷积操作替代传统的循环结构(vanilla RNN, LSTM, GRU)的新网络结构。QRNN 可以视为介于 RNN 和 CNN 之间的特殊结构。由于卷积操作没有循环结构时间上的依赖性,因此,QRNN 的计算并行度高;在训练时,卷积结构也要比循环结构更稳定。因此 ,QRNN 是一种潜在有用的网络,可以 drop-in 地替代各种 RNN。
笔者之前基于 Keras 写一个原型实现(见 github)。但不论学界还是工业界都对 QRNN 关注不多(大家倒是对 CNN 替代 LSTM/GRU 非常上心),最近发现一些比较详细的正向结果 [4],因此,笔者觉得有必要更认真的对待 QRNN。
1. 动机
RNN 在计算时,有时间的依赖性,并行度受限;而 CNN 受制于有限的 receptive field,因此,信息传递太慢。QRNN 希望能综合RNN和CNN的优点,尽量避免各自的缺陷。
2. 算法
仿照 LSTM 的计算公式,QRNN 的各个门(gate)的计算公式如下:
Z=tanh(Wz∗X)
F=σ(W