语音识别-Batch Normalization浅析

文章:http://proceedings.mlr.press/v37/ioffe15.pdf
中心思想:通过控制参数的变化范围加速模型的训练
背景:由于神经网络的每层参数在训练过程中都是在随时变化的,这就要求模型在训练过程中需要一个很好的参数初始化、较小的学习率来调整模型的参数,并且模型训练过程中需要保持原有的非线性特性,这就使得深度神经网络的训练很慢、很困难,称这种现象为internal covariate shift。
解决办法:每个minibatch对模型一部分层的输入进行Normalization操作
带来的好处:减少模型对初始化的依赖、学习率可以调大加速模型收敛、一定程度上可以减少对dropout的依赖

背景:由于对每一层的输入特征都做全面平滑代价比较高,针对此现象做如下两个简化:
一是:单独对每个输入特征向量规整为0-1分布【代替输入层和输出层联合平滑的方法】
   特征减均值除方差,均值和方差都是通过训练数据统计得到的。
   在这里插入图片描述
二是:【背景:由于利用上述简化方法对每一层的输入特征做规整sigmoid的输入,会使得sigmoid之后的输出映射为非线性的线性状态,改变了原有的联合分布】
【目的:为了在规整前后保证变换前后的不同表征】
解决方法:针对隐层的激活值,引入了两个参数γ 和β,为激活值保持原有的非线性状态,对规整之后的激活值进行缩放scale和移动shift,这两个参数是与模型的其他参数一起学习得到的
在这里插入图片描述
其中在这里插入图片描述是激活值做均值方差规整后的值,对其进行缩放和移动生成y的过程可以理解为在激活函数后又加入了一个线性层,其中在这里插入图片描述是这一线性层的输入,线性层之后接的是原来的神经网络结构。
简化二:通常是由整个batch的训练模型时评估激活值的均值和方差,对激活值进行规整,但是当训练过程中使用随机梯度下降策略时就不现实了,因此采用每个minibatch评估得到均值和方差的方法
batch normalization
在这里插入图片描述

详细的介绍可以参见上述的参考资料,本文简单的做个概括:

layer normalization和batch normalization类似,缓解Internal Covariate Shift问题,可以将数据分布拉到激活函数的非饱和区,具有权重/数据伸缩不变性的特点。起到缓解梯度消失/爆炸、加速训练、正则化的效果。
在这里插入图片描述
二者原理上有些不同:
batch normalization对一个神经元的batch所有样本进行标准化,layer normalization对一个样本同一层所有神经元进行标准化,前者纵向 normalization,后者横向 normalization。
batch normalization的缺点:因为统计意义,在batch_size较大时才表现较好;不易用于RNN;训练和预测时用的统计量不同等。
在这里插入图片描述
layer normalization就比较适合用于RNN和单条样本的训练和预测。但是在batch_size较大时性能时比不过batch normalization的。
在这里插入图片描述
类似的normalization方法还有weight / Instance / group normalization

转载链接:https://www.jianshu.com/p/c357c5717a60

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值