02 机器学习进阶本域第 3 篇
损失函数
损失函数定义了你到底在惩罚什么——换一个损失,就是换一套对错观
定义
损失函数是一个把「预测值与真实标签的差距」压缩成一个非负实数的函数,训练的目标就是让它在数据上的平均值尽可能小。均方误差惩罚平方偏差,适合回归;交叉熵惩罚“给正确答案的概率太低”,适合分类。选择某个损失,等于声明你愿意为哪一类错误付出多大代价。
直观理解
把损失想成“罚分规则”。同样是迟到 10 分钟,老板按分钟线性扣钱,还是一迟到就翻倍罚款,会催生出完全不同的行为。损失函数就是给模型定的罚分规则:它决定模型优先修正哪些错误、忽略哪些误差。换一个损失,就是换一套对错观。
两种损失的形状(二分类、真实标签为正类):交叉熵在预测错时急剧上升,均方误差则过于平缓
- 交叉熵(真实=正类)
- 均方误差
同一分类任务上三种损失的收敛对比(示意):交叉熵下降更快,均方误差在饱和区学得明显更慢
- 交叉熵
- 均方误差(用于分类)
- 合页损失 Hinge
工作原理
- 01
度量单样本误差
对每个样本计算预测与标签的差异。回归用平方差;分类用“正确类别预测概率取负对数”,也就是该事件的惊讶程度。
- 02
求平均得到总损失
把所有样本的误差求和或求平均,得到训练集上的一个标量。这个标量就是梯度下降真正要最小化的对象。
- 03
用梯度指引修正
对损失求导,得到每个参数应调整的方向与幅度。损失是否可导、梯度是否平滑,直接决定优化是否稳定。
- 04
按任务选择损失
回归默认均方误差,分类默认交叉熵,追求分类间隔或对异常鲁棒时选 Hinge、对比损失等。选择的依据是“你更怕哪一种错”。
关键公式
L_CE = − Σ_c y_c · log p̂_c应用场景
- 回归任务:房价、温度、坐标预测使用均方误差及其变体
- 分类任务:图像、文本分类几乎一律使用交叉熵
- 度量学习:对比损失/三元组损失把相似样本拉近、不相似的推远
- 类别不平衡:用加权交叉熵或 Focal Loss 让模型别只顾多数类
常见误区
- 均方误差与 Sigmoid 搭配会梯度消失。分类任务若用 MSE 配饱和的 Sigmoid 输出,梯度会小到几乎不更新——这正是交叉熵在分类中胜出的原因。
- 损失下降不等于指标变好。训练损失持续走低时,业务关心的准确率、召回率可能停滞甚至下滑,因为它优化的是代理指标而非终极目标。
- 对离群点的敏感度因损失而异。均方误差会被极大离群值主导,改用平均绝对误差或 Huber 会更稳健,代价是在零点附近不可导或不平滑。
关键术语
- 均方误差 MSE
- 预测与标签差值的平方在样本上的平均,回归默认损失
- 交叉熵
- 正确类别预测概率的负对数,分类默认损失
- 合页损失 Hinge
- 要求正确类别得分高出一定间隔,SVM 的核心
- 对比损失
- 在嵌入空间中把同类拉近、异类推远的损失