Batch Normalization详解

目录

1. Batch Normalization的基本思想

2. BN层的作用 

3. 训练阶段和测试阶段的BN层

4. BN、LN、IN、GN与SN


1. Batch Normalization的基本思想

BN解决的问题:深度神经网络随着网络深度加深,训练越困难,收敛越来越慢

问题出现的原因:深度神经网络涉及到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化,通过层层叠加,高层的输入分布变化会非常剧烈,这就使得高层需要不断去重新适应底层的参数更新——BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布

BN的基本思想:

  • 训练过程中整体分布逐渐往非线性函数的取值区间的上下限两端靠近,导致反向传播时低层神经网络的梯度消失,训练收敛慢
  • BN把每层神经网络任意神经元输出的分布强行拉回到均值为0方差为1的标准正态分布,使得激活输入值落在非线性函数对输入比较敏感的区域,可以得到比较大的梯度,避免梯度消失,梯度变大意味着学习收敛速度快,能大大加快训练速度

2. BN层的作用 

  • 加快网络的训练和收敛的速度
    • 深度神经网络中,每层的数据分布不一样会导致网络非常难收敛和训练,BN将每层数据分布转化为一致的标准正态分布,更容易收敛
  • 控制梯度爆炸,防止梯度消失
    • 梯度消失:深度神经网络中,如果网络的激活输出很大,其对应梯度会很小,甚至梯度消失,导致网络的学习速率慢,使用BN层归一化后,网络的输出不会很大,梯度就不会很小
    • 梯度爆炸:第一层偏移量的梯度=激活层斜率1x权值1x激活层斜率2x…激活层斜率(n-1)x权值(n-1)x激活层斜率n,假如激活层斜率均为最大值0.25,所有层的权值为100,这样梯度就会指数增加,但使用BN层后权值的更新也不会很大
  • 防止过拟合
    • 在网络的训练中,BN的使用使得一个minibatch中所有样本都被关联在一起,因此网络不会从某一个训练样本中生成确定的结果,即同样一个样本的输出不再仅仅取决于样本的本身,也取决于跟这个样本同属一个batch的其他样本,而每次网络都是随机取batch,这样就会使得整个网络不会朝这一个方向使劲学习,一定程度上避免了过拟合
  • Allows higher learning rates, faster convergence and networks become more robust to initialization -- Fei-Fei Li

注意⚠️:为什么BN层一般用在线性层和卷积层后面,而不是放在非线性单元后?

  • 非线性单元的输出分布形状会在训练过程中变化,归一化无法消除它的方差偏移,相反的,全连接和卷积层的输出一般是一个对称、非稀疏的分布,更加类似高斯分布,对它们进行归一化会产生更加稳定的分布
  • 例如Relu激活函数,输入的数据是一个高斯分布,变换后数据小于0的被抑制了(分布小于0的部分直接变成0)

3. 训练阶段和测试阶段的BN层

训练阶段:

  • 例如batchsize为32,某层的某个神经元会输出32个响应值
  • 对这32个响应求均值和标准差,再做归一化
  • 归一化的响应值乘以γ,加上β
  • 每个神经元都训练一组γ、β

测试阶段:

  • 测试阶段均值、方差、γ、β都用训练阶段全局求出

  • 在测试阶段Batch Normalization相当于做线性变换


注意⚠️:Dropout和BN都有防止过拟合的作用,单独使用,都带来一定的性能改进,为什么一起用反而性能下降?

原因:

  1. 当网络的状态从训练转移到测试时,Dropout转移了特定神经单元的方差。但是,在测试阶段,BN保持了它的统计方差,这是在整个学习过程中积累的。Dropout和BN中方差的不一致性(“方差偏移”),导致推断中不稳定的数值行为,最终导致错误的预测
  2. 如下图,Dropout在训练阶段以p的概率进行失活,而在测试阶段,对每个神经元进行尺度放缩(乘p)。另一种等价的表现形式,在训练阶段乘1/p,而测试阶段不需要做任何改动,所以,训练:X=a*(1/p)*X,测试:X=X,存在方差偏移

解决方案:总体思路是降低方差偏移

  1. 在所有BN层后使用Dropout
  2. 修改Dropout公式(如使用高斯Dropout)使得它对方差不是那么敏感

4. BN、LN、IN、GN与SN

BN、LN、IN和GN这四个归一化的计算流程几乎一样,输入的图像shape记为[N, C, H, W],区别在于:

BatchNorm:在batch上,对NHW做归一化,把每个通道的NHW单独拿出来归一化处理,针对每个channel都有一组γ,β,可学习的参数为2*C,当batch size越小,BN的表现效果也越不好,因为计算过程中所得到的均值和方差不能代表全局

