目标:系统掌握深度学习中核心损失函数的设计动机、数学公式、梯度特性与适用场景,建立"损失函数工具箱"的完整认知。

前置要求:了解基本的神经网络概念(前向传播、反向传播)和微积分基础(求导、链式法则)。

损失函数是深度学习的"指南针"——它告诉模型"你现在离目标有多远"以及"该往哪个方向走"。不同的任务需要不同的损失函数,选对损失函数往往比调参更重要。本文按任务类型系统梳理各类损失函数,给出公式、形状、梯度特性和记忆小贴士。


1. 回归损失(Regression Losses)

  回归任务的目标是预测连续数值。不同的回归损失函数对误差的"惩罚方式"不同,直接影响模型对异常值的敏感度和收敛行为。

1.1 均方误差(MSE, Mean Squared Error)

简介:最经典的回归损失,对误差做平方惩罚。大误差被急剧放大,迫使模型优先修正严重偏离的预测。

$$ \mathcal{L}_{\text{MSE}} = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2 $$

形状与梯度:函数形状为抛物线,开口向上。梯度为 $\frac{2}{n}(\hat{y} - y)$,误差越大梯度越大,惩罚越重。

数值示例:假设真实值 $y = 3$,预测值 $\hat{y} = 5$,则 $\mathcal{L} = (3 - 5)^2 = 4$,梯度 $= 2(5 - 3) = 4$(推动预测值减小)。若 $\hat{y} = 3.1$(接近),则 $\mathcal{L} = 0.01$,梯度 $= 0.2$——误差小,惩罚轻,修正力度也小。

MSE Loss 函数图像

类比:严厉老师。学生错一道题扣 1 分,错十道题扣 100 分(平方关系)——大错受到不成比例的重罚。

记忆小贴士:MSE = “Mean Squared Error”——记住"Squared",误差被平方放大。

适用场景:误差服从正态分布时的最优选择(从最大似然估计可推导出)。适合大多数回归任务,但对异常值敏感。

1.2 平均绝对误差(MAE, Mean Absolute Error)

简介:对误差取绝对值,线性惩罚。所有误差不论大小受到同等程度的惩罚。

$$ \mathcal{L}_{\text{MAE}} = \frac{1}{n}\sum_{i=1}^{n}|y_i - \hat{y}_i| $$

形状与梯度:函数形状为 V 形,在零点处不可导(次梯度为 $\pm 1$)。梯度恒定,不随误差大小变化。

MAE Loss 函数图像

类比:温和老师。不管学生错多少,每错一题扣一分,一视同仁。

记忆小贴士:MAE = “Mean Absolute Error”——记住"Absolute",误差取绝对值

适用场景:数据中存在异常值时比 MSE 更鲁棒。缺点是在零点附近梯度不变,可能导致收敛不够精细。

1.3 Huber Loss(平滑 L1 损失)

简介:结合 MSE 和 MAE 的优点。误差小时用二次函数(精细),误差大时用线性函数(鲁棒),通过阈值 $\delta$ 控制切换。

$$ \mathcal{L}_{\text{Huber}} = \begin{cases} \frac{1}{2}(y_i - \hat{y}_i)^2 & \text{if } |y_i - \hat{y}_i| \leq \delta \\ \delta |y_i - \hat{y}_i| - \frac{1}{2}\delta^2 & \text{if } |y_i - \hat{y}_i| > \delta \end{cases} $$

形状与梯度:形状为中心二次曲线、两侧线性,像一个"圆底的碗"。在 $\delta$ 处平滑过渡,处处可导。

Huber Loss 函数图像

类比:智能老师。小错温和指点(二次),大错不暴怒但也不放过(线性)——既关注细节又不被极端错误带偏。

记忆小贴士:Huber = “Hub”(中心)——中心是二次的(MSE),边缘是线性的(MAE),由 $\delta$ 划分边界。

适用场景:数据中可能有异常值但又希望小误差时精细优化。$\delta$ 通常取 1.0。

1.4 Log-Cosh Loss

简介:用 $\log(\cosh(x))$ 近似 Huber Loss 的平滑版本,处处二阶可导,自然融合 MSE 和 MAE 的优点。

