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