Normalization的总结框架

转自知乎详解深度学习中的Normalization,BN/LN/WN,仅供自己学习记录,如有侵权,请联系删除


通用公式:

h = f ( g ⋅ x − μ σ + b ) h=f\left(\mathbf{g} \cdot \frac{\mathbf{x}-\mu}{\sigma}+\mathbf{b}\right) h=f(gσxμ+b)

BN

μ = 1 M ∑ x i \mu=\frac{1}{M} \sum x_{i} μ=M1xi

σ = 1 M ∑ ( x i − μ i ) 2 + ϵ \sigma=\sqrt{\frac{1}{M} \sum\left(x_{i}-\mu_{i}\right)^{2}+\epsilon} σ=M1(xiμi)2+ϵ

其中, M M M是batch大小, g {g} g b {b} b是可训练的参数初始化为1和0。

BN比较适用的场景是:

每个 mini-batch 比较大,数据分布比较接近。在进行训练之前,要做好充分的 shuffle. 否则效果会差很多。

缺点在于:

  1. 如果每个 mini-batch的原始分布差别很大,那么不同 mini-batch 的数据将会进行不一样的数据变换,这就增加了模型训练的难度。
  2. 不适用于 动态的网络结构 和 RNN 网络

详情见 https://blog.csdn.net/ltochange/article/details/119871517

LN

μ = ∑ i x i \mu=\sum_{i} x_{i} μ=ixi

σ = ∑ i ( x i − μ ) 2 + ϵ \sigma=\sqrt{\sum_{i}\left(x_{i}-\mu\right)^{2}+\epsilon} σ=i(xiμ)2+ϵ

其中, x i x_{i} xi 枚举了该层所有的输入神经元。对应到标准公式中,四大参数 μ \mu μ σ \sigma σ, g {g} g b {b} b均为标量(BN中是向量),所有输入共享一个规范化变换。

优点:

  1. LN 针对单个训练样本进行,不依赖于其他数据,因此可以避免 BN 中受 mini-batch 数据分布影响的问题,可以用于 小mini-batch场景、动态网络场景和 RNN,特别是自然语言处理领域。
  2. LN 不需要保存 mini-batch 的均值和方差,节省了额外的存储空间。

缺点:

LN 对于一整层的神经元训练得到同一个转换

所有的输入都在同一个区间范围内。如果不同输入特征不属于相似的类别(比如颜色和大小),那么 LN 的处理可能会降低模型的表达能力。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值