什么是零均值?
零均值
在深度学习中,一般我们会把喂给网络模型的训练图片进行预处理,使用最多的方法就是零均值化(zero-mean) 中心化,即使像素值范围变为[-128,127],以0为中心。
作用
这样做的优点是为了 在反向传播中加快网络中每一层权重参数的收敛。
可以避免Z型更新的情况,这样可以加快神经网络的收敛速度。下面将分别以Sigmoid这个最经典的激活函数来说明:
Sigmoid
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EC5NKDdb-1627351552350)(https://www.zhihu.com/equation?tex=%5Csigma%28z%29%3D%5Cfrac%7B1%7D%7B1%2Be%5E%7B-z%7D%7D)]
可以看到Sigmoid的值域及其导数恒大于0,回顾一下梯度下降的公式 w ′ = w − r ∗ d w w'=w-r*dw w′=w−r∗dw。
例如在CV问题中,我们输入的像素值都是在(0, 255)之间。即当x全为正或者全为负时,每次返回的梯度都只会沿着一个方向发生变化,即梯度变化的方向就会向图中红色箭头所示,一会向上太多,一会向下太多。这样就会使得权重收敛效率很低。
零均值化
处理方法:
将每个像素的值减去训练集上所有像素值的平均值,比如已计算得所有像素点的平均值为128,所以减去128后,现在的像素值域即为[-128,127],即满足均值为零。
通过一张图来形象表示零均值化和归一化的区别:
原始数据分布、零均值化数据分布、归一化数据分布
参考文章:https://blog.csdn.net/qq_41452267/article/details/110820597、https://zhuanlan.zhihu.com/p/183591302