Answers:
首先要注意:您还应该用每个特征(像素)值的标准偏差除以。减去均值会将输入居中于0,然后除以标准差,则任何缩放的特征值都将成为远离均值的标准差数。
要回答您的问题:考虑神经网络如何学习其权重。通过训练实例,C(NN)通过向整个网络的各个权重矩阵连续添加从反向传播计算的梯度误差矢量(乘以学习率)来学习。
这里要注意的是“乘以学习率”。
如果我们不按比例缩放输入的训练向量,则每个特征的特征值分布范围可能会不同,因此学习率将导致每个维度的校正(按比例而言)互不相同。我们可能在一个权重维度上对补偿进行了过度补偿,而在另一个权重维度上进行了补偿不足。
这是不理想的,因为我们可能会发现自己处于振荡状态(无法在成本(权重)空间中达到更好的最大值)或处于缓慢移动(行进太慢而无法达到更好的最大值)状态。
当然可以有一个权重学习率,但是将更多的超参数引入到已经很复杂的网络中,我们也必须对其进行优化才能找到。通常,学习率是标量。
因此,我们尝试在将图像用作NN(或任何基于梯度)算法的输入之前对图像进行归一化。
(image - image.mean()) / (image.std() + 1e-8)