损失函数
Loss Function
也称为成本函数(Cost Function)或目标函数(Objective Function)
用于量化模型预测值与真实值之间差异的函数。在模型训练过程中,我们通过最小化损失函数来优化模型参数,从而使模型的预测尽可能地接近真实值。
类型 | 常见损失函数 | 适用场景 |
---|---|---|
回归(数值预测) | MSE、MAE、Huber Loss、Smooth L1 Loss | 连续数值输出 |
分类(离散预测) | Cross-Entropy Loss、Focal Loss、Hinge Loss | 分类任务(Softmax / Sigmoid) |
排序 / 生成 | Triplet Loss、Contrastive Loss、CTC Loss | 检索、匹配、序列预测 |
回归问题 Regression
均方误差 MSE
Mean Squared Error
基础思想:预测值和真实值的差平方后求平均,惩罚大误差。计算预测值与真实值之差的平方的平均值。对较大的误差惩罚更重,因此对异常值(outliers)比较敏感。损失函数是凸的,易于优化。
: 真实值 : 预测值 : 样本数量
特点:- 对大误差特别敏感(平方放大)。
- 常用于一般的回归任务。
适用场景: 大多数回归问题,当异常值不被认为是噪声时。预测房价、温度、时间序列数值等。
平均绝对误差 MAE
Mean Absolute Error
基础思想:预测值和真实值的差的绝对值后求平均,惩罚整体偏差。
计算预测值与真实值之差的绝对值的平均值。对异常值不那么敏感,因为它对误差的惩罚是线性的。但其在 0 点不可导,优化相对困难。
特点:
- 对异常值鲁棒(比 MSE 好)。
- 但不可导于 0 处(影响优化)。
应用场景:对异常值不敏感时,做稳健回归。
适用场景: 当数据中存在较多异常值,且不希望模型过度关注这些异常值时。
Huber Loss(平滑版 MSE+MAE)
基础思想:
小误差用 MSE, 大误差用 MAE, 兼顾两者优点。结合了 MSE 和 MAE 的优点。当误差较小时使用 MSE(平方误差),当误差较大时使用 MAE(绝对误差)。
数学公式:
特点:
- 小误差: 像 MSE
- 大误差: 像 MAE
对小误差是二次的,对大误差是线性的,因此对异常值具有鲁棒性,同时在 0 点可导。
应用场景:
- 当数据中可能存在异常值,但又希望在误差较小时保持 MSE 的平滑性时。,自然界数据回归 (如金融数据), 既有少量大误差也有大量小误差。
分类问题 Classification
交叉熵损失(Cross Entropy Loss)
- 用于多分类,配合Softmax。
- 也有二分类版(Binary Cross Entropy,配合Sigmoid)。
二元交叉熵 (Binary Cross-Entropy, BCE)
- 公式: 对于二分类问题,单个样本的损失为:
其中 是真实标签(0 或 1), 是模型预测为正类的概率。 - 特点: 衡量了两个概率分布之间的差异。当预测概率与真实标签相符时,损失很小;反之,损失很大。是逻辑回归和二分类神经网络的常用损失函数。
- 适用场景: 二分类问题。
对于多分类问题,假设有
Focal Loss(焦点损失)
基础思想:为了解决类别极度不平衡问题,让模型关注难分类样本。
: 预测正确类别的概率。 、 : 调节参数。
特点:
抑制容易分类的样本。 - 强化难样本的学习。
应用场景:检测极小目标(如目标检测中的 RetinaNet)
Hinge 损失 (Hinge Loss)
排序 / 生成
损失函数的选择原则
- 任务类型: 回归问题通常选择 MSE、MAE 或 Huber;分类问题通常选择交叉熵。
- 数据特性: 如果数据中存在较多异常值,MAE 或 Huber 损失可能比 MSE 更合适。
- 模型特性: 某些模型(如 SVM)有其特定的损失函数。
- 优化难度: 损失函数的凸性、可导性会影响优化算法的选择和收敛性。