损失函数 (Loss Function)
损失函数是机器学习中衡量模型预测值与真实值之间差异的数学函数。模型训练的目标是最小化损失函数,使预测结果尽可能接近真实标签。损失函数的选择直接影响模型的收敛速度、最终精度和泛化能力。
核心概念
损失函数 接受真实标签 和模型预测 ,输出一个非负标量。在训练过程中,优化器(如 SGD、Adam)通过反向传播计算损失函数对模型参数的梯度,并沿梯度下降方向更新参数。
损失函数 vs 代价函数 vs 目标函数
- 损失函数 (Loss Function):单个样本的误差,记为
- 代价函数 (Cost Function):整个训练集上损失函数的均值,记为
- 目标函数 (Objective Function):代价函数 + 正则化项,记为
在日常讨论中,三者常被混用,但上述区分在数学推导中是严格的。
回归任务损失函数
MSE (Mean Squared Error,均方误差)
MSE 是回归任务中最常用的损失函数。由于平方操作,MSE 对离群点 (outliers) 极其敏感 — 误差为 10 的样本贡献的损失是误差为 1 的样本的 100 倍。这一特性在数据干净时是好属性(迫使模型关注大误差样本),但在数据含噪声时会导致模型被离群点带偏。
优点:处处可导,梯度连续,有唯一全局最优解(线性回归下) 缺点:对离群点敏感,误差量纲为平方
MAE (Mean Absolute Error,平均绝对误差)
MAE 对离群点的鲁棒性优于 MSE,因为梯度恒为常数(),大误差样本不会主导梯度更新。但在 处不可导,通常使用次梯度 (subgradient) 处理。
优点:对离群点鲁棒,误差量纲与原数据一致 缺点:零点处不可导,梯度不随误差减小而衰减
Huber Loss (Smooth L1)
Huber Loss 结合了 MSE 和 MAE 的优点:误差较小时用 MSE(平方),误差较大时用 MAE(线性),通过超参数 控制切换点。
分类任务损失函数
Cross-Entropy Loss (交叉熵损失)
交叉熵是分类任务的标准损失函数,衡量两个概率分布之间的差异。
二分类 (Binary Cross-Entropy):
多分类 (Categorical Cross-Entropy):
其中 通常经过 Softmax 激活:
交叉熵配合 Softmax 输出时,梯度形式简洁:,这使得反向传播高效且数值稳定。
Hinge Loss (铰链损失)
主要用于 SVM 和最大间隔分类器:
其中 。Hinge Loss 只惩罚分类错误且间隔不足的样本,对已正确分类且间隔足够的样本梯度为零,产生稀疏解。
Focal Loss (焦点损失)
Focal Loss 是交叉熵的改进版本,专为解决类别不平衡问题设计,在目标检测(RetinaNet)中效果显著:
其中 是模型对正确类别的预测概率, 是聚焦参数, 是类别权重。
- 当 时退化为标准交叉熵
- 时,易分类样本( 接近 1)的损失被大幅降低,模型专注于难分类样本
- 典型设置:
损失函数对比
| 损失函数 | 任务类型 | 对离群点鲁棒性 | 可导性 | 典型应用场景 |
|---|---|---|---|---|
| MSE | 回归 | 低(敏感) | 处处可导 | 数据干净、无离群点的回归 |
| MAE | 回归 | 高 | 零点不可导 | 含噪声数据的回归 |
| Huber Loss | 回归 | 中 | 处处可导 | 平衡精度与鲁棒性的回归 |
| Cross-Entropy | 分类 | 中 | 平稳可导 | 图像分类、NLP、绝大多数分类任务 |
| Hinge Loss | 分类 | 高 | 部分可导 | SVM、最大间隔分类 |
| Focal Loss | 分类 | 高 | 平稳可导 | 类别不平衡、目标检测、前景-背景分割 |
选择指南
- 回归任务:默认使用 MSE;若数据含离群点,切换到 MAE 或 Huber Loss
- 二分类:默认使用 Binary Cross-Entropy
- 多分类:默认使用 Cross-Entropy + Softmax
- 类别严重不平衡:使用 Focal Loss 或 Weighted Cross-Entropy
- 需要稀疏解:使用 Hinge Loss(配合 SVM)
- 概率校准:Cross-Entropy 是 proper scoring rule,能产生校准良好的概率估计
相关笔记
- 梯度下降 (Gradient Descent) — 损失函数的优化方法
- 正则化 (Regularization) — 目标函数中损失项与正则项的平衡
- 过拟合 (Overfitting) — 损失函数选择与过拟合的关系
- 激活函数 (Activation Functions) — Softmax 与交叉熵的组合
- 学习率 (Learning Rate) — 学习率与损失函数收敛