跟李沐学AI:批量归一化

目录

为什么需要批量归一化?

批量归一化核心思想

批量归一化总结

为什么需要批量归一化?

损失出现在较深层次的网络。随着网络深度的增加,梯度在反向传播过程中会逐渐减小,导致靠近输入层的权重更新变得非常缓慢。这是因为梯度通过每一层时都会被相应的激活函数导数所乘,而这些导数可能非常小。因底部层损失较小,故底部曾训练较慢。

同时底部层的权重发生变化,其余层的权重同时发生变化,底部层需要重新学习多次导致收敛变慢。每一层的权重更新不仅取决于自身的梯度,还受到前一层权重更新的影响。如果前一层的权重发生了变化,那么即使当前层的梯度没有变化,当前层的权重也会受到影响。这种现象称为内部协变量移位。

批量归一化核心思想

固定mini-batch小批量中的均值和方差使其服从特定分布使其稳定。将mini-batch在每层的输出的均值和方差固定。

首先固定mini-batch中的均值和方差:

然后再做额外的调整:

 

μ^B是小批量B的样本均值,σ^B是小批量B的样本标准差。 应用标准化后,生成的小批量的平均值为0和单位方差为1。 由于单位方差(与其他一些魔法数)是一个主观的选择,因此我们通常包含 拉伸参数(scale)γ和偏移参数(shift)β,它们的形状与x相同。 请注意,γ和β是需要与其他模型参数一起学习的参数。γ和β为科学系的参数。

作用在全连接层和卷积层的输出上和激活函数之前。批量归一化是线性变换。也可以作用在全连接层和卷积层的输入上。

对于全连接层,BN作用在特征维度,对全连接层的每一个输出做BN。

对于卷积层,作用在通道维度。

批量归一化在做什么?

论文最初想用其减少内部协变量转移(内部协变量移位是指每一层的输入分布随训练过程改变的现象,这种改变会影响到后续层的学习任务,因为每一层都必须不断适应前一层输出分布的变化。)

后续有论文指出BN是在通过在每个mini-batch中加入噪音(μ^B、σ^B)以控制模型复杂度。因此BN没必要与dropout共同使用。

批量归一化总结

批量归一化固定小批量中的均值和方差,然后学习出合适的偏移和缩放。

BN可以加速收敛但一般不改变模型精度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值