$$ \mathcal{L}_{\text{Log-Cosh}} = \frac{1}{n}\sum_{i=1}^{n}\log(\cosh(y_i - \hat{y}_i)) $$

形状与梯度:小误差时近似 $\frac{x^2}{2}$(MSE 行为),大误差时近似 $|x| - \log 2$(MAE 行为)。形状类似 Huber,但更加光滑。

Log-Cosh Loss 函数图像

类比:优雅的 Huber。像 Huber 一样"智能",但转角处更圆润(二阶导数连续),优化器更喜欢。

记忆小贴士:Log-Cosh = “对数 + 双曲余弦”——$\cosh$ 函数像个"光滑的 V",取对数后变成"光滑的 Huber"。

回归损失函数对比

适用场景:需要二阶导数信息的优化算法(如牛顿法)时优于 Huber。

  回归损失关注连续数值的误差大小。当任务变为预测离散类别时,损失函数的设计思路也随之改变——从"误差有多大"变为"预测对了没有"。


2. 分类损失(Classification Losses)

  分类任务的目标是预测离散类别。不同的分类损失函数在概率建模、类别不平衡处理等方面各有侧重。

2.1 0-1 Loss

简介:最朴素的分类损失——预测对了损失为 0,预测错了损失为 1。不可导,无法用于梯度下降,仅作为理论概念和评估指标。

$$ \mathcal{L}_{0\text{-}1} = \mathbb{1}[\hat{y} \neq y] = \begin{cases} 0 & \text{if } \hat{y} = y \\ 1 & \text{if } \hat{y} \neq y \end{cases} $$

类比:考试评分。对就是对,错就是错,没有"差一点"的说法——但这种评分方式无法告诉学生"该怎么改进"。

记忆小贴士:0-1 = “要么 0 要么 1”——非黑即白,不可导,只存在于理论中。

2.2 二元交叉熵(BCE, Binary Cross-Entropy)

简介:二分类任务的标准损失。基于最大似然估计,对预测概率取对数惩罚。预测越自信但越错误,惩罚越重。

$$ \mathcal{L}_{\text{BCE}} = -\frac{1}{n}\sum_{i=1}^{n}\left[y_i \log(p_i) + (1 - y_i)\log(1 - p_i)\right] $$

形状与梯度:当真实标签 $y = 1$ 时,$-\log(p)$ 在 $p \to 0$ 时趋向 $+\infty$(对数惩罚,陡峭上升)。梯度为 $\frac{\hat{y} - y}{\hat{y}(1 - \hat{y})}$(结合 Sigmoid 后简化为 $\hat{y} - y$)。

BCE 函数图像

数值示例:假设真实标签 $y = 1$。若 $\hat{y} = 0.7$(正确但不够自信),则 $\mathcal{L} = -\log(0.7) = 0.357$。若 $\hat{y} = 0.01$(自信但错误),则 $\mathcal{L} = -\log(0.01) = 4.605$——惩罚重 13 倍。这正是"自信的错误最可悲"的数学体现。

类比:自信的错误最可悲。模型 99% 确定是猫,结果是狗——惩罚极重。模型 51% 确定是猫,结果是狗——惩罚较轻。

记忆小贴士:BCE = “Binary Cross-Entropy"——“交叉"指的是两个概率分布(真实 vs 预测)之间的"交叉信息量”。

适用场景:二分类任务,配合 Sigmoid 激活函数使用。

2.3 多类交叉熵(Cross-Entropy Loss, CEL)

简介:多分类任务的标准损失。与 Softmax 配合,将 logits 转化为概率分布后计算负对数似然。

$$ \mathcal{L}_{\text{CE}} = -\frac{1}{n}\sum_{i=1}^{n}\sum_{c=1}^{C} y_{i,c} \log(p_{i,c}) $$

对于 one-hot 标签,简化为:

$$ \mathcal{L}_{\text{CE}} = -\frac{1}{n}\sum_{i=1}^{n} \log(p_{i,y_i}) $$

其中 $p_{i,y_i}$ 是模型对第 $i$ 个样本在正确类别上的预测概率。

