解决方案:
a) 白化(PCA+标准化): PCA白化/ZCA白化
关于PCA和白化的解释, 参考:
1. CS231n Convolutional Neural Networks for Visual Recognition
2. 机器学习(七)白化whitening
PCA本质上就是做一个坐标变换(旋转)去除特征之间的相关性, 白化是在PCA基础上做坐标缩放得到各向同性的坐标点.
优点:缺点:(1)使得输入特征分布具有相同的均值与方差;(2)去除了特征之间的相关性(1)白化过程计算成本太高;(2)白化过程由于改变了网络每一层的分布,因而改变了网络层中本身数据的表达能力,造成底层信息丢失 b) Batch Normalization原理
Z[l]=W[l]A[l−1]+b[l]注意:偏置项b可以不添加或设为0,因为规范化会减去均值μ=m1i=1∑mZ[l](i)σ2=m1i=1∑m(Z[l](i)−μ)2Z~[l]=γ⋅σ2+ϵ
Z[l]−μ+βA[l]=g[l](Z~[l])
BN解决了白化遇到的问题, 即用更加简化的方式来对数据进行规范化, 同时在一定程度上保证了输入数据的表达能力.
C) 测试阶段如何使用BN
保留每组minibatch的
μ和σ
μtest=Eμbatch=mean(μbatch)BN(Xtest)=γ⋅σtest2+ϵ
Xtest−μtest+β
d) Batch Normalization 的优点
(1) 调节每一层
X的
μ和σ, 做到层之间的解耦和, 使每一层能够独立学习, 从而加速训练
(2) 经过BN操作以后,权重的缩放值会被“抹去”, 因此可以使用较大的初始权重. 网络也不再对参数微小变化敏感,因此也可以设置较大的学习率. 这能加快收敛速度
(3) 通过学习
γ和β, 数据分布能够在保留原始信息的基础上尽量落在激活函数非饱和区, 从而缓解梯度消失问题
(4) 每个minibatch的
μ和σ 都有些微差别, 相当于引入随机噪声, 类似Dropout的原理, 起了一定程度的正则化作用.