对神经网络的输入进行归一化有什么好处?
我注意到它会降低梯度,但我不确定它是否真的能带来好的结果。
对神经网络的输入进行归一化有什么好处?
我注意到它会降低梯度,但我不确定它是否真的能带来好的结果。
如果输入变量是线性组合的,就像在 MLP 中一样,那么很少有必要对输入进行标准化,至少在理论上是这样。原因是输入向量的任何重新缩放都可以通过更改相应的权重和偏差来有效地撤消,从而使您获得与以前完全相同的输出。然而,标准化输入可以加快训练速度并减少陷入局部最优的机会有多种实际原因。此外,使用标准化输入可以更方便地完成权重衰减和贝叶斯估计。
特征缩放使所有特征在梯度下降过程中的贡献相等,从而使优化更快。
如果您想象一个具有两个变量的机器学习问题,一个在 的尺度上10
,另一个在 的尺度上1,000,000
,梯度下降会认为几乎所有的误差都在第二个特征中,即使两个特征的相对误差相似。
您可以将上述情况的误差面想象为一条又长又细的沟壑,如果我们同等重视两个正交方向,则很难找到这样一条沟壑的确切底部。
特征缩放迫使峡谷变成一个漂亮的圆形“碗”,并且更容易收敛到确切的底部,因为优化算法不会被任何巨大的压倒性特征分散注意力。
还要记住,特征缩放不会改变特征空间中最佳点的相对位置。以线性回归为例——如果一个特征被一个常数缩放c
,这个特征的权重会发生相反的变换,最终给你相同的答案。
w = inv(X'*X)*X'*y
现在尝试用X
重新缩放的版本替换这些特征,QC
其中C
是对角列缩放矩阵。
w = inv(C'*Q'*Q*C)*C'*Q'*y
w = inv(C)*inv(Q'*Q)*inv(C')*C'*Q'*y
Cw = inv(Q'*Q)*Q'*y
因此,使用新的缩放特征Q=X*inv(C)
将为我们u=Cw
提供具有相同解决方案的新权重y
。