类比:BCE 的多分类版本。BCE 是"二选一”,CEL 是"多选一"——本质上都在最大化正确类别的预测概率。

记忆小贴士:CEL = “Cross-Entropy Loss”——与 BCE 的区别只在"Binary"(二分类)vs 多分类。公式中 $y$ 是 one-hot,所以只剩正确类那一项。

适用场景:多分类任务,配合 Softmax 使用。等价于负对数似然(NLL)。

2.4 Focal Loss

简介:为解决类别不平衡而设计。在标准交叉熵基础上加入调节因子 $(1 - p_t)^\gamma$,自动降低"易分类样本"的权重,让模型专注于"难分类样本"。

$$ \mathcal{L}_{\text{Focal}} = -\alpha_t (1 - p_t)^\gamma \log(p_t) $$

其中 $p_t$ 是模型对正确类别的预测概率,$\gamma$ 是聚焦参数(通常取 2),$\alpha_t$ 是类别平衡因子。

直觉:当模型对某个样本已经很确信($p_t$ 接近 1),$(1 - p_t)^\gamma$ 接近 0,这个样本的损失几乎被忽略——模型不再浪费精力在已经学会的样本上。

Focal Loss 函数图像

类比:专攻难题的老师。普通交叉熵像老师对所有题目一视同仁地讲解;Focal Loss 像聪明的老师,发现学生已经会的题就跳过,专门讲解学生做错的难题。

记忆小贴士:Focal = “聚焦”——聚焦于难样本,$\gamma$ 越大聚焦效果越强。

适用场景:严重类别不平衡的任务(如目标检测中的前景/背景比 1:1000)。

2.5 Hinge Loss

简介:支持向量机(SVM)的核心损失。引入"间隔"概念——不仅要分类正确,还要让正确类别的分数比错误类别高出一个"安全间隔"(margin)。

$$ \mathcal{L}_{\text{Hinge}} = \frac{1}{n}\sum_{i=1}^{n}\max(0, 1 - y_i \cdot \hat{y}_i) $$

其中 $y_i \in \{-1, +1\}$,$\hat{y}_i$ 是模型的原始输出分数(未经过 Sigmoid)。

形状与梯度:形状为折线形——当 $y \cdot \hat{y} \geq 1$ 时损失为 0(已经分类正确且超出间隔);否则线性增长。梯度为 $-y$(在损失非零时)或 0(在间隔内)。

Hinge Loss 函数图像

类比:安全距离。不仅要过马路(分类正确),还要离车足够远(间隔足够大)才觉得安全。离车太近就算没被撞也要扣分。

记忆小贴士:Hinge = “铰链”——像门的铰链一样,到了安全位置就"咔嗒"锁住(损失为 0),没到就一直有压力。

适用场景:SVM 分类、部分度量学习任务。在深度学习中较少直接使用,但其"间隔"思想影响了 Triplet Loss 等后续工作。

  以上分类损失直接优化预测准确率。但在人脸识别、图像检索等任务中,我们不关心具体类别,只关心"两张图片像不像"——这需要学习一个距离度量空间。


3. 排序与度量学习损失(Ranking and Metric Learning Losses)

  这类损失函数不直接预测类别,而是学习一个距离度量空间——让相似的样本靠近,不相似的样本远离。

3.1 Triplet Loss

简介:使用三元组(锚点 $a$、正样本 $p$、同类、负样本 $n$、异类)训练,目标是让锚点与正样本的距离小于与负样本的距离至少一个间隔 $\alpha$。

$$ \mathcal{L}_{\text{Triplet}} = \max\left(0, \|f(a) - f(p)\|_2^2 - \|f(a) - f(n)\|_2^2 + \alpha\right) $$

其中 $f(\cdot)$ 是嵌入网络,$\alpha$ 是间隔参数。

类比:社交距离。你(锚点)应该离朋友(正样本)更近,离陌生人(负样本)更远——至少要保持一个"安全距离" $\alpha$。

记忆小贴士:Triplet = “三胞胎”——三个一组:锚点、正样本、负样本。目标是"拉近正、推远负"。

Triplet Loss 示意图

适用场景:人脸识别、图像检索、签名验证等需要学习相似度的任务。

