《RECURRENT BATCH NORMALIZATION》
- 原文链接 https://arxiv.org/pdf/1603.09025.pdf
Covariate 协变量:在实验的设计中,协变量是一个独立变量(解释变量),不为实验者所操纵,但仍影响实验结果。
whiting : https://blog.csdn.net/elaine_bao/article/details/50890491
《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》:https://blog.csdn.net/sinat_34474705/article/details/77848264 https://arxiv.org/abs/1502.03167
CNN 和RNN的normalization的引入
原文:https://blog.csdn.net/malefactor/article/details/51549771
- CNN:
把一个FilterMap看成一个整体,可以想象成是一个Filter Map对应DNN隐层中的一个神经元,所以一个Filter Map的所有神经元共享一个Scale和Shift参数,Mini-Batch里m个实例的统计量均值和方差是在pq个神经元里共享,就是说从mp*q个激活里面算Filter Map全局的均值和方差,这体现了Filter Map的共享参数特性,当然在实际计算的时候每个神经元还是各算各的BN转换值,只不过采用的统计量和Scale,shift参数用的都是共享的同一套值而已。
- RNN:
“Batch normalized recurrent neural networks”这个工作是最早尝试将BN引入RNN的,它构建了5层的RNN和LSTM,它的结论是:水平方向的BN对效果有损害作用,垂直方向BN能够加快参数收敛速度,但是相对基准无BN对照组实验看可能存在过拟合问题。但是这个过拟合是由于训练数据规模不够还是模型造成的并无结论。
“Deep speech 2: End-to-end speech recognition in english and mandarin.”这个工作也尝试将BN引入RNN,也得出了水平方向的BN不可行,垂直方向的BN对加快收敛速度和提升分类效果有帮助,这点和第一个工作结论一致。另外,新的结论是:在训练数据足够大的情况下,如果垂直方向网络深度不深的话,垂直方向的BN效果也会有损害作用,这个其实和工作一的结论基本一致,也说明了这个过拟合不是训练数据不够导致的,而是浅层模型加入BN效果不好。但是如果垂直方向深度足够深,那么加入BN无论是训练速度还是分类效果都获得了提高。
“Recurrent Batch Normalization”是最新的工作,16年4月份的论文。它的实验结果推翻了上面两个工作的结论。证明了水平方向BN是能够加快训练收敛速度以及同时提升模型泛化能力的。论文作者认为前面两个工作之所以BN在水平方向上不行,很可能主要是BN的Scale参数设置不太合理导致的,他们的结论是:Scale参数要足够小才能获得好的实验效果,如果太大会阻碍信息传播。
摘要
我们已经知道LSTM的参数重组(比如说weight normalization)给RNN带来了batch normalization的好处。然而过去的工作仅仅把batch normalization应用在RNN的输入层到隐含层的转化中,我们证明了去batch-normalize隐含层之间的转化是可能的并且是有益的,由此在时间步上减少了神经网络的internal covariate shift.
我们各种各样的一系列的问题上例如句子分类、语言模型和问答问题等在评估了我们提出的方法。我们的实验结果展示了我们的BN-LSTM可以稳定的获得更快的收敛和更好的泛化效果。
介绍
RNN结构,例如LSTM ( Hochreiter & Schmidhuber, 1997) 和GRU ( Cho et al., 2014) 最近已经在包括语音识别Amodei et al. (2015)、机器翻译 (Bahdanau et al., 2015)、图像视频字幕 (Xu et al., 2015; Yao et al., 2015)和最优模型等许多复杂序列问题上展现了先进的表现,但是这些都基于计算密集且训练成本高昂的复杂的网络。有效的RNN网络的优化因此成为了一个活跃的研究领域 (Pascanu et al., 2012; Martens & Sutskever, 2011; Ollivier, 2013).
大家都知道对于深度前馈神经网络,covariate shift (Shimodaira, 2000; Ioffe & Szegedy, 2015) 会降低训练的效率。Covariate shift 意思是模型输入分布的改变。这在神经网络前馈训练的过程中持续发生,具体来讲就是一层神经层的参数的改变会影响所有在他之上的神经层的输入的分布。结果就是更上面的神经层不断的去适应输入分布的变化且不能高效的去学习。这种ICS (Ioffe & Szegedy, 2015) 现象在和深度前馈网络类似的RNN网络中可能也扮演者非常重要的角色。
batch normalization是一个为了控制前馈神经网络活动最近提出的技术,从而去减少ICS现象。这个方法涉及去标准化进入每一神经层的激活输入,强化他们的平均值和方差以让这个激活对于底层参数的变化不敏感。这有效的将每一层神经层和其它神经层的参数解耦,进而又产生了一个更好环境优化的问题。的确,利用batch normalization进行训练的深度神经网络收敛更快且泛化能力更好。
尽管batch normalization已经被证明在前馈网络应用中可以明显提高训练速度并且有泛化的益处,但是据证明它很难应用在RNN结构上。它被发现在多层RNN结构上的使用有限制,在RNN结构上,规范化的方法被”垂直“应用在每RNN层的输入上,而不是”水平“的在每个时间步之间。RNN结构在时间方向有更深的维度,并且这样的batch normalization水平应用会更好。然而,Laurent et al. (2016)猜想认为由于重复的缩放导致的梯度爆炸,这种batch normalization的方式会损害训练。
我们的发现和这个假设背道而驰。我们证明了应用batch normalization于循环模型的隐含层之间的转换之内是可能的且更有效的。特别的,我们描述了一种涉及batch normalization的参数重组LSTM,并且证明了它更容易去优化且泛化更好。除此之外,我们实验分析了梯度反向传播并且展示了适当的batch normalization参数初始化对于避免梯度消失是非常重要的。我们在几个序列问题对我们的想法进行了评估,并且展示了我们的参数重组LSTM表现比基础的LSTM在各个任务上,在收敛时间和表现上稳定且更好。
Liao & Poggio (2016) 同时调查了在RNN网络中的batch normalization,只能应用于非常短的句子里(10步左右)。Ba et al. (2016) 独立的研究出一种batch normalization的变种,也可以应用在RNN网络中,并且得出了和我们方法相似的提高。
2. 前提条件
2.1 LSTM
LSTM网络是RNN网络更常用的一个类的一个例子,在这个论文中我们简要回顾一下。
2.2 BATCH NORMALIZATION
协变量变换(Shimodaira,2000)是机器学习中的一种现象,其中呈现给模型的特征在分布上发生变化。为了使学习在协变量偏移的情况下取得成功,必须调整模型的参数,不仅要学习手头的概念,还要适应输入的变化分布。在深度神经网络中,这个问题被描述作ICS,意思是某神经层参数的改变影响所有它上面的神经层的输入的分布变化。
批量标准化(Ioffe&Szegedy,2015)是最近提出的网络重新参数化,旨在减少内部协变量偏移。 它通过使用经验估计其平均值和标准偏差来标准化激活来实现这一目的。 然而,由于计算成本高的矩阵求逆,它不会使激活去相关。
3. BATCH-NORMALIZATION LSTM
《RECURRENT BATCH NORMALIZATION》的更多相关文章
- 论文《Piexel Recurrent Nerual Network》总结
论文<Piexel Recurrent Nerual Network>总结 论文:<Pixel Recurrent Nerual Network> 时间:2016 作者:Aar ...
- 《The Unreasonable Effectiveness of Recurrent Neural Networks》阅读笔记
李飞飞徒弟Karpathy的著名博文The Unreasonable Effectiveness of Recurrent Neural Networks阐述了RNN(LSTM)的各种magic之处, ...
- 深度学习网络层之 Batch Normalization
Batch Normalization Ioffe 和 Szegedy 在2015年<Batch Normalization: Accelerating Deep Network Trainin ...
- caffe︱深度学习参数调优杂记+caffe训练时的问题+dropout/batch Normalization
一.深度学习中常用的调节参数 本节为笔者上课笔记(CDA深度学习实战课程第一期) 1.学习率 步长的选择:你走的距离长短,越短当然不会错过,但是耗时间.步长的选择比较麻烦.步长越小,越容易得到局部最优 ...
- 【深度学习】深入理解Batch Normalization批标准化
这几天面试经常被问到BN层的原理,虽然回答上来了,但还是感觉答得不是很好,今天仔细研究了一下Batch Normalization的原理,以下为参考网上几篇文章总结得出. Batch Normaliz ...
- 解读Batch Normalization
原文转自:http://blog.csdn.net/shuzfan/article/details/50723877 本次所讲的内容为Batch Normalization,简称BN,来源于<B ...
- 深度学习之Batch Normalization
在机器学习领域中,有一个重要的假设:独立同分布假设,也就是假设训练数据和测试数据是满足相同分布的,否则在训练集上学习到的模型在测试集上的表现会比较差.而在深层神经网络的训练中,当中间神经层的前一层参数 ...
- Feature Extractor[batch normalization]
1 - 背景 摘要:因为随着前面层的参数的改变会导致后面层得到的输入数据的分布也会不断地改变,从而训练dnn变得麻烦.那么通过降低学习率和小心地参数初始化又会减慢训练过程,而且会使得具有饱和非线性模型 ...
- [转] 深入理解Batch Normalization批标准化
转自:https://www.cnblogs.com/guoyaohua/p/8724433.html 郭耀华's Blog 欲穷千里目,更上一层楼项目主页:https://github.com/gu ...
随机推荐
- apiCloud 调微信支付,调支付宝支付
data里面的参数信息,需要从后台接口中调取,点击查看微信支付详情,https://docs.apicloud.com/Client-API/Open-SDK/wxPay 首先,需要在config.x ...
- python基础之 反射,md5加密 以及isinstance, type, issubclass内置方法的运用
内容梗概: 1. isinstance, type, issubclass 2. 区分函数和方法 3. 反射(重点) 4. md5加密 1. isinstance, type, issubclass1 ...
- 『TensorFlow』高级高维切片gather_nd
gather用于高级切片,有关官方文档的介绍,关于维度的说明很是费解,示例也不太直观,这里给出我的解读,示例见下面, indices = [[0, 0], [1, 1]] params ...
- spring boot(二)web综合开发
上篇文章介绍了Spring boot初级教程:spring boot(一):入门,方便大家快速入门.了解实践Spring boot特性:本篇文章接着上篇内容继续为大家介绍spring boot的其它特 ...
- opencv 中的mat类(非原创)
Mat最大的优势跟STL很相似,都是对内存进行动态的管理,不需要之前用户手动的管理内存,Mat这个类有两部分数据.一个是matrix header(矩阵头),这部分的大小是固定的,包含矩阵的大小,存储 ...
- poj-1061-exgcd
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 128285 Accepted: 27962 Descript ...
- excel导入 导出
PHP页面 //设置header header("content-Type:text/html;charset=utf-8"); //设置文件大小的限制 ini_set(" ...
- mybatis的update使用选择
更新后台设置时,会分多个页面更新同一个表中的数据,愿想是尽量减少sql请求数据量并且减少重复代码. 比如博客园的: 假如只有一个用户信息表,这样的话每个页面只更新部分字段. 这种情况下的更新推荐在xm ...
- [洛谷 P1972] HH的项链(SDOI2009)
P1972 [SDOI2009]HH的项链 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断 ...
- POJ 2352 数星星
Stars Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 53816 Accepted: 23159 Descripti ...