LayerNorm:在通道方向上,对CHW归一化,把每个CHW单独拿出来归一化处理,不受batchsize 的影响,主要对RNN作用明显,常用在RNN网络,但如果输入的特征区别很大,那么就不建议使用它做归一化处理

InstanceNorm:在图像像素上,对HW做归一化,把每个HW单独拿出来归一化处理,不受通道和batchsize 的影响,常用在风格化迁移,但如果特征图可以用到通道之间的相关性,那么就不建议使用它做归一化处理

GroupNorm:将channel分组再做归一化,把先把通道C分成G组,然后把每个gHW单独拿出来归一化处理,最后把G组归一化之后的数据合并成CHW,GN介于LN和IN之间,LN(G=C)和IN(G=1)是GN的特例

SwitchableNorm:将BN、LN、IN结合,赋予权重,让网络自己去学习归一化层应该使用什么方法,集万千宠爱于一身,但训练复杂 

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Batch normalization 是一种在深度学习中常用的规范化技术,它能够提高模型的收敛速度和降低过拟合的风险。具体来说,batch normalization 通过计算每一层输入数据的均值和标准差,并将其用来调整每一个输入数据,使得它们的分布更加稳定。这样做能够帮助模型更好地学习数据,并且也能减少对具体的初始化方式的敏感度。 ### 回答2: Batch Normalization (批标准化) 是一种用于提高神经网络训练效果的正则化方法。它在每个小批量的数据中对每个神经元的输入进行标准化处理,以使得其均值接近0和方差接近1。这样做可以缓解梯度消失和梯度爆炸问题,加快网络的训练速度,同时还可以提高网络的泛化能力。 Batch Normalization 的主要原理是对每个小批量的数据进行标准化处理。对于一层网络的输入,首先计算其均值和方差,然后将数据减去均值并除以方差,得到标准化后的数据。然后再乘以一个可学习的缩放因子γ,再加上一个可学习的偏移项β,以便网络可以根据具体任务来调整数据的均值和方差。 Batch Normalization 的优点有几个方面。首先,它可以减少网络对初始权重的敏感度。由于对每个小批量的数据进行标准化处理,使得每个神经元的输入分布更加稳定,从而减少了对初始权重的依赖。其次,它可以缓解梯度消失和梯度爆炸问题。标准化后的数据分布更接近于高斯分布,使得网络中激活函数的输入更加均匀,从而减少了梯度的变化范围。此外,Batch Normalization 还具有一定的正则化效果,可以减少网络过拟合的现象。 然而,Batch Normalization 也有一些限制。首先,它增加了网络的计算开销。由于每个小批量的数据都需要进行标准化处理,因此会增加一定的计算量。其次,由于标准化过程中引入了可学习的参数γ和β,可能会导致网络的表达能力受到一定程度的限制。此外,Batch Normalization 对网络的输入数据要求较高,如果输入数据过小或过大,可能会导致标准化处理失效。 总之,Batch Normalization 是一种有效的正则化方法,可以用于改善神经网络的训练效果。它通过标准化处理每个小批量的数据,提高网络的训练速度和泛化能力,同时减少了梯度消失和梯度爆炸问题的发生。然而,它也存在一些限制,需要根据具体任务和数据来选择是否使用。 ### 回答3: Batch Normalization(批标准化)是一种广泛在深度学习中应用的技术,旨在加快神经网络的训练过程并提高模型的收敛速度和泛化能力。 在深度神经网络中,输入的分布不稳定会对网络的训练产生不利影响。而Batch Normalization通过对每一层的输入进行标准化处理,将输入的均值调整为0,标准差调整为1,从而解决了输入分布不稳定的问题。 具体来说,Batch Normalization的操作分为两步:均值归一化和方差归一化。在每个mini-batch的数据中,首先对其进行均值归一化,即减去该mini-batch的均值;然后对减去均值后的数据进行方差归一化,即除以该mini-batch的标准差。最后,通过学习参数进行线性变换和非线性变换,使得网络可以自己去学习数据的分布。 Batch Normalization有几个重要的优点。首先,它可以使得模型对于初始参数的选择不再那么敏感,能够减少训练时间和梯度消失问题。其次,通过对数据进行标准化处理,可以抑制神经网络层之间的协变量漂移,使得网络更加稳定。此外,Batch Normalization还可以减少对正则化(如Dropout)的需求,增加模型的泛化能力。 尽管Batch Normalization有许多好处,但也存在一些限制。首先,它增加了计算的复杂性。其次,在小批量训练数据集中,由于均值和方差的计算仅基于单个mini-batch,可能会引入噪声。最后,Batch Normalization可能不适用于RNN等具有时间依赖性的神经网络。 总结而言,Batch Normalization是一种常用的深度学习技术,通过对每层的输入进行标准化处理,加速网络训练过程,提高模型的收敛速度和泛化能力。但在具体应用中需要注意一些限制和适用条件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值