【机器学习】(2)—— 线性回归:损失函数

线性回归损失函数:从预测误差到训练目标

摘要 :上一篇我们建立了线性回归模型 y′=b+w1x1 y' = b + w_1 x_1 y′=b+w1x1,但「模型好不好」仍需一个可量化的标准。本文围绕**损失函数(Loss)**展开,解释它如何衡量预测与真实值的差距,对比 L1/MAE 与 L2/MSE/RMSE 的差异,并结合汽车油耗示例说明如何在存在异常值时选择合适的损失。适合已了解线性回归基本方程的读者。


1. 为什么需要损失函数

在《线性回归简介》中,我们学会了用一条直线描述特征与标签的关系。模型可以预测,但预测准不准,必须有一个统一的度量。

损失(Loss) 就是这样一个数值指标:它描述模型预测值与真实标签之间的偏差。训练的目标,就是把损失尽可能压低------理想情况下接近 0,意味着预测与真实高度一致。

可以把损失理解为「模型到数据点的距离」。距离越大,模型越差;距离越小,模型越好。后续要学的梯度下降,本质上就是在损失曲面上寻找最低点。


2. 损失度量的是「距离」,不是「方向」

假设模型预测 23.1 MPG,真实值是 24 MPG,误差为 24−23.1=0.924 - 23.1 = 0.9 24−23.1=0.9。我们并不关心误差是正是负,只关心偏离了多远

因此,所有损失函数都要先去掉符号,常用两种做法:

方法 含义 对应损失族
取绝对值 只保留偏离幅度 L1 / MAE
取平方 放大大误差、缩小小误差 L2 / MSE

在线性回归的散点图上,损失常表现为数据点到拟合直线的竖直距离 ------预测值与真实值在同一特征 xx x 下的纵向差距。


3. 五种常见损失:从 L1 到 RMSE

线性回归里最常见的损失类型如下表所示。记真实标签为 yy y,预测值为 y′y' y′,样本数为 NN N。

