机器学习、深度学习中常用损失函数
在机器学习(ML)和深度学习(DL)中,损失函数(Loss Function)用于衡量模型预测值与真实值之间的差异。选择合适的损失函数取决于任务类型(回归、分类、生成等)。
本文列出来了常用的损失函数、公式及必要的推导过程,按任务类型分类。
一、 回归任务 (Regression)
回归任务的目标是预测连续数值。
1. 均方误差 (Mean Squared Error, MSE / L2 Loss)
最常用的回归损失函数。
- 公式:
其中 $y_i$ 是真实值,$\hat{y}_i$ 是预测值。
- 推导(从极大似然估计 MLE 角度):
假设模型预测值与真实值之间的误差 $\epsilon$ 服从高斯分布(正态分布),即 $y = \hat{y} + \epsilon$,且 $\epsilon \sim \mathcal{N}(0, \sigma^2)$。
概率密度函数为:对数据集进行极大似然估计(MLE),即最大化联合概率(似然函数):取对数似然(Log-Likelihood):最大化 $\ln L$ 等价于最小化第二项(负号),去除常数项后,即为最小化均方误差 (MSE)。
2. 平均绝对误差 (Mean Absolute Error, MAE / L1 Loss)
对离群点(Outliers)比 MSE 更鲁棒。
公式:
推导背景:
相当于假设误差服从拉普拉斯分布 (Laplace Distribution) 时的极大似然估计。
3. Huber Loss / Smooth L1 Loss
结合了 MSE 和 MAE 的优点:在误差较小时是平方误差(收敛快),误差较大时是线性误差(鲁棒)。常用于目标检测(如 Faster R-CNN)。
- 公式:
二、 分类任务 (Classification)
分类任务的目标是预测离散标签。
1. 二元交叉熵 (Binary Cross-Entropy, BCE / Log Loss)
用于二分类问题(输出为 0 或 1 的概率)。
公式:
推导(从 MLE 角度):
二分类服从伯努利分布 (Bernoulli Distribution)。
对于样本 $i$,真实标签 $y_i \in {0, 1}$,模型预测为 1 的概率为 $\hat{y}_i$。
概率质量函数写作:似然函数:
取对数似然:
最大化对数似然等价于最小化其负值,即 BCE Loss。
2. 类别交叉熵 (Categorical Cross-Entropy, CCE)
用于多分类问题(配合 Softmax 使用)。
公式:
其中 $C$ 是类别数,$y$ 是 One-hot 编码的真实向量,$\hat{y}$ 是 Softmax 输出的概率向量。
Softmax + Cross Entropy 的梯度推导(经典面试题):
假设神经网络输出 Logits 为 $z$,经过 Softmax 得到 $\hat{y}$:损失函数(针对单个样本):
我们需要求 $\frac{\partial L}{\partial z_i}$。
根据链式法则:第一步:求 $\frac{\partial L}{\partial \hat{y}_k}$
第二步:求 Softmax 的导数 $\frac{\partial \hat{y}_k}{\partial z_i}$
分为两种情况:- 当 $k = i$ 时:
- 当 $k \neq i$ 时:
第三步:代回求和
因为真实标签 $y$ 是 One-hot 向量,$\sum{k} y_k = 1$,即 $\sum{k \neq i} y_k = 1 - y_i$。
结论: Softmax + Cross Entropy 的梯度非常优雅,就是 预测值 - 真实值。
3. Focal Loss
用于解决分类中极度类别不平衡(Class Imbalance)问题(如目标检测中背景极其多)。基于二元交叉熵改进。
- 公式:其中 $p_t$ 是模型对该样本属于真实类别的预测概率,$\gamma$ 是调节因子(通常取 2)。
- 原理: 对于易分类样本($p_t$ 很大),$(1-p_t)^\gamma$ 趋近于 0,权重被降低;模型更关注难分类样本。
4. Hinge Loss (合页损失)
主要用于支持向量机 (SVM)。
- 公式:其中 $y \in {-1, 1}$,$\hat{y}$ 是模型的输出分数(未经过 Sigmoid)。
三、 嵌入与度量学习 (Embedding / Metric Learning)
常用于人脸识别、推荐系统,目的是拉近相似样本,推开不相似样本。
1. Triplet Loss (三元组损失)
用于训练差异性,输入为一个三元组:Anchor ($A$), Positive ($P$), Negative ($N$)。
- 公式:
- $d(x, y)$:距离度量(通常是欧氏距离)。
- $\alpha$:Margin(间隔),强制 $P$ 比 $N$ 离 $A$ 更近至少 $\alpha$。
2. Contrastive Loss (对比损失)
常用于孪生网络 (Siamese Network)。
- 公式:
- $Y=0$ 表示是同类对,最小化距离 $D$。
- $Y=1$ 表示是异类对,若距离小于 $m$,则增大距离。
四、 生成模型 (Generative Models)
1. KL 散度 (Kullback-Leibler Divergence)
衡量两个概率分布 $P$ 和 $Q$ 的差异。常用于 VAE(变分自编码器)中的正则项。
- 公式(离散):
- 公式(连续):
2. GAN Loss (Minimax Loss)
生成对抗网络的损失函数。
- 公式:
- 判别器 $D$ 希望最大化该值(正确区分真假)。
- 生成器 $G$ 希望最小化该值(骗过判别器)。
总结如下
| 任务类型 | 损失函数 | 适用场景 | 备注 |
|---|---|---|---|
| 回归 | MSE (L2) | 一般回归 | 对异常值敏感,对应高斯分布假设 |
| MAE (L1) | 有噪回归 | 对异常值鲁棒,对应拉普拉斯分布假设 | |
| Huber | 目标检测框回归 | 结合 L1 和 L2 | |
| 分类 | Cross Entropy | 多分类/二分类 | 对应多项分布/伯努利分布假设 |
| Hinge Loss | SVM | 最大化间隔 | |
| Focal Loss | 类别不平衡 (如检测) | 降低简单样本权重 | |
| 度量学习 | Triplet Loss | 人脸识别 | Anchor-Positive-Negative |
| 生成 | KL Divergence | VAE | 衡量分布差异 |