3.2 Contrastive Loss

简介:孪生网络(Siamese Network)使用的损失。处理样本对而非三元组,分两个分支——相似对拉近,不相似对推远。

$$ \mathcal{L}_{\text{Contrastive}} = \frac{1}{2n}\sum_{i=1}^{n}\left[y_i \cdot d_i^2 + (1 - y_i) \cdot \max(0, m - d_i)^2\right] $$

其中 $d_i = \|f(x_i^1) - f(x_i^2)\|_2$ 是两个样本嵌入的距离,$y_i = 1$ 表示同类,$y_i = 0$ 表示异类,$m$ 是间隔。

类比:配对游戏。给两张照片,判断是不是同一个人——是同一个人就拉近他们的"特征距离",不是就推远到至少 $m$ 的距离。

记忆小贴士:Contrastive = “对比”——成对对比,同拉异推。

适用场景:孪生网络、签名验证、少样本学习。

3.3 InfoNCE Loss

简介:对比学习的核心损失(SimCLR、CLIP 等模型所用)。将一个正样本和 $N-1$ 个负样本放在一起,本质上是一个 $N$ 分类交叉熵——正样本是"正确类别"。

$$ \mathcal{L}_{\text{InfoNCE}} = -\log \frac{\exp(\text{sim}(z_i, z_j) / \tau)}{\sum_{k=1}^{N} \exp(\text{sim}(z_i, z_k) / \tau)} $$

其中 $\text{sim}(\cdot, \cdot)$ 是余弦相似度,$\tau$ 是温度系数

温度系数 $\tau$ 的作用:$\tau$ 越小,分布越尖锐(模型越"自信",只关注最难的负样本);$\tau$ 越大,分布越平滑(模型越"温和",关注所有负样本)。

InfoNCE 温度系数效应

类比:找朋友游戏。在一群人中找到你的朋友(正样本),温度低时你只盯着最像朋友的人看,温度高时你会仔细审视每一个人。

记忆小贴士:InfoNCE = “Info + NCE”——NCE 是 Noise Contrastive Estimation 的缩写。本质上是"用 Softmax 做对比学习"。

适用场景:自监督对比学习(SimCLR、MoCo、CLIP 等)。

  度量学习损失关注样本间的距离关系。另一类损失函数则关注概率分布之间的差异——衡量模型输出的分布与真实分布有多"远"。


4. 概率分布与生成损失(Distribution and Generation Losses)

  这类损失函数关注的是概率分布之间的差异,而非单个样本的预测误差。

4.1 KL 散度(Kullback-Leibler Divergence)

简介:衡量两个概率分布 $P$(真实)和 $Q$(模型)之间的"距离"。非对称——$D_{\text{KL}}(P \| Q) \neq D_{\text{KL}}(Q \| P)$。

$$ D_{\text{KL}}(P \| Q) = \sum_{k} P(k) \log \frac{P(k)}{Q(k)} = \mathbb{E}_{P}\left[\log \frac{P}{Q}\right] $$

性质

  • $D_{\text{KL}} \geq 0$,当且仅当 $P = Q$ 时等于 0。
  • 非对称:$D_{\text{KL}}(P \| Q)$(前向 KL)倾向于覆盖 $P$ 的所有模式(mode-covering);$D_{\text{KL}}(Q \| P)$(反向 KL)倾向于聚焦 $P$ 的主要模式(mode-seeking)。

类比:两份简历的差距。$D_{\text{KL}}(P \| Q)$ 用 $P$ 的视角看 $Q$——“Q 丢失了多少 P 的信息?”

记忆小贴士:KL = “Kullback-Leibler”——记住它非对称,箭头方向很重要。

KL 散度可视化

适用场景:VAE 的正则化项、RLHF 中防止策略模型偏离参考模型、知识蒸馏。

4.2 负对数似然(NLL, Negative Log-Likelihood)

简介:最大似然估计(MLE)的等价损失形式。最大化数据的对数似然等价于最小化负对数似然。

$$ \mathcal{L}_{\text{NLL}} = -\frac{1}{n}\sum_{i=1}^{n} \log p_\theta(x_i) $$

