损失函数

模型的预测有好有坏,我们需要一把「尺子」来衡量预测有多准

知识课 · 约 20 分钟 · 更新于 2026-06-14

预测值和真实值

上一课我们用线性模型做了前向预测。接下来一个很自然的问题是:参数 和 到底该取什么值?

答案是:神经网络的参数不需要人工设定,而是由计算机 自动训练 得到的——这一训练过程将从下一课开始正式展开。

但在展开自动训练之前,需要先回答一个更基础的问题: 如何定量地衡量当前预测的准确程度? 训练算法的本质是依据反馈不断调整参数,因此必须有一个明确的数值化指标来刻画预测与真实之间的差距——这是参数更新方向的判定依据。所以本课要先建立这一量化标准,为后续训练算法奠定基础。

为此,先明确两个核心概念:

  • 真实值 :数据中已知的正确答案。比如某套房子的实际成交价是 50 万, 那 。在构造数据时,我们用 生成了这些真实值。
  • 预测值 (读作 y-hat):模型根据当前参数计算出来的值。 对于线性模型, 。参数 和 不同,预测值就不同。

我们希望模型输出的 尽可能接近 。但「接近」这个词太模糊,机器无法直接据此优化——我们需要一个 数字 来精确衡量两者之间的差距。 这就是 损失函数 要做的事。

什么是损失函数

损失函数 (Loss Function)是一个函数, 它接收预测值 和真实值 ,输出一个数字—— 这个数字越大,说明预测越不准确;越小,说明预测越好。

你可以把它想象成一把「尺子」:它不会告诉你该怎么改,但会精确地告诉你「你现在偏离了多远」。

均方误差(MSE)

对于回归问题(预测连续数值),最常用的损失函数是 均方误差 (Mean Squared Error,简称 MSE)。

每个样本的预测值和真实值之间的差距叫 误差 。 MSE 的计算方式是:把每个样本的误差平方,然后取平均值。

为什么用 平方 而不是绝对值?

  • 平方让大误差受到更重的惩罚——偏差越大,平方后增长越快
  • 平方函数处处可导——下一课我们要用梯度下降来优化,需要函数可导

直觉:拖动滑块感受 MSE

拖动滑块调节 和 ,左右两图同步联动:

  • 左图 :当前参数下的预测直线,红色虚线是每个样本的 误差 ——线越贴近数据点,MSE 越小。
  • 右图 : 损失函数曲面 ,每一组 对应曲面上唯一红点;滑块一动,红点就在曲面上滑动。

关键的对应关系:左图直线越贴近数据,右图红点就越靠近 碗底 ——碗底即最优参数。试着把红点拖到碗底看看。

训练的核心目标

有了损失函数,训练的目标就变得清晰了:

当 MSE 接近 0 时,意味着每个样本的预测值 都非常接近真实值 , 模型就「学到」了数据中的规律。

实践:实现 MSE 计算

用 PyTorch 编写 MSE 函数,在一组带噪声的线性数据上计算损失值, 直观感受不同参数下损失有多大差别。