让我们更好地理解梯度下降的步骤。我们已经知道会计算成本函数的梯度,这会告诉我们成本函数最陡峭的上升方向。由于我们的目标是最小化成本,因此我们希望朝着梯度的相反方向移动。在梯度下降的每一步中,确定向相反方向移动的距离至关重要。学习率(通常用希腊字母阿尔法,$\alpha$ 表示)在此发挥作用。它是一个小的正数,用于决定每次迭代中迈出步子的大小。回想一下我们用于参数(例如线性回归例子中的 $m$ 或 $b$)的更新规则。一般形式如下:parameter = parameter - learning_rate * gradient_of_cost_wrt_parameter对于我们的具体参数 $m$ 和 $b$,使用偏导数表示法表示梯度分量,更新公式为:$$ b = b - \alpha \frac{\partial J}{\partial b} $$$$ m = m - \alpha \frac{\partial J}{\partial m} $$这里,$J$ 表示成本函数,$\frac{\partial J}{\partial b}$ 是成本对 $b$ 的偏导数,$\frac{\partial J}{\partial m}$ 是成本对 $m$ 的偏导数,$\alpha$ 是我们的学习率。为什么需要学习率?梯度告诉我们移动的方向,但没有告诉距离。梯度向量的大小(量级)表明了坡度有多陡。如果我们每一步都直接从参数中减去整个梯度,那么在坡度陡峭时,我们可能会迈出很大的步子;而在坡度平坦时,步子又会很小。迈出巨大的步子,尤其是在远离最小值时,可能会导致问题。想象一下你在有雾的天气下山。你能感觉到脚下的坡度(梯度),它告诉你最陡峭的下坡路。学习率就像是决定你步子长度的依据。学习率大小的影响选择合适的学习率($\alpha$)对有效优化很重要。让我们考虑不同选择会发生什么:如果学习率太小: 你会迈出小步子下坡。你最终会到达底部(最小成本),但这可能需要很长时间和很多次迭代。进展会很慢。如果学习率太大: 你会迈出大步子下坡。你可能会越过谷底,到达另一侧,甚至可能比你开始的位置更高!成本可能会不稳定地波动,无法下降,甚至可能随着时间增加(发散)。如果学习率“刚刚好”: 你会迈出合理大小的步子,稳步向最小值前进,而不会过度越过。这通常能高效地找到好的解决方案。让我们将此可视化。想象一个仅依赖于一个参数的简单成本函数,绘制为参数值的函数。我们想要找到最低点。下面的图表模拟了在不同学习率下,成本如何随着迭代次数变化。{"data": [{"x": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "y": [25, 16, 10.24, 6.55, 4.19, 2.68, 1.72, 1.1, 0.7, 0.45, 0.29], "mode": "lines+markers", "name": "学习率 = 0.1 (良好)", "line": {"color": "#40c057"}}, {"x": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "y": [25, 24.01, 23.05, 22.13, 21.24, 20.39, 19.58, 18.8, 18.04, 17.32, 16.63], "mode": "lines+markers", "name": "学习率 = 0.01 (太小)", "line": {"color": "#fab005"}}, {"x": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "y": [25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25], "mode": "lines+markers", "name": "学习率 = 1.0 (波动)", "line": {"color": "#ff922b"}},{"x": [0, 1, 2, 3, 4], "y": [25, 36, 51.84, 74.65, 107.5], "mode": "lines+markers", "name": "学习率 = 1.1 (发散)", "line": {"color": "#fa5252"}}], "layout": {"title": "学习率对成本降低的影响", "xaxis": {"title": "迭代次数"}, "yaxis": {"title": "成本 J", "range": [0, 50]}, "height": 400, "template": "plotly_white"}}模拟成本函数 $J(w) = w^2$,从 $w=5$ 开始,使用梯度下降 $w = w - \alpha (2w)$。良好的学习率(绿色)会使成本稳步下降。小的学习率(黄色)使成本下降非常缓慢。大的学习率(橙色)可能会波动而没有改善。更大的学习率(红色)会导致成本增加(发散)。选择值那么,如何选择学习率呢?找到最优学习率通常需要一些实验。常见的起始值可能是 0.1、0.01、0.001 或 0.0001。你可以尝试几个不同的值,看看哪个能使成本函数在初始训练迭代中稳步且合理地快速下降。也有更高级的技术可以在训练期间自动调整学习率,但目前,你需要明白它是一个通常在优化过程开始前设置的参数。总之,学习率 $\alpha$ 是一个虽小但重要的数值,它控制着梯度下降在每次迭代中迈出的步子大小。它需要仔细选择:太小会导致收敛缓慢,而太大会导致不稳定和发散。选择正确有助于算法高效找到使成本函数最小化的参数值。