与交叉熵的关系:在分类问题中,NLL 与交叉熵完全等价(当标签为 one-hot 时)。NLL 更强调"模型生成数据的概率"这一视角。

与困惑度的关系:困惑度(Perplexity, PPL)是语言模型最常用的评估指标,定义为 $\text{PPL} = e^{\mathcal{L}_{\text{NLL}}}$。直觉上,PPL 表示模型在每个 token 上平均"犹豫"于多少个候选词——PPL 越低,模型越确信。例如 PPL = 10 意味着模型平均在 10 个词之间犹豫。

类比:侦探破案。NLL 像侦探在问:“如果我的理论(模型参数)是对的,这些证据(数据)出现的可能性有多大?“可能性越大越好。

记忆小贴士:NLL = “Negative Log-Likelihood”——“负"的"对数似然”,最大化似然 = 最小化 NLL。

适用场景:语言模型训练(自回归目标)、任何基于概率的生成模型。

4.3 对抗损失(Adversarial Loss)

简介:生成对抗网络(GAN)的核心。生成器 $G$ 和判别器 $D$ 进行极小极大博弈——生成器试图"欺骗"判别器,判别器试图"识破"生成器。

$$ \min_G \max_D \; \mathbb{E}_{x \sim p_{\text{data}}}[\log D(x)] + \mathbb{E}_{z \sim p_z}[\log(1 - D(G(z)))] $$

两个角色

  • 判别器 $D$:最大化此目标——真实数据给高分,生成数据给低分。
  • 生成器 $G$:最小化此目标——让判别器对生成数据给高分。

类比:造假者与鉴定师。造假者(生成器)不断提升伪造技术,鉴定师(判别器)不断提升鉴别能力——两者在对抗中共同进步。

记忆小贴士:GAN = “Generative Adversarial Network”——“生成” + “对抗”。$\min_G \max_D$ 是"生成器最小化、判别器最大化”。

GAN 判别器输出

适用场景:图像生成(StyleGAN)、图像修复、数据增强。

  以上损失函数定义了模型的优化目标。但模型容量越大,越容易"记住"训练数据——为了防止过拟合,还需要加入正则化项来控制模型复杂度。


5. 正则化损失(Regularization Losses)

  正则化项作为损失函数的附加项,控制模型复杂度,防止过拟合。

5.1 L1 正则化

简介:对权重取绝对值之和,倾向于产生稀疏解(部分权重精确为零),相当于自动特征选择。

$$ \mathcal{L}_{\text{L1}} = \lambda \sum_{i} |w_i| $$

几何解释:约束区域是菱形(二维)或超正方体。菱形的尖角恰好在坐标轴上,损失函数的椭圆等高线容易与尖角相切——对应零权重。

类比:恒定摩擦力。不管物体在什么位置,摩擦力大小恒定——小权重被"推"到零,大权重受影响较小。

记忆小贴士:L1 = “绝对值”——abs(L1) = “Absolute”。菱形 → 尖角 → 稀疏。

适用场景:需要特征选择、稀疏模型的场景。

5.2 L2 正则化

简介:对权重取平方和,倾向于让权重趋近于零但不为零,防止过拟合。在 SGD 下等价于权重衰减。

$$ \mathcal{L}_{\text{L2}} = \frac{\lambda}{2} \sum_{i} w_i^2 $$

几何解释:约束区域是圆形(二维)或超球面。圆形表面光滑,与椭圆等高线的切点通常不在坐标轴上——没有稀疏性。

类比:弹簧力。每个权重上绑了一根弹簧拉向零,权重越大弹簧拉力越大——但弹簧永远拉不到精确的零。

记忆小贴士:L2 = “平方”——L2 的平方 = “Squared”。圆形 → 光滑 → 不稀疏。

适用场景:大多数深度学习任务的默认正则化。注意:在 Adam 优化器下 L2 正则化与权重衰减不等价,应使用 AdamW。

  正则化项控制模型复杂度。此外,一些常用评估指标(如 RMSE、MBE)也常被误用作训练损失——它们作为损失时存在梯度问题,需要特别注意。


6. 附加评估指标型损失(作为损失需谨慎)

  以下指标常用于评估,但作为训练损失时需要特别注意其梯度特性。

6.1 平均偏差误差(MBE, Mean Bias Error)

简介:保留误差符号的平均值,用于检测模型是否存在系统性偏差(如总是高估或低估)。

$$ \mathcal{L}_{\text{MBE}} = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i) $$

问题:正负误差会互相抵消——一个 +100 的误差和一个 -100 的误差,MBE 为 0,看起来"完美”。因此一般不作为训练损失,只用于评估。

类比:班级平均分。一个班有人考 100 分有人考 0 分,平均 50 分看起来还行——但掩盖了极端差异。

记忆小贴士:MBE = “Mean Bias Error”——专门检测"偏见"(系统性偏差),不检测"波动"。

6.2 均方根误差(RMSE, Root Mean Squared Error)

简介:MSE 开根号,使量纲与原始数据一致(MSE 的单位是原始数据的平方)。

$$ \mathcal{L}_{\text{RMSE}} = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2} $$

特点:RMSE 与 MSE 的排序关系一致(对同一组模型,RMSE 排名与 MSE 相同)。可以作为训练损失,但梯度在零点附近有奇异性。

记忆小贴士:RMSE = “Root MSE”——MSE 开根号,量纲还原。

适用场景:评估指标首选之一。作为训练损失时需注意零点梯度问题,通常直接用 MSE 更稳定。


7. 损失函数选择指南

任务类型推荐损失核心原因记忆关键词
回归(无异常值)MSE正态分布假设下的 MLE 最优抛物线,平方惩罚
回归(有异常值)Huber / MAE线性惩罚,鲁棒V 形 / 碗底
回归(需二阶可导)Log-Cosh处处二阶可导,融合 MSE+MAE光滑 Huber
二分类BCEMLE 最优,梯度简洁对数惩罚,$\hat{y} - y$
多分类Cross-EntropySoftmax + NLL,标准选择交叉熵 = KL = NLL
类别不平衡分类Focal Loss自动降权易样本,聚焦难样本专攻难题
度量学习Triplet / InfoNCE学习距离空间,同拉异推三胞胎 / 温度 Softmax
图像生成GAN Loss对抗博弈,生成逼真样本造假者 vs 鉴定师
分布匹配KL 散度衡量分布差异,非对称非对称距离
语言建模NLL自回归目标,MLE 等价最大化下一个词概率
防止过拟合L2 正则化权重衰减,平滑约束弹簧力,圆形
特征选择L1 正则化稀疏解,自动选择恒定力,菱形尖角

8. 损失函数之间的内在联系

flowchart TD
    MLE["最大似然估计(MLE)"] --> NLL["负对数似然(NLL)"]
    NLL --> CE["交叉熵(CE)"]
    NLL --> MSE["均方误差(MSE)"]
    CE --> BCE["二元交叉熵(BCE)"]
    CE --> CEL["多类交叉熵(CEL)"]
    CE --> Focal["Focal Loss"]
    CE --> InfoNCE["InfoNCE"]
    MAE["平均绝对误差(MAE)"] --> Huber["Huber Loss"]
    MSE --> Huber
    Huber --> LogCosh["Log-Cosh"]
    CE --> KL["KL 散度"]
    NLL --> KL
    NLL --> PPL["困惑度(PPL)"]
    Hinge["Hinge Loss"] --> Triplet["Triplet Loss"]
    Hinge --> Contrastive["Contrastive Loss"]
    Hinge --> InfoNCE
    L1["L1 正则化"] --> Reg["正则化总损失"]
    L2["L2 正则化"] --> Reg

  L1 vs L2 正则化几何解释

从上图可以看出,大部分损失函数都可以追溯到最大似然估计(MLE) 这一根基。

理解了 MLE → NLL → 交叉熵/MSE 这条主线,就掌握了损失函数设计的核心哲学:最大化模型生成观测数据的概率


延伸阅读:关于 MLE 如何推导出交叉熵和 MSE 的完整数学过程,以及交叉熵、KL 散度、NLL 三者的等价关系证明,可参考 大语言模型训练机制全解·第一篇 的第 6 章。