为什么降低学习率可以快速降低误差
我认为一个直观的答案是这样的:
假设您想找到一个仅在一个维度上“最好地解释”您的数据的参数。“最佳解释”意味着使误差函数变小(或可能性很大,这些通常与 error = -log(likelihood) 相同)。我们暂时忘记了我们想谈论神经网络:我们的模型非常简单:它只是。是函数的输入,是模型的参数(在 NN 的情况下,它的权重)。我们想找到解释单个数据点的最佳参数。还假设我们不使用 L2-error 而是使用 L1-error,即错误函数为
当然,绝对值在处不可微,所以我们只需将绝对值在处的微分定义为(如果您恰好处于函数的最小值,则根本不要移动)。 theta >则分为。我们从一些随机开始,例如。然后以图形方式,误差函数如下所示:
现在导数是,所以我们将向右移动 +1,使得\:
之后导数为,这使我们将设置回,依此类推。我们总是围绕最小值运行,但由于我们没有给梯度赋予任何权重,我们围绕它循环而不是找到我们的内部路径。当您将学习率设置为恒定为而不是某个较低的值时,直觉上会发生这种情况。当然,在现实世界中,我们使用 L2 错误,它已经考虑到最小值的距离,并且一切看起来都更加复杂......另外原因不是我们主要无法找到通往最小值,而是存在使我们高估或低估“完美”梯度的数值不稳定性。
问题 2):我能想到的唯一解释如下:假设我们使用恒定的学习率,并且参数搜索算法在局部最小值附近盘旋一段时间:
由于学习率保持恒定这一事实,可能会在某个时候算法“螺旋”到一个合适的点,这样在下一步它实际上会过冲太多,以至于它移出它所在的整个区域。时间和“意外”进入了一个全新的山谷,并进入了另一个甚至更低的局部最小值的方向,它可以盘旋:
然而,尽管如此,我不会过多关注问题号。2 总的来说:错误图没有告诉你的是,经过这么多的时期,你可能过度拟合你的数据很多,即你的问题的最佳解决方案大多不是错误函数的全局最小值!问号 1确实更重要。您会在许多不同的算法中找到“自适应”学习率概念的实现(例如,在与 NN 完全无关的梯度提升中,您有树,并且您不是简单地添加下一棵树,而是添加在哪里)。




