在CheXNet论文中的densenet模型实现中,在第3.1节中提到:
在将图像输入网络之前,我们将图像缩小到 224x224 并根据 ImageNet 训练集中图像的平均值和标准偏差进行归一化。
考虑神经网络如何学习其权重。 C(NN) 通过在传递训练样本时不断地将反向传播计算出的梯度误差向量(乘以学习率)添加到整个网络中的各种权重矩阵来进行学习。
这里要注意的是“乘以学习率”。
如果我们不缩放输入训练向量,则每个特征的特征值分布范围可能会有所不同,因此学习率将导致每个维度的修正(按比例而言)彼此不同。我们可能在一个重量维度上补偿过度,而在另一个重量维度上补偿不足。
这是不理想的,因为我们可能会发现自己处于振荡(无法集中在成本(权重)空间中更好的最大值)状态或处于缓慢移动(移动太慢而无法达到更好的最大值)状态。
原帖:
https://stats.stackexchange.com/questions/185853/why-do-we-need-to-normalize-the-images-before-we-put-them-into-cnn