← 返回题目列表

常见的损失函数有哪些?回归和分类分别用什么损失函数?

高频 中等 第 4 / 25 题 更新于 2026/09/25
机器学习损失函数交叉熵MSE
学习 AI 实战项目

简化版

损失函数把预测质量变成可优化的标量。回归常用 MSE、MAE、Huber 或分位数损失;概率分类常用二元/多类交叉熵,最大间隔分类可用 Hinge。选择应匹配噪声假设、业务代价和输出含义:交叉熵通常比“Sigmoid 后接 MSE”更易优化且有负对数似然解释,但 MSE/Brier score 也可用于概率预测,不能记成“分类绝不能用 MSE”。

详细版

回归损失函数:

损失公式特点
MSE(均方误差)(1/n)Σ(y - ŷ)²对大误差惩罚重、对异常值敏感、处处可导
MAE(平均绝对误差)`(1/n)Σy - ŷ
Huber 损失小误差用 MSE、大误差用 MAE结合两者优点,抗异常值又平滑

分类损失函数:

损失用途说明
二元交叉熵二分类-[y·log(p) + (1-y)·log(1-p)]
多元交叉熵多分类-Σ yᵢ·log(pᵢ)(配合 Softmax)
Hinge 损失SVMmax(0, 1 - y·ŷ),最大间隔

关键结论:分类为什么不用 MSE?

  • 交叉熵配合 Sigmoid/Softmax,梯度大、收敛快;用 MSE 会导致梯度消失(预测错得离谱时梯度反而很小),训练慢。
  • 交叉熵从概率/最大似然角度推导,更契合分类的概率解释。

完整版教学

一、损失函数是什么、为什么重要

损失函数(也叫代价函数、目标函数)是一个衡量「模型预测有多差」的函数——它接收「模型预测值 ŷ」和「真实值 y」,输出一个数字表示两者的差距。差距越小、损失越小,说明模型越好。

损失函数是机器学习的指挥棒:训练的整个过程,就是不断调整模型参数,让损失函数的值最小化(通过梯度下降等优化算法,见「梯度下降」专题)。所以选对损失函数至关重要——它定义了「什么叫好模型」,直接决定模型往哪个方向优化。不同任务要用不同的损失函数。

二、回归损失:MSE(均方误差)

回归任务预测连续数值(房价、气温),最常用 MSE(Mean Squared Error,均方误差):

MSE = (1/n) Σ (yᵢ - ŷᵢ)²

把每个样本的「预测误差」平方后求平均。特点:

  • 对大误差惩罚很重:因为平方,误差 2 的惩罚是误差 1 的 4 倍——大误差被放大。这让模型努力避免大偏差。
  • 对异常值(outlier)敏感:一个离谱的异常样本,平方后损失极大,会主导训练、把模型带偏。
  • 处处可导、平滑:便于用梯度下降优化,这是它流行的重要原因。

三、回归损失:MAE 与 Huber

MAE(Mean Absolute Error,平均绝对误差):

MAE = (1/n) Σ |yᵢ - ŷᵢ|

用绝对值而非平方。特点:

  • 对异常值更鲁棒:误差不平方,异常值的影响是线性的、没被放大,模型不容易被少数异常点带偏。
  • 缺点:在 0 点不可导(绝对值函数在 0 处有尖角),优化时需特殊处理;且对所有误差「一视同仁」,收敛可能较慢。

Huber 损失:结合 MSE 和 MAE 的优点——误差小时用 MSE(平滑、可导),误差大时用 MAE(抗异常值)。它在一个阈值 δ 内是平方损失、超过则变线性损失。既平滑好优化、又对异常值鲁棒,是回归的一个稳健选择。

回归损失选择:一般用 MSE(简单、可导);数据有较多异常值时用 MAE 或 Huber。

四、分类损失:交叉熵(核心)

分类任务预测离散类别,用 交叉熵损失(Cross-Entropy Loss)。它衡量的是「模型预测的概率分布」和「真实的概率分布」之间的差距。

二分类(二元交叉熵):模型输出一个概率 p(预测为正类的概率,经过 Sigmoid),真实标签 y ∈ {0, 1}:

Loss = -[ y·log(p) + (1-y)·log(1-p) ]

理解:

  • 真实是正类(y=1)时,损失 = -log(p)——p 越接近 1(预测越对),损失越接近 0;p 越接近 0(预测越错),损失趋于无穷大(重罚自信的错误)。
  • 真实是负类(y=0)时,损失 = -log(1-p),同理。

多分类(多元交叉熵):模型输出各类别的概率分布(经过 Softmax),真实标签用 one-hot 表示:

Loss = -Σ yᵢ·log(pᵢ)

只有真实类别那一项 yᵢ=1 起作用,损失 = -log(真实类别的预测概率)——模型给真实类别的概率越高,损失越小。

五、为什么分类不用 MSE(高频考点)

一个经典问题:分类为什么用交叉熵而不用 MSE? 两个关键原因:

① 梯度问题(最重要):分类模型输出通常经过 Sigmoid/Softmax。如果用 MSE,损失对参数的梯度里会乘上 Sigmoid 的导数——而 Sigmoid 在预测「错得很离谱」(输出接近 0 或 1)时导数接近 0,导致梯度消失:模型错得越离谱,梯度反而越小、学得越慢,这完全违背直觉(错得越狠应该改得越快)。而交叉熵配合 Sigmoid/Softmax,梯度形式恰好是 (预测 - 真实)——预测错得越多梯度越大、收敛越快。

② 概率解释 / 最大似然:交叉熵可以从最大似然估计推导出来——最小化交叉熵等价于最大化「模型对真实标签的预测概率」,这和分类的概率本质天然契合。而 MSE 假设误差服从高斯分布,更适合回归。

③ 凸性:对逻辑回归,交叉熵损失是凸函数(有全局最优),用 MSE 则可能是非凸的(有局部最优,难优化)。

因此对互斥类别的概率模型,交叉熵通常是首选;但并非所有分类都“一律”使用它。最大间隔、排序、代价敏感、概率校准或鲁棒学习可能采用 Hinge、Focal、Brier 等目标。

六、Hinge 损失与其他

Hinge 损失用于 SVM(支持向量机):

Loss = max(0, 1 - y·ŷ)   (y ∈ {-1, +1})

它的特点是**「间隔」思想**——只要样本被正确分类且离分类边界足够远(间隔 ≥ 1),损失就是 0;只有分错或离边界太近的样本才产生损失。这让 SVM 追求最大间隔(详见 SVM 专题)。

其他还有:Focal Loss(解决类别不平衡,降低易分样本的权重,让模型关注难分样本)、KL 散度(衡量两个分布的差异)等,用于特定场景。

七、损失函数与评估指标的区别(易混)

一个重要区分:损失函数 ≠ 评估指标。

  • 损失函数:训练时优化的目标。梯度法偏好可导或几乎处处可导目标,也可用次梯度、平滑代理或非梯度方法,不能概括为“必须可导”。
  • 评估指标:训练后用来衡量效果的、给人看的,可以不可导,如准确率、F1、AUC(见「模型评估」专题)。

比如分类常优化交叉熵、汇报 Accuracy/F1;后两者离散且难以直接用普通梯度优化,所以通常使用可优化的代理损失。代理损失与业务指标不完全一致,还需在验证集选择阈值并检查切片。

八、用数字和工程流程校验理解

真实值为 10 时,预测 8 的误差是 2:单样本 MAE=2、MSE=4。若另一点误差从 2 增到 10,MAE 惩罚增为 5 倍,MSE 却从 4 增到 100、增为 25 倍,因此 MSE 对离群误差更敏感。

对象/方案核心机制选择或风险
MSE平方误差平滑但对离群点敏感
MAE绝对误差鲁棒但零点不可导,可用次梯度
交叉熵负对数似然适合概率分类并重罚自信错误

把面试题落到可执行流程:

任务假设 -> 选择概率分布
分布的负对数似然 -> training loss
独立评估指标 -> 衡量业务目标
loss 与 metric 可以不同

损失函数用于优化,评估指标用于选模和业务判断;AUC 不易直接逐样本优化,不代表训练目标必须叫 AUC loss。

九、常见误区与追问

  • 误区:回归任务只能使用 MSE。 噪声重尾或离群点多时,MAE、Huber、分位数损失可能更合适。
  • 误区:交叉熵越小,Accuracy 必然越高。 二者相关但不单调等价,概率置信度变化可降低交叉熵而分类标签不变。
  • 追问:MSE 对应什么概率假设? 最小化 MSE 等价于在独立同方差高斯噪声假设下最大化似然。
  • 追问:MAE 对应什么概率假设? 它对应以预测值为中心、尺度固定的拉普拉斯噪声负对数似然。
  • 追问:Huber 的阈值怎么选? 阈值控制二次区与线性区,可结合残差尺度和验证集调节。

十、加强记忆

记忆主线:损失是训练优化的指挥棒,必须与数据假设和业务代价匹配。回归中 MSE 对应平方惩罚并对离群点敏感,MAE 线性惩罚且可用次梯度,Huber 在小残差二次、大残差线性;分类概率模型常用交叉熵,SVM 常用 Hinge,类别不平衡还可能用加权或 Focal。交叉熵配合 Sigmoid/Softmax 通常比 MSE 梯度更直接且有最大似然解释,但 Brier/MSE 并非禁止。训练损失是业务指标的代理,最终还要用独立指标、阈值和切片验收。