在上一节中,我们介绍了成本函数(常称为损失函数),它们是衡量机器学习模型表现好坏的一种方式。请记住,成本函数接收模型的预测值和实际目标值,并计算出一个单一数值,代表总误差或“成本”。高成本意味着模型的预测值与实际值偏离较远,而低成本则表示预测值更接近真实情况。那么,当我们训练机器学习模型时,目标是什么?通常是让模型尽可能准确。用成本函数的术语来说,这直接等同于找到能使成本函数产生尽可能低的值的模型参数。优化过程可以想象成调收音机。模型的参数(例如,如果拟合一条直线,就是斜率 $m$ 和截距 $b$)是你可以转动的旋钮。成本函数告诉你,在特定旋钮设置下,你有多少噪声(误差)。目标是调整这些旋钮,直到找到能提供最清晰信号的设置,这意味着最少的噪声,或者说最小成本。为什么是最小化?最小化成本函数是基本的,原因在于:量化“最佳拟合”: 成本函数为模型的“最佳”提供了数学定义。通过最小化它,你正在根据该定义,找到能使模型尽可能好地拟合训练数据的参数。例如,最小化均方误差(MSE)意味着找到能减少预测值和实际值之间平均平方差的参数。驱动学习: 调整模型参数以降低成本的过程,基本上就是许多机器学习场景中“学习”的含义。模型会迭代地改变其参数,检查成本,然后再次调整,始终尝试趋向更低的成本值。考虑一个非常简单的情况,其中我们的成本只取决于一个参数,我们称之为 $w$。当针对 $w$ 的不同值进行绘制时,成本函数可能看起来像一个碗的形状。{"layout": {"title": "简单成本函数与参数", "xaxis": {"title": "参数 (w)"}, "yaxis": {"title": "成本"}, "showlegend": false}, "data": [{"x": [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5], "y": [25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25], "mode": "lines+markers", "name": "成本", "marker": {"color": "#228be6"}}, {"x": [0], "y": [0], "mode": "markers", "name": "最小成本", "marker": {"color": "#f03e3e", "size": 10, "symbol": "x"}}]}一个简单的抛物线成本函数 $Cost = w^2$。目标是找到参数 $w$ 的值(在这种情况下,$w=0$),该值对应曲线上的最低点,代表最小成本。我们的目标是找到那个碗最底部 $w$ 的值。这种寻找函数输入(或多个输入)以产生最小输出值的过程称为优化。在机器学习中,我们正在优化模型的参数以最小化成本函数。虽然找到像 $Cost = w^2$ 这样简单函数的最小值是直接的(显然在 $w=0$ 处),但实际机器学习模型的成本函数通常复杂得多,可能取决于数百万个参数。我们如何高效地找到这个最低点,尤其是在处理许多参数时?这就是微积分,特别是导数,发挥作用的地方。正如我们之前所看到的,导数告诉我们函数的斜率或变化率。我们可以使用斜率的这些信息来引导我们走向成本函数的最低点。这是梯度下降等算法背后的核心思想,我们接下来会介绍。