Internal Covariate Shift(ICS)的理解 和 Batch Normalizaton的原理及优点

参考资料:
1.Batch Normalization原理与实战
2.Internal Covariate Shift以及Batch Normalization

  1. Internal Covariate Shift(ICS):
    Batch Normalization 原作者对Internal Covariate Shift的定义是: 在深层网络训练的过程中,由于网络中参数变化而引起内部结点数据分布发生变化.
    我的理解是: 层与层之间的耦合度很高, 底层的参数微弱变化在上层被放大, 导致上层的输入数据 X ( i ) X^{(i)} X(i)的分布变化很大.

  2. ICS导致的问题是:
    a) 上层网络需要不断适应这种分布的变化, 从而降低了学习速率
    b) W和b在训练过程中逐渐变大, 从而使每一层的W*x+b较大, 陷入激活函数(如sigmoid)的梯度饱和区, 导致反向传播中底层的更新梯度(导数连乘得到)非常小, 梯度消失, 收敛速度减慢. 解决办法: 使用非饱和性激活函数, 或者让激活函数的输入分布保持在一个稳定状态来尽可能避免它们陷入梯度饱和区(Batch Normalization).

  3. 解决方案:
    a) 白化(PCA+标准化): PCA白化/ZCA白化
    关于PCA和白化的解释, 参考:
    1. CS231n Convolutional Neural Networks for Visual Recognition
    2. 机器学习(七)白化whitening
    PCA本质上就是做一个坐标变换(旋转)去除特征之间的相关性, 白化是在PCA基础上做坐标缩放得到各向同性的坐标点.
    优 点 : ( 1 ) 使 得 输 入 特 征 分 布 具 有 相 同 的 均 值 与 方 差 ; ( 2 ) 去 除 了 特 征 之 间 的 相 关 性 缺 点 : ( 1 ) 白 化 过 程 计 算 成 本 太 高 ; ( 2 ) 白 化 过 程 由 于 改 变 了 网 络 每 一 层 的 分 布 , 因 而 改 变 了 网 络 层 中 本 身 数 据 的 表 达 能 力 , 造 成 底 层 信 息 丢 失 \begin{aligned} 优点: &(1) 使得输入特征分布具有相同的均值与方差;\\ &(2) 去除了特征之间的相关性\\ 缺点: &(1) 白化过程计算成本太高;\\ &(2) 白化过程由于改变了网络每一层的分布,因而改变了网络层中本身数据的表达能力,造成底层信息丢失 \end{aligned} ::(1)使;(2)(1);(2), b) Batch Normalization原理

    Z [ l ] = W [ l ] A [ l − 1 ] + b [ l ] 注 意 : 偏 置 项 b 可 以 不 添 加 或 设 为 0 , 因 为 规 范 化 会 减 去 均 值 μ = 1 m ∑ i = 1 m Z [ l ] ( i ) σ 2 = 1 m ∑ i = 1 m ( Z [ l ] ( i ) − μ ) 2 Z ~ [ l ] = γ ⋅ Z [ l ] − μ σ 2 + ϵ + β A [ l ] = g [ l ] ( Z ~ [ l ] ) \begin{aligned} &Z^{[l]} = W^{[l]}A^{[l-1]} + b^{[l]} \qquad 注意:偏置项b可以不添加或设为0, 因为规范化会减去均值\\ &\mu = \frac{1}{m} \sum_{i=1}^mZ^{[l](i)}\\ &\sigma^{2} = \frac{1}{m}\sum_{i=1}^{m}(Z^{[l](i)}-\mu)^2\\ &\tilde{Z}^{[l]} = \gamma \cdot \frac{Z^{[l]}-\mu}{\sqrt{\sigma^2 + \epsilon}} + \beta\\ &A^{[l]} = g^{[l]} (\tilde{Z}^{[l]}) \end{aligned} Z[l]=W[l]A[l1]+b[l]:b0,μ=m1i=1mZ[l](i)σ2=m1i=1m(Z[l](i)μ)2Z~[l]=γσ2+ϵ Z[l]μ+βA[l]=g[l](Z~[l])
    BN解决了白化遇到的问题, 即用更加简化的方式来对数据进行规范化, 同时在一定程度上保证了输入数据的表达能力.

    C) 测试阶段如何使用BN
    保留每组minibatch的 μ 和 σ \mu 和 \sigma μσ
    μ t e s t = E μ b a t c h = m e a n ( μ b a t c h ) B N ( X t e s t ) = γ ⋅ X t e s t − μ t e s t σ t e s t 2 + ϵ + β \begin{aligned} &\mu_{test} = E_{\mu_{batch}} = mean(\mu_{batch})\\ &BN(X_{test}) = \gamma \cdot \frac{X_{test}-\mu_{test}}{\sqrt{\sigma_{test}^2 + \epsilon}} + \beta \end{aligned} μtest=Eμbatch=mean(μbatch)BN(Xtest)=γσtest2+ϵ Xtestμtest+β

    d) Batch Normalization 的优点
    (1) 调节每一层 X X X μ 和 σ \mu和\sigma μσ, 做到层之间的解耦和, 使每一层能够独立学习, 从而加速训练
    (2) 经过BN操作以后,权重的缩放值会被“抹去”, 因此可以使用较大的初始权重. 网络也不再对参数微小变化敏感,因此也可以设置较大的学习率. 这能加快收敛速度
    (3) 通过学习 γ 和 β \gamma和\beta γβ, 数据分布能够在保留原始信息的基础上尽量落在激活函数非饱和区, 从而缓解梯度消失问题
    (4) 每个minibatch的 μ 和 σ \mu和\sigma μσ 都有些微差别, 相当于引入随机噪声, 类似Dropout的原理, 起了一定程度的正则化作用.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值