一句话定义:均方误差(Mean Squared Error, MSE)先把每个预测值与真实值之差平方、再取平均;平均绝对误差(Mean Absolute Error, MAE)先把差取绝对值、再取平均。两者都是回归(regression)任务里最常用的损失函数(loss function),也常被当作评估指标(metric)。
差别只有一步:平方还是绝对值
举个例子。某条订单的真实配送时长是 30 分钟,模型 A 猜 32 分钟(差 2),模型 B 猜 50 分钟(差 20)。差 10 倍,平方之后变成 100 倍:4 对 400。
打个生活化的比方:MSE 像按超速幅度平方罚款:超一点点罚几块钱,超很多罚到让人心疼。被这样训出来的模型,会极度厌恶大的单点错误。它宁愿每个样本都差一点点,也不敢让任何一个样本错得离谱。这就是“中庸”的由来。MAE 像按超速时长线性罚款,超多少罚多少,心态平和得多。
数学后果:最优解从均值变成中位数
这一点常被忽略,但很关键。让 MSE 最小的预测值,是这批数据的均值(mean);而均值会被一个极端值拽走。让 MAE 最小的预测值,是中位数(median);一个离谱样本几乎动摇不了它。这就是“MAE 对离群点(outlier)稳健”的真正含义。
代价在梯度(gradient)上:MSE 的梯度与误差成正比,错得越多,步子迈得越大,收敛快,但一个异常样本就能把参数往那边拽。MAE 的梯度在误差为正时恒为 +1、为负时恒为 -1,靠近最优点时步长不会自动收窄,容易来回震荡;工程上通常配合学习率衰减(learning rate decay)使用。另外,绝对值在 0 点不可导,严格说要用次梯度(subgradient)。
| 维度 | MSE | MAE |
|---|---|---|
| 计算 | 误差平方后取平均 | 误差取绝对值后取平均 |
| 最优预测值 | 均值 | 中位数 |
| 离群点 | 非常敏感 | 稳健 |
| 梯度特性 | 随误差线性增大,平滑 | 恒为 ±1,0 点不可导 |
| 收敛 | 通常更快 | 需要调学习率 |
| 单位 | 原单位的平方 | 原单位 |
和相邻概念的区别
- RMSE(均方根误差):把 MSE 开根号,量纲回到原单位(分钟、元),更好向业务方解释;它和 MSE 的排序完全一致,只是换了个刻度。
- Huber 损失或 Smooth L1:折中方案。小误差时用平方(保住平滑梯度),大误差时切到绝对值(不被异常值主导),是很多回归模型的默认选择。
- 交叉熵(cross-entropy):分类任务用的损失,处理的是概率分布,不要拿来做连续值回归。
对从业者和普通职场人意味着什么
数据里脏标注多、长尾极端值多,或者你更在乎“大多数预测别太差”,就选 MAE 或 Huber;如果业务上“绝对不能出大错”,比如风控额度、库存安全水位,MSE 或 RMSE 的惩罚结构更贴合这种恐惧。汇报时用 RMSE,因为单位直观;但别只报一个平均值,配上分位数误差才看得清长尾。
说到底,损失函数是在替你定义“什么叫错”。定义错了,模型就学会中庸。具体实现的默认参数和接口细节,以各框架的官方页面为准。
