这篇是发表在NIPS2018的论文《FastGRNN: A Fast, Accurate, Stable and Tiny Kilobyte Sized Gated Recurrent Neural Network》,论文作者是微软印度研究院的Aditya Kusupati和德里印度理工学院、伯克利大学。
论文对带residual connection的FastRNN进行分析,理论证明FastRNN能有很好的训练收敛性能(解决梯度消失和梯度爆炸的能力)。另外提出了它的改进版本FastGRNN,增加可学习参数提升性能,通过weight复用、low-ranking、sparse和quantization减少参数和加速计算。
方法
FastRNN
- 正常RNN$h_t=tanh(Wx_t+Uh_{t-1}+b)$变为下面
- $\tilde{h_t}=\sigma(Wx_t+Uh_{t-1}+b)$
- $h_{t}=\alpha\tilde{h_t}+\beta h_{t-1}$
- 一般$\alpha<<1 \beta\approx 1-\alpha$
- 都是可学习参数
- 把当前算出来的$\tilde{h_t}$和之前的$h_{t-1}$结合
FastRNN解决病态gradients的证明
- 没仔细看
- Notation
- T是RNN的timestep
- Convergence Bound
- 最大的iterations被bound在O(\frac{\alpha T}{\epsilon^2} \dot poly(L(\theta_0),R_W R_U R_v,\bar{D})),当$\alpha=O(1/T)$
- Generalization Error Bound
- Generalization error和T无关
FastGRNN
- 使用Gated模型并增加一个可学习参数提升准确性
- $z_t=\sigma(Wx_t+Uh_{t-1}+b_z)$
- $\tilde{h_t}=tanh(Wx_t+Uh_{t-1}+b_h))$
- $h_t=(\zeta(1-z_t)+v)\odot \tilde{h_t}+z_t\odot h_{t-1}$
- 注意:W和U参数共享
压缩
- Sparse low-rank
- $W=W^1(W^2)^T,U=U^1(U^2)^T, ||W^i||_0\le s_w^i, ||U^i||_0\le s_u^i$
- $W^i$是$R^{D\times r_w}$
- $U^i$是$R^{D\times r_u}$
- Byte Quantization
- piecewise-linear approximation of the non-linear functions训练
- 解决1.accuracy loss 2.非线性操作要转化成float算
训练
- 训练low-rank
- 直接训练W1 W2的形式
- 训练
- Iterative Hard Threshold(IHT)
- 固定支持参数{W,U}训练
实验
- 语音唤醒任务
- PTB
- Pixel-MNIST
- 结果
- 直接用FastGRNN可以200KB->57KB,保持精度,减少一倍训练时间
- 使用LSQ压缩后,57KB->5.5KB
- 只是用LS压缩,大概22KB,Q压缩减少4倍数据
总结
FastRNN理论证明部分虽然看不懂,但是深度学习理论的魅力所在,从理论上分析才是正确的道路,不能瞎搞。FastGRNN压缩网络把RNN压缩了很多,改动不是很大,LSQ都是以前的方法,但是效果不错。