Batch Normalized Recurrent Neural Networks
来源:互联网 发布:专业手机定位软件 编辑:程序博客网 时间:2024/05/03 01:53
本文探讨了BN算法在RNN中的作用。在FNN中BN的使用使得网络收敛更快,但本文实验发现,若把BN放在隐含层之间,并不能提高收敛速度,而将其放在输入层和隐含层之间时可以加速收敛,但泛化能力并未得到提高。
我们先来看看文中提及的一些知识点。
RNN在语音识别、机器翻译、语言建模等方面得到广泛应用,而针对RNN中的梯度消失问题又提出了其升级版LSTM。现在常见的RNN结构是stacked型,但训练深层网络构建开销很大,所以就提出了在多GPU上并行训练RNN的想法。但由于RNN的序列特性,很难使得性能随着GPU个数的增加而现行提高。
另外一种提高训练速度的方法就是标准化或者白化输入,传统的操作开销太大,BN的出现解决了这一问题。它是通过mini-batch来近似输入的统计分布,从而标准化中间层的表示。
这里需要注意的是地输入数据的标准化操作一般是减去均值再处理方差,但它削弱了中间层的表示能力,所以BN又引入了额外的学习参数来表征对数据的缩放和平移。
RNN的状态计算公式是:
其中的Wh是循环权重矩阵,Wx是连接输入和隐含层的矩阵。
在将BN应用到输入-用到隐含层和隐含层之间时,对训练过程并无帮助,所以本文只将BN到输入-隐含层,即:
这种思想和将dropout应用到RNN中的方法类似,即:BN只运用在从一种层到另一种层的垂直连接中,而在同类层的水平连接上不运用。
本文中针对不同训练对象和目的采用了不同类的BN。在语言建模中用的是frame-wise 归一化,而在语音识别中用的是sequence-wise归一化。这是因为在语言建模中我们没法看到之后的帧,所以需要在每步做归一化,而在语音识别中是可以看到完整的序列,但由于序列长度不一致,需要用补零方法对某些序列进行调补来达到mini-batch中最长的序列。随着时间的推移,未填充的帧越来越少,运用frame-wise会导致统计估计性能很差,所以在语音识别中就运用sequence-wise来运算。
本文的实验结果如下:
这幅图是在WSJ语料库上训练和验证阶段的FCE。
下边这张图是在PTB语料库上训练和验证阶段的结果。
从上述结果可以看到,BN加快了收敛速度,但却会导致过拟合的问题。本文在最后也说道,BN在DNN中的工作机制还需要深入了解,且针对隐含状态的归一化和输入-隐含层的白化处理都是可以深入挖掘的方向。
参考文献:
[1] Laurent C, Pereyra G, Brakel P, et al. Batch Normalized Recurrent Neural Networks[J]. arXiv preprint arXiv:1510.01378, 2015.
- Batch Normalized Recurrent Neural Networks
- Gated Recurrent Neural Networks
- Recurrent Neural Networks Tutorial
- Recurrent Neural Networks - collections
- Recurrent Neural Networks regularization
- Recurrent Neural Networks
- Recurrent Neural Networks
- Recurrent Neural Networks 循环神经网络
- TensorFlow3: RNN, Recurrent Neural Networks
- Recurrent Neural Networks Tutorial 中文翻译
- RNN(recurrent neural networks)简介
- tensorflow 的 Recurrent Neural Networks
- QRNN(Quasi-Recurrent Neural Networks)
- Recurrent Neural Networks VS LSTM
- Recurrent neural networks deep dive
- CHAPTER 14 -Recurrent Neural Networks
- feedforward neural networks 和 recurrent neural networks的概念
- 循环神经网络(RNN, Recurrent Neural Networks)介绍
- Dell的R720服务器使用U盘安装系统
- myeclipse导入jquery.min.js文件打叉
- 逆矩阵算法
- IOS网络解析
- 校园招聘网站的开发记录
- Batch Normalized Recurrent Neural Networks
- eclipse中svn插件的“与资源库同步”
- 安卓-属性动画
- Notepad++调用外部程序
- <<给你个团队你能怎么管>>读书笔记-2
- C#基础----Linq之List<T>篇
- mosquito_Z之输入三个数,用两种方法打印出中间值
- 解决在Xcode编译出现"_iconv_open", referenced from: 的问题
- JavaScript 小结