趋近智
找到成本函数的最小值点是训练机器学习模型的一个主要目标。函数的导数指示了其在任意给定点的斜率或变化率。将导数设为零(f′(x)=0)可以帮助解析地找到可能的最小值点,特别是对于简单函数。
但是,当成本函数很复杂时,例如涉及数百万个参数(这在深度学习中很常见),会发生什么呢?直接求解 f′(x)=0 可能在计算上不可行,甚至不可能。我们需要一种迭代方法,一种可以系统地找到最小值而无需求解复杂方程的方法。这时,梯度下降就派上用场了。
可以这样想:想象你站在一个雾蒙蒙的山坡上,想走到山谷的最低点。你看不到整个地面,但你能感觉到脚下的坡度。最直接的策略是什么?
通过重复这些步骤,你会逐渐走向谷底。
梯度下降就是这个过程的数学等价物。我们在山坡上的“位置”是函数输入变量(或多个变量,我们稍后会看到)的当前值。我们“感觉到”的“坡度”由导数(或其多变量等价物,即梯度)给出。“向下迈一步”意味着在与斜率相反的方向上调整输入变量。
让我们考虑一个简单的成本函数 J(w),其中 w 代表我们希望优化的一个参数(比如线性模型 y=mx+b 中的斜率 m)。
我们可以看到一个规律:我们总是希望 w 沿着与导数符号 相反 的方向移动。我们可以通过一个简单的更新规则实现这一点:
wnew=wold−α⋅J′(wold)这里:
如果 J′(wold) 是正值(斜率向上),减去 α⋅J′(wold) 会使 wnew 小于 wold,从而向左移动(下坡)。如果 J′(wold) 是负值(斜率向下),减去一个负值意味着我们 加上 α⋅∣J′(wold)∣,从而使 wnew 大于 wold,向右移动(也是下坡)。这个更新规则会自动处理方向!
我们迭代地重复这个更新步骤。每一步,我们都会计算新位置的新斜率,并再向下迈一步。当我们越来越接近最小值时,斜率 J′(w) 会越来越接近零,这意味着步子变得越来越小。当步子变得非常微小,表明我们可能已收敛到最小值点附近时,我们通常会停止这个过程。
梯度下降是一种基本的优化算法,在机器学习中被广泛使用,用于调整模型参数和最小化成本函数,从而提高模型在训练数据上的表现。它不能保证找到绝对的 全局 最小值(它可能会停留在局部最小值,一个不是整体最低点的“小坑”),但在实践中,它在许多机器学习问题中表现非常出色。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造