损失类型 英文 定义(单样本 / 多样本) 特点
L1 损失 L1 Loss ∑∥y−y′∥\sum \|y - y'\| ∑∥y−y′∥ 对单个样本的绝对误差求和
平均绝对误差 MAE 1N∑∥y−y′∥ \frac{1}{N}\sum \|y - y'\| N1∑∥y−y′∥ L1 在 N 个样本上的平均
L2 损失 L2 Loss ∑(y−y′)2\sum (y - y')^2 ∑(y−y′)2 对误差平方后求和
均方误差 MSE 1N∑(y−y′)2 \frac{1}{N}\sum (y - y')^2 N1∑(y−y′)2 L2 在 N 个样本上的平均,训练最常用
均方根误差 RMSE 1N∑(y−y′)2 \sqrt{\frac{1}{N}\sum (y - y')^2} N1∑(y−y′)2 MSE 开方,单位与标签一致

块级公式写法如下。

MAE(平均绝对误差)
MAE=1N ∑i=1N ∣yi−yi′∣ \mathrm{MAE} = \frac{1}{N} \sum_{i=1}^{N} |y_i - y'_i| MAE=N1i=1∑N∣yi−yi′∣

MSE(均方误差)
MSE=1N ∑i=1N (yi−yi′)2 \mathrm{MSE} = \frac{1}{N} \sum_{i=1}^{N} (y_i - y'_i)^2 MSE=N1i=1∑N(yi−yi′)2

RMSE(均方根误差)
RMSE= MSE \mathrm{RMSE} = \sqrt{\mathrm{MSE}} RMSE=MSE

3.1 L1 与 L2 的核心差异:平方效应

L1 与 L2 的本质差别在于是否平方。当误差较大时,平方会显著放大惩罚;当误差小于 1 时,平方反而让惩罚变小。

误差 ee e L1 惩罚 ∥e∥\|e\| ∥e∥ L2 惩罚 e2e^2 e2
0.5 0.5 0.25
1.0 1.0 1.0
2.0 2.0 4.0
3.0 3.0 9.0

可见:误差为 2 时,L2 的惩罚是 L1 的 4 倍;误差越大,差距越悬殊。这也是 MSE 对离群点更敏感的根本原因。

3.2 MAE 与 RMSE:为什么业务汇报常用 RMSE

MAE 表示平均误差幅度,直观好懂:「平均每条样本偏了多少个 MPG」。

RMSE 则更像误差的「典型散布程度」,对大误差更敏感。同一组预测下,MAE 与 RMSE 可能相差明显------若存在少数大偏差样本,RMSE 往往高于 MAE。

工程上的常见分工:

  • 训练阶段:多用 MSE(光滑、可导,便于梯度下降)
  • 评估与汇报:常用 RMSE(单位与标签一致,便于向业务方解释)

4. 手算示例:一辆 2370 磅的车

延续汽车油耗模型。上一篇拟合得到:
y′=34+(−4.6)×x1y' = 34 + (-4.6) \times x_1 y′=34+(−4.6)×x1

其中 x1 x_1 x1 为重量(千磅)。对重量 2370 磅(即 x1=2.37 x_1 = 2.37 x1=2.37)的车辆:

步骤 计算 结果
预测 34+(−4.6)×2.3734 + (-4.6) \times 2.37 34+(−4.6)×2.37 23.1 MPG
真实标签 数据记录 24 MPG
误差 24−23.124 - 23.1 24−23.1 0.9
L2 损失(单样本) (0.9)2(0.9)^2 (0.9)2 0.81
L1 损失(单样本) ∥0.9∥\|0.9\| ∥0.9∥ 0.9

对全部 7 个样本,将各自的 L1 或 L2 损失求平均,就得到该模型在数据集上的 MAE 或 MSE。


5. 异常值 Outlier 如何影响损失选择

异常值有两层含义:

  1. 特征异常:如 8000 磅的轿车,超出常见重量范围;
  2. 预测异常:特征在正常范围内,但标签与模型预测严重不符,如 3000 磅却达到 40 MPG,而模型预测约 20 MPG。

异常值会牵动整条拟合直线往自己身上「靠拢」的程度,取决于你选用的损失。

5.1 MSE:更靠近异常值

MSE 对大误差施加平方级惩罚,优化时会更努力压低这些大偏差。结果是:拟合直线可能被少数离群点「拉」过去,整体更贴近异常值,却可能偏离大多数普通样本。

5.2 MAE:对异常值更稳健

MAE 按绝对值累加,大误差不会被平方放大。优化时模型更倾向于照顾多数样本的整体拟合,直线往往离异常值更远,但更贴近主体数据云。

损失 拟合直线倾向 适用直觉
MSE 更靠近离群点,远离主体数据 相信异常值代表真实规律,需重点拟合
MAE 更远离离群点,贴近主体数据 认为异常值是噪声或录入错误,不宜主导模型

6. 如何为场景选择合适的损失

选择损失没有唯一正确答案,取决于数据分布、异常值含义和业务代价。

6.1 优先选 MSE 的情况

  • 希望严厉惩罚大误差,不允许个别样本偏差过大;
  • 认为离群点反映真实方差,模型应当覆盖;
  • 需要光滑可导的损失面,便于梯度下降优化(MSE 在线性回归中尤为常见)。

训练时常用 MSE,汇报时可改用 RMSE,把数值还原到与标签相同的量纲。

6.2 优先选 MAE 的情况

  • 数据中存在明显异常值,且你不希望它们主导模型;
  • 希望损失更直接地表示「平均错了多少」;
  • 对鲁棒性要求高,宁可牺牲对极端点的贴合。

6.3 决策参考

考量维度 倾向 MSE / RMSE 倾向 MAE
异常值 少,或异常值有意义 多,或视为噪声
优化需求 需要光滑损失便于求导 可接受非光滑(或换其他优化)
业务解读 关注误差散布、大错代价高 关注平均偏差幅度
线性回归默认 多数框架默认 MSE 需显式指定

7. 能力边界与常见误区

7.1 适用边界

  • 本文讨论的 MAE、MSE、RMSE 主要面向回归任务;分类问题需用交叉熵等其它损失。
  • 损失函数只衡量拟合程度,不直接等于业务价值。RMSE 低不代表部署后一定赚钱。
  • 异常值是否保留,应结合数据采集流程判断,不能仅凭损失数值机械删除。

7.2 常见误区

误区 正解
「损失越小模型越好」 训练集损失低可能过拟合,需结合验证集
「MSE 和 RMSE 可以混为一谈」 MSE 用于训练求导;RMSE 用于解释汇报
「有异常值就一定用 MAE」 若异常值是真实信号,MSE 反而更合适
「L1 损失 = MAE」 L1 常指求和形式;MAE 是除以 N 后的平均
「误差为负说明损失为负」 损失通过绝对值或平方去掉符号,结果非负

8. 与训练流程的衔接

把损失放入上一篇的训练循环中,位置非常明确:

text 复制代码
1. 准备数据
2. 初始化参数
3. 前向计算  ->  得到 y'
4. 计算损失  ->  MAE 或 MSE(y', y)    <-- 本篇核心
5. 反向求梯度
6. 更新参数
7. 重复直至收敛
8. 用 RMSE 等在验证集上评估

第 4 步定义的「好」与「不好」,完全由损失函数刻画。下一篇将在此基础上讨论梯度下降------损失确定之后,参数究竟如何一步步被调到更优。


9. 关键术语速查

术语 一句话解释
损失 Loss 量化预测值与真实值偏差的指标
L1 损失 绝对误差之和
MAE 平均绝对误差,对异常值较稳健
L2 损失 误差平方之和
MSE 均方误差,线性回归训练最常用
RMSE MSE 的算术平方根,单位与标签一致
异常值 Outlier 特征或标签显著偏离主流分布的样本
残差 单样本的 y−y′y - y' y−y′,损失由其聚合而来

10. 小结

损失函数回答了训练中最关键的问题之一:模型错在哪里、错得有多严重。L1/MAE 与 L2/MSE 的差别,本质是「如何对待大误差」------平方放大还是绝对值一视同仁。结合异常值特性与业务目标做选择,才能让模型既拟合得好,又符合真实需求。

系列导航

相关推荐
美团技术团队1 小时前
ICML 2026 | 美团技术团队学术论文精选
人工智能
moMo2 小时前
你的每一次对话,都是第一次
人工智能
不加辣椒2 小时前
第13章 检索增强提示工程
人工智能
小爷毛毛_卓寿杰2 小时前
我把 397B 的「Agentic 大脑」塞进了 Xinference,一键部署 Nex-N2
人工智能·架构·github
smallYoung2 小时前
Vibe Coding 笔记-中
人工智能
米小虾2 小时前
DSpark:让大模型"写得更快"的秘密武器
人工智能·deepseek
JavaGuide2 小时前
比 iTerm2 更适合 Claude Code/Codex 的终端,我换成 Ghostty 了
人工智能·后端
threerocks3 小时前
神级 Skill,作品个个儿爆,我开源了长期自用的手绘风格库
人工智能·aigc
小爷毛毛_卓寿杰4 小时前
我把一个 3B 模型塞进了 Xinference,然后它干掉了 DeepSeek V3.2
人工智能·开源·github