为什么在将图像放入CNN之前我们需要对其进行标准化处理?


Answers:


34

首先要注意:您还应该用每个特征(像素)值的标准偏差除以。减去均值会将输入居中于0,然后除以标准差,则任何缩放的特征值​​都将成为远离均值的标准差数。

要回答您的问题:考虑神经网络如何学习其权重。通过训练实例,C(NN)通过向整个网络的各个权重矩阵连续添加从反向传播计算的梯度误差矢量(乘以学习率)来学习。

这里要注意的是“乘以学习率”。

如果我们不按比例缩放输入的训练向量,则每个特征的特征值分布范围可能会不同,因此学习率将导致每个维度的校正(按比例而言)互不相同。我们可能在一个权重维度上对补偿进行了过度补偿,而在另一个权重维度上进行了补偿不足。

这是不理想的,因为我们可能会发现自己处于振荡状态(无法在成本(权重)空间中达到更好的最大值)或处于缓慢移动(行进太慢而无法达到更好的最大值)状态。

当然可以有一个权重学习率,但是将更多的超参数引入到已经很复杂的网络中,我们也必须对其进行优化才能找到。通常,学习率是标量。

因此,我们尝试在将图像用作NN(或任何基于梯度)算法的输入之前对图像进行归一化。


1
彩色图像呢?我为每个颜色通道都这样做吗?那不会弄乱颜色分布吗?
user10024395

2
相信您应该同意。您可以执行以下操作:(image - image.mean()) / (image.std() + 1e-8)
JohnAllen

这真的对培训有帮助吗?我正在训练物体检测器,并且使用该钳位器,图像确实令人困惑,很难看到我正在检测的物体
Darlyn 18'Apr24 '18

对于学习性和准确性而言,这对培训非常有帮助-不适用于您,而是针对模型:)您可能希望在调试时输出非规范化图像,以使其看起来对您的人眼是正常的。
lollercoaster
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.