跳到正文
AI 图鉴
02 机器学习进阶本域第 3 篇

损失函数

损失函数定义了你到底在惩罚什么——换一个损失,就是换一套对错观

定义

损失函数是一个把「预测值与真实标签的差距」压缩成一个非负实数的函数,训练的目标就是让它在数据上的平均值尽可能小。均方误差惩罚平方偏差,适合回归;交叉熵惩罚“给正确答案的概率太低”,适合分类。选择某个损失,等于声明你愿意为哪一类错误付出多大代价。

直观理解

把损失想成“罚分规则”。同样是迟到 10 分钟,老板按分钟线性扣钱,还是一迟到就翻倍罚款,会催生出完全不同的行为。损失函数就是给模型定的罚分规则:它决定模型优先修正哪些错误、忽略哪些误差。换一个损失,就是换一套对错观。

图 1

两种损失的形状(二分类、真实标签为正类):交叉熵在预测错时急剧上升,均方误差则过于平缓

  • 交叉熵(真实=正类)
  • 均方误差
图 2

同一分类任务上三种损失的收敛对比(示意):交叉熵下降更快,均方误差在饱和区学得明显更慢

  • 交叉熵
  • 均方误差(用于分类)
  • 合页损失 Hinge

工作原理

  1. 01

    度量单样本误差

    对每个样本计算预测与标签的差异。回归用平方差;分类用“正确类别预测概率取负对数”,也就是该事件的惊讶程度。

  2. 02

    求平均得到总损失

    把所有样本的误差求和或求平均,得到训练集上的一个标量。这个标量就是梯度下降真正要最小化的对象。

  3. 03

    用梯度指引修正

    对损失求导,得到每个参数应调整的方向与幅度。损失是否可导、梯度是否平滑,直接决定优化是否稳定。

  4. 04

    按任务选择损失

    回归默认均方误差,分类默认交叉熵,追求分类间隔或对异常鲁棒时选 Hinge、对比损失等。选择的依据是“你更怕哪一种错”。

关键公式

L_CE = − Σ_c y_c · log p̂_c
交叉熵损失:y 是 one-hot 标签,p̂ 是模型预测的类别概率。给正确类别分配的概率越低,损失越大。

应用场景

  • 回归任务:房价、温度、坐标预测使用均方误差及其变体
  • 分类任务:图像、文本分类几乎一律使用交叉熵
  • 度量学习:对比损失/三元组损失把相似样本拉近、不相似的推远
  • 类别不平衡:用加权交叉熵或 Focal Loss 让模型别只顾多数类

常见误区

  • 均方误差与 Sigmoid 搭配会梯度消失。分类任务若用 MSE 配饱和的 Sigmoid 输出,梯度会小到几乎不更新——这正是交叉熵在分类中胜出的原因。
  • 损失下降不等于指标变好。训练损失持续走低时,业务关心的准确率、召回率可能停滞甚至下滑,因为它优化的是代理指标而非终极目标。
  • 对离群点的敏感度因损失而异。均方误差会被极大离群值主导,改用平均绝对误差或 Huber 会更稳健,代价是在零点附近不可导或不平滑。

关键术语

均方误差 MSE
预测与标签差值的平方在样本上的平均,回归默认损失
交叉熵
正确类别预测概率的负对数,分类默认损失
合页损失 Hinge
要求正确类别得分高出一定间隔,SVM 的核心
对比损失
在嵌入空间中把同类拉近、异类推远的损失

延伸阅读