我正在为多变量数据集的线性回归编写一个简单的(梯度下降)代码,我的问题是,当我测试代码时,我注意到,经过500万次迭代后,成本仍然在下降,这意味着我的学习率很小,但是我试图增加它,但是我得到了成本值的溢出,然后当我将数据归一化时,问题已经解决了,我可以在没有任何错误的情况下提高我的学习率,我想知道归一化和溢出之间的关系是什么。
发布于 2022-07-26 23:43:21
基本上,输入的归一化给出了函数的曲面,你想要优化一个更球形的形状。如果没有这种归一化,变量尺度上的差异可能会导致表面变得更椭球。
现在你可以问:为什么是特殊的还是椭球的?
由于梯度下降是一种一阶导数方法,所以在选择方向时不考虑曲面的曲率。然后,有一个椭球面(更不规则的曲率)会导致收敛困难(这带来溢出),特别是如果你设定一个大的学习速率(算法在每一次迭代中采取更大的步骤)。我认为通过查看二维地块实例更容易理解。对于球面,梯度点在最小处,使学习变得更容易。
https://stackoverflow.com/questions/73133010
复制