参考资料:
1.Batch Normalization原理与实战
2.Internal Covariate Shift以及Batch Normalization
-
Internal Covariate Shift(ICS):
Batch Normalization 原作者对Internal Covariate Shift的定义是: 在深层网络训练的过程中,由于网络中参数变化而引起内部结点数据分布发生变化.
我的理解是: 层与层之间的耦合度很高, 底层的参数微弱变化在上层被放大, 导致上层的输入数据 X ( i ) X^{(i)} X(i)的分布变化很大. -
ICS导致的问题是:
a) 上层网络需要不断适应这种分布的变化, 从而降低了学习速率
b) W和b在训练过程中逐渐变大, 从而使每一层的W*x+b较大, 陷入激活函数(如sigmoid)的梯度饱和区, 导致反向传播中底层的更新梯度(导数连乘得到)非常小, 梯度消失, 收敛速度减慢. 解决办法: 使用非饱和性激活函数, 或者让激活函数的输入分布保持在一个稳定状态来尽可能避免它们陷入梯度饱和区(Batch Normalization). -
解决方案:
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