为什么降低学习率可以快速降低误差

机器算法验证 机器学习 神经网络
2022-04-17 19:52:14

我正在阅读有关机器学习课程中学习率变化的信息。出现以下语句和图像:

降低学习率可以减少由于不同 mini-batch 上的不同梯度而导致的随机误差波动。

在此处输入图像描述

那么为什么如果我们降低学习率,之后误差会很快降低呢?

另外,为什么较小的学习率在那之后收敛较慢?

1个回答

我认为一个直观的答案是这样的:

假设您想找到一个仅在一个维度上“最好地解释”您的数据的参数。“最佳解释”意味着使误差函数变小(或可能性很大,这些通常与 error = -log(likelihood) 相同)。我们暂时忘记了我们想谈论神经网络:我们的模型非常简单:它只是是函数的输入,是模型的参数(在 NN 的情况下,它的权重)。我们想找到解释单个数据点的最佳参数。还假设我们不使用 L2-error 而是使用 L1-error,即错误函数为f(x,θ)=x+θxθ(x,y)=(1,5)

l(y^,y)=|y^y|=|x+θy|

当然,绝对值在处不可微,所以我们只需将绝对值在处的微分定义为(如果您恰好处于函数的最小值,则根本不要移动)。 theta >分为我们从一些随机开始,例如然后以图形方式,误差函数如下所示:000+1x+θ<y1x+θ>yθθ=1.5y^=x+θ=11.5=0.5

在此处输入图像描述

现在导数是,所以我们将向右移动 +1,使得\+1θ+1y^=+0.5

在此处输入图像描述

之后导数为,这使我们将设置回,依此类推。我们总是围绕最小值运行,但由于我们没有给梯度赋予任何权重,我们围绕它循环而不是找到我们的内部路径。当您将学习率设置为恒定为而不是某个较低的值时,直觉上会发生这种情况。当然,在现实世界中,我们使用 L2 错误,它已经考虑到最小值的距离,并且一切看起来都更加复杂......另外原因不是我们主要无法找到通往最小值,而是存在使我们高估或低估“完美”梯度的数值不稳定性。1θ0.51

问题 2):我能想到的唯一解释如下:假设我们使用恒定的学习率,并且参数搜索算法在局部最小值附近盘旋一段时间:

在此处输入图像描述

由于学习率保持恒定这一事实,可能会在某个时候算法“螺旋”到一个合适的点,这样在下一步它实际上会过冲太多,以至于它移出它所在的整个区域。时间和“意外”进入了一个全新的山谷,并进入了另一个甚至更低的局部最小值的方向,它可以盘旋:

在此处输入图像描述

然而,尽管如此,我不会过多关注问题号。2 总的来说:错误图没有告诉你的是,经过这么多的时期,你可能过度拟合你的数据很多,即你的问题的最佳解决方案大多不是错误函数的全局最小值!问号 1确实更重要。您会在许多不同的算法中找到“自适应”学习率概念的实现(例如,在与 NN 完全无关的梯度提升中,您有树,并且您不是简单地添加下一棵树,而是添加λnext tree在哪里0<λ<1)。