【深度学习】常见的Normalization方法及其总结

本文详细介绍了深度学习中常见的Normalization方法,包括Batch Normalization、Layer Normalization、Instance Normalization和Group Normalization,阐述了Normalization的基本思想和作用,旨在解决深度神经网络内部协变量漂移问题,提高模型训练效率和性能。各种Normalization方法各有适用场景,例如Batch Normalization适用于大batch size,而Layer Normalization则适用于RNN等动态网络结构。
摘要由CSDN通过智能技术生成

Normalization方法

https://zhuanlan.zhihu.com/p/33173246

https://zhuanlan.zhihu.com/p/72589565


为什么需要normalization?

  • 独立同分布的数据以简化常规机器学习模型的训练、提升机器学习模型的预测能力。

    数据预处理:白化

    • 去除特征之间的相关性 --> 独立
    • 使所用特征具有相同的均值和方差 --> 同分布
  • ICS Internal Covariate Shift

    深度神经网络模型层层叠加每一层的参数更新会导致上层的输入数据分布发生变化,通过层层叠加,高层的输入分布变化会非常剧烈。

    指源空间和目标空间的条件概率是一致的,但是其边缘概率不同

  • ICS导致的问题

    每个神经元的输入数据不再是“独立同分布”

    • 上层参数需要不断适应新的输入数据分布,降低学习速度。
    • 下层输入的变化可能趋向于变大或者变小,导致上层落入饱和区,使得学习过早停止。
    • 每层的更新都会影响到其它层,因此每层的参数更新策略需要尽可能的谨慎

normalization基本思想

希望白化操作是可微的,保证白化操作可以通过反向传播来更新梯度。

所以就是基本思想就是 平移和伸缩

通用公式:
h = f ( g ⋅ x − μ σ + b ) h=f\left(\mathbf{g} \cdot \frac{\mathbf{x}-\mu}{\sigma}+\mathbf{b}\right) h=f(gσxμ+b)
μ是平移参数(shift parameter),σ 是缩放参数(scale parameter),b是再平移参数(re-shift parameter), g 是再缩放参数(re-scale parameter)

平移、缩放是将输入数据限制到了一个全局统一的确定范围

再平移、再缩放是充分利用底层学习的能力,并且保证非线性的表达能力。这两个参数是可学习的。

normalization具体方法梳理

feature map shape 记为[N, C, H, W],其中N表示batch size,即N个样本;C表示通道数;H、W分别表示特征图的高度、宽度。

Batch Normalization

针对单个神经元进行,沿着通道计算每个batch的均值、方差。

第1个样本的第1个通道,加上第2个样本第1个通道 … 加上第 N 个样本第1个通道,求平均,得到通道 1 的均值(注意是除以 N×H×W 而不是单纯除以 N,最后得到的是一个代表这个 batch 第1个通道平均值的数字,而不是一个 H×W 的矩阵)

公式中的M是mini-batch的大小。
μ i = 1 M ∑ x i , σ i = 1 M ∑ ( x i − μ i ) 2 + ϵ \mu_{i}=\frac{1}{M} \sum x_{i}, \quad \sigma_{i}=\sqrt{\frac{1}{M} \sum\left(x_{i}-\mu_{i}\right)^{2}+\epsilon} μi=M1xi,σi=M1(xiμi)2+ϵ
适用场景:每个 mini-batch 比较大,数据分布比较接近。在进行训练之前,要做好充分的 shuffle. 否则效果会差很多

存在问题

  • batch size太小的时候,计算的均值、方差不足以代表整个数据分布
  • batch size太大的时候,计算容易超出内存容量
  • 不适合动态的网络结构 RNN
Layer Normalization

综合考虑一层所有维度的输入,计算该层的平均输入值和输入方差,然后用同一个规范化操作来转换各个维度的输入。

LN 对每个样本的 C、H、W 维度上的数据求均值和标准差,保留 N 维度。
μ = ∑ i x i , σ = ∑ i ( x i − μ ) 2 + ϵ \mu=\sum_{i} x_{i}, \quad \sigma=\sqrt{\sum_{i}\left(x_{i}-\mu\right)^{2}+\epsilon}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值