总结对照(先看这张表)

类别损失常用形式概率 / 理论解释
回归MSE1N∑(yi−y^i)2\frac1N\sum(y_i-\hat y_i)^2高斯 NLL(固定方差)
回归MAE1N∑∣yi−y^i∣\frac1N\sum\lvert y_i-\hat y_i\rvert拉普拉斯 NLL
回归Gaussian NLL见 §1.3可学习方差高斯 NLL
回归Huber / Smooth L1见 §1.4MSE/MAE 折中的稳健 M-估计(非单一分布)
回归Quantile / Pinball见 §1.5使 F(q)=τF(q)=\tau 的分位点 M-估计
回归Poisson NLLλi−yilog⁡λi\lambda_i-y_i\log\lambda_i泊松 NLL(计数数据)
自回归交叉熵 / NLL见 §2.1条件 Categorical 似然
自回归MSE / Gaussian NLL见 §2.2条件高斯似然
二分类BCE见 §3.1伯努利 NLL
二分类Focal Loss见 §3.2BCE 的难例加权变体(仍是 NLL)
二分类Hinge / SVMmax⁡(0,1−yz)\max(0,1-yz)0-1 损失的凸上界(非概率模型)
多分类Cross Entropy见 §4.1Categorical NLL
多分类KL 散度见 §4.2CE 的一般形式:H(q,p)=H(q)+DKL(q∥p)H(q,p)=H(q)+D_{\mathrm{KL}}(q\Vert p)
多分类Label Smoothing CE见 §4.3目标分布非 one-hot 时的 CE
多分类知识蒸馏见 §4.4学生分布对教师软标签的 KL
度量学习Contrastive Loss见 §5.1距离度量启发式
度量学习Triplet Loss见 §5.2排序 Hinge 损失
度量学习InfoNCE见 §5.3等价于多分类 CE,并给出互信息下界
GAN判别器 BCE见 §6.2真假二分类 BCE
GAN生成器 loss见 §6.3/6.4欺骗判别器,最优判别器下等价于最小化 JSD
GANWGAN见 §6.5最小化 Wasserstein-1 距离
生成模型VAE 损失见 §7负 ELBO = 重建项 + DKL(q∥prior)D_{\mathrm{KL}}(q\Vert\text{prior})
扩散模型噪声预测 MSE见 §8负 ELBO 化简(逐步权重设为 1)

最核心的统一关系:

  大多数监督学习损失=−log⁡(模型给真实结果分配的概率)  \boxed{\; \text{大多数监督学习损失}=-\log\big(\text{模型给真实结果分配的概率}\big) \;}

也即

  最小化负对数似然  ⟺  最大化数据似然  \boxed{\; \text{最小化负对数似然}\;\Longleftrightarrow\;\text{最大化数据似然} \;}

但不是所有损失都来自同一个干净的概率假设:

下文按模型类别逐一给出完整推导。各节最后的"概率解释"或"理论解释"说明该损失对应上表中的哪一种假设。

统一记号

符号含义
NN样本数
yiy_i第 ii 个样本的真实标签 / 真实值
y^i\hat y_i模型对第 ii 个样本的预测
ziz_i模型输出的原始分数,称为 logit(未经 sigmoid/softmax)
θ\theta模型参数
xix_i第 ii 个样本的输入特征

其余符号(如 δ,τ,γ,α,m\delta,\tau,\gamma,\alpha,m 等)在对应小节局部定义,避免跨小节复用同一符号引发歧义。


0. 一条贯穿全文的主线:极大似然 = 最小化负对数似然

在推导任何具体损失前,先建立统一框架,后面每一节都是它的特例。

极大似然估计(MLE) 认为:好的参数 θ\theta 应该让"观测到的训练数据"出现的概率最大。假设 NN 个样本独立同分布,联合似然为

p(D∣θ)=∏i=1Np(yi∣xi,θ).p(\mathcal D \mid \theta)=\prod_{i=1}^{N} p(y_i \mid x_i,\theta).

连乘不好优化(数值下溢、求导繁琐),取对数把连乘变连加,且对数单调不改变最优解:

log⁡p(D∣θ)=∑i=1Nlog⁡p(yi∣xi,θ).\log p(\mathcal D\mid\theta)=\sum_{i=1}^{N}\log p(y_i\mid x_i,\theta).

优化习惯上写成"最小化",于是定义 负对数似然(Negative Log-Likelihood, NLL):

  LNLL(θ)=−1N∑i=1Nlog⁡p(yi∣xi,θ)  \boxed{\; \mathcal L_{\mathrm{NLL}}(\theta)= -\frac{1}{N}\sum_{i=1}^{N}\log p(y_i\mid x_i,\theta) \;}

关键: 你对 p(y∣x,θ)p(y\mid x,\theta) 假设成什么分布,就会推出什么损失。

  • 高斯 → MSE
  • 拉普拉斯 → MAE
  • 泊松 → Poisson NLL
  • 伯努利 → BCE
  • Categorical(类别分布)→ 交叉熵

下面逐一把它们推出来。


1. 回归模型

回归预测连续数值,例如房价、温度、材料带隙 EgE_g。

1.1 均方误差 MSE

  LMSE=1N∑i=1N(yi−y^i)2  \boxed{\; \mathcal L_{\mathrm{MSE}}=\frac{1}{N}\sum_{i=1}^{N}(y_i-\hat y_i)^2 \;}

有时写成带 12\tfrac12 的形式:

L=12N∑i=1N(yi−y^i)2.\mathcal L=\frac{1}{2N}\sum_{i=1}^{N}(y_i-\hat y_i)^2 .

12\tfrac12 纯粹是为了求导后系数变干净——对单样本 12(y−y^)2\tfrac12(y-\hat y)^2 求导:

∂∂y^  12(y−y^)2=12⋅2(y−y^)⋅(−1)=y^−y.\frac{\partial}{\partial \hat y}\;\frac12(y-\hat y)^2 =\frac12\cdot 2(y-\hat y)\cdot(-1)=\hat y-y .

梯度就是"预测减真实"这个残差,非常直观:预测偏大就往下压,偏小就往上抬,12\tfrac12 让前面不再多出一个 2。

概率解释(从高斯 NLL 推出 MSE)

假设真实值 = 模型输出 + 高斯噪声:

yi=fθ(xi)+ϵi,ϵi∼N(0,σ2).y_i=f_\theta(x_i)+\epsilon_i,\qquad \epsilon_i\sim\mathcal N(0,\sigma^2).

则给定输入,yiy_i 服从以 fθ(xi)f_\theta(x_i) 为均值、方差 σ2\sigma^2 的高斯:

p(yi∣xi,θ)=N ⁣(yi∣fθ(xi),σ2)=12πσ2exp⁡ ⁣(−(yi−fθ(xi))22σ2).p(y_i\mid x_i,\theta)=\mathcal N\!\big(y_i\mid f_\theta(x_i),\sigma^2\big) =\frac{1}{\sqrt{2\pi\sigma^2}}\exp\!\left(-\frac{(y_i-f_\theta(x_i))^2}{2\sigma^2}\right).

代入 §0 的 NLL 并展开对数(log⁡(ab)=log⁡a+log⁡b\log(ab)=\log a+\log b,log⁡eu=u\log e^u=u):

LNLL=−1N∑i=1Nlog⁡p(yi∣xi,θ)=1N∑i=1N[(yi−fθ(xi))22σ2+12log⁡(2πσ2)⏟与 θ 无关].\mathcal L_{\mathrm{NLL}} =-\frac1N\sum_{i=1}^N\log p(y_i\mid x_i,\theta) =\frac1N\sum_{i=1}^N\left[\frac{(y_i-f_\theta(x_i))^2}{2\sigma^2} +\underbrace{\frac12\log(2\pi\sigma^2)}_{\text{与 }\theta\text{ 无关}}\right].

当 σ\sigma 视为固定常数时,第二项是常数、对优化无影响;第一项前面的 12σ2\tfrac{1}{2\sigma^2} 是正的常数缩放,也不改变最优解。于是

arg⁡min⁡θLNLL=arg⁡min⁡θ1N∑i=1N(yi−fθ(xi))2.\arg\min_\theta \mathcal L_{\mathrm{NLL}} =\arg\min_\theta \frac1N\sum_{i=1}^N (y_i-f_\theta(x_i))^2 .   固定方差的高斯负对数似然  ⟺  MSE  \boxed{\;\text{固定方差的高斯负对数似然}\;\Longleftrightarrow\;\text{MSE}\;}

这就是"回归默认用 MSE"背后的假设:你其实是在假设残差服从高斯分布。

1.2 平均绝对误差 MAE

  LMAE=1N∑i=1N∣yi−y^i∣  \boxed{\; \mathcal L_{\mathrm{MAE}}=\frac{1}{N}\sum_{i=1}^{N}|y_i-\hat y_i| \;}

MAE 对异常值比 MSE 更鲁棒:MSE 里残差被平方,一个离群点(残差很大)会被放大成主导项;MAE 里残差是线性的,离群点不会被过度放大。

概率解释(从拉普拉斯 NLL 推出 MAE)

假设噪声服从拉普拉斯分布而非高斯:

p(yi∣xi,θ)=12bexp⁡ ⁣(−∣yi−fθ(xi)∣b).p(y_i\mid x_i,\theta)=\frac{1}{2b}\exp\!\left(-\frac{|y_i-f_\theta(x_i)|}{b}\right).

取负对数:

−log⁡p(yi∣xi,θ)=∣yi−fθ(xi)∣b+log⁡(2b).-\log p(y_i\mid x_i,\theta)=\frac{|y_i-f_\theta(x_i)|}{b}+\log(2b).

log⁡(2b)\log(2b) 是常数,1b\tfrac1b 是正缩放,都不影响最优解,于是最小化 NLL 等价于最小化 ∑i∣yi−y^i∣\sum_i|y_i-\hat y_i|:

  拉普拉斯负对数似然  ⟺  MAE  \boxed{\;\text{拉普拉斯负对数似然}\;\Longleftrightarrow\;\text{MAE}\;}

直观对比:拉普拉斯分布比高斯"尾巴更厚",也就是天然允许偶尔出现较大偏差,所以对异常值不敏感——这与 MAE 的鲁棒性一一对应。

MSE vs MAE:损失形状与梯度对比

1.3 可学习方差的高斯负对数似然(Gaussian NLL)

§1.1 里把 σ\sigma 当常数。若让模型同时预测均值 μθ(x)\mu_\theta(x) 和不确定性 σθ(x)\sigma_\theta(x)(异方差回归),就不能再把方差项丢掉了:

p(y∣x,θ)=N ⁣(y∣μθ(x),σθ2(x)).p(y\mid x,\theta)=\mathcal N\!\big(y\mid \mu_\theta(x),\sigma_\theta^2(x)\big).

直接照抄 §1.1 展开、但保留 σi:=σθ(xi)\sigma_i:=\sigma_\theta(x_i) 依赖 θ\theta 的项,并丢掉真正的常数 12log⁡(2π)\tfrac12\log(2\pi):

  LGaussianNLL=1N∑i=1N[(yi−μi)22σi2+12log⁡σi2]  \boxed{\; \mathcal L_{\mathrm{GaussianNLL}} =\frac{1}{N}\sum_{i=1}^{N}\left[\frac{(y_i-\mu_i)^2}{2\sigma_i^2}+\frac12\log\sigma_i^2\right] \;}

两项互相制衡,缺一不可:

两项的平衡点:对固定的 μi\mu_i,令 ∂L/∂σi2=0\partial\mathcal L/\partial\sigma_i^2=0:

∂∂σi2[(yi−μi)22σi2+12log⁡σi2]=−(yi−μi)22σi4+12σi2=0  ⟹  σi2=(yi−μi)2,\frac{\partial}{\partial \sigma_i^2}\left[\frac{(y_i-\mu_i)^2}{2\sigma_i^2}+\frac12\log\sigma_i^2\right] =-\frac{(y_i-\mu_i)^2}{2\sigma_i^4}+\frac{1}{2\sigma_i^2}=0 \;\Longrightarrow\; \sigma_i^2=(y_i-\mu_i)^2,

即模型学到的方差会收敛到真实的残差平方——这正是"预测不确定性"的意义。

Gaussian NLL 曲面:数据拟合项与正则项相互制衡

1.4 Huber Loss(Smooth L1)

MSE 在大残差处梯度会随残差线性增大(对离群点敏感),MAE 处处梯度恒定(对离群点鲁棒但在 0 附近不可导、收敛较慢)。Huber Loss 把两者拼接:设残差 r=y−y^r=y-\hat y、阈值 δ>0\delta>0,

  Lδ(r)={12r2,∣r∣≤δδ(∣r∣−12δ),∣r∣gt;δ  \boxed{\; L_\delta(r)= \begin{cases} \dfrac12 r^2, & |r|\le\delta\\[4pt] \delta\Big(|r|-\dfrac12\delta\Big), & |r|>\delta \end{cases} \;}

推导:分段处必须一阶连续(否则梯度会跳变)。 在 r=δr=\delta 处检验两段是否平滑衔接:

所以 δ\delta 的取值不是随意拼接,而是唯一使函数在阈值处 C1C^1(一阶连续可导)的分段方式——这也是它被称为 "Smooth L1" 的原因。

梯度(对 y^\hat y,r=y−y^r=y-\hat y):

∂Lδ∂y^={y^−y,∣r∣≤δ(与 MSE 相同)δ⋅sign(y^−y),∣r∣gt;δ(幅值恒定为 δ, 与 MAE 同构)\frac{\partial L_\delta}{\partial \hat y}= \begin{cases} \hat y-y, & |r|\le\delta \quad(\text{与 MSE 相同})\\[4pt] \delta\cdot\mathrm{sign}(\hat y-y), & |r|>\delta \quad(\text{幅值恒定为 }\delta,\text{ 与 MAE 同构}) \end{cases}

小残差区表现如 MSE(靠近最优解时梯度平滑衰减到 0,收敛稳定);大残差区表现如 MAE(梯度幅值被 δ\delta 截断,不会因离群点爆炸)。

理论解释: Huber Loss 并非某个单一分布的 NLL,而是 Huber(1964)为鲁棒统计(robust statistics)设计的 M-估计——在"数据主体服从高斯、但可能被少量污染(outlier)"的假设下,使估计量对污染分布最不敏感。它是 MSE 与 MAE 的一个精心设计的折中,而不是"高斯 + 拉普拉斯"的简单拼接。

Huber Loss 曲线族:δ 越大越接近 MSE,δ 越小越接近 MAE 的线性增长

1.5 分位数回归损失 Quantile / Pinball Loss

MSE/MAE 只能预测条件均值或中位数附近的一个点估计。若要预测 yy 的第 τ∈(0,1)\tau\in(0,1) 分位点 qθ(x)q_\theta(x)(例如"90% 置信上界"),需要用 Pinball Loss:

  ρτ(r)=r(τ−1[r<0])={τ r,r≥0(τ−1) r,r<0,r=y−qθ(x)  \boxed{\; \rho_\tau(r)=r\big(\tau-\mathbf{1}[r<0]\big)= \begin{cases} \tau\, r, & r\ge0\\ (\tau-1)\, r, & r<0 \end{cases} ,\qquad r=y-q_\theta(x) \;}

即预测偏低(r>0r>0,真实值比预测大)时用斜率 τ\tau 惩罚,预测偏高(r<0r<0)时用斜率 1−τ1-\tau 惩罚——非对称的绝对值损失。

推导:为什么最小化 E[ρτ(Y−q)]\mathbb E[\rho_\tau(Y-q)] 恰好给出第 τ\tau 分位点。 设 YY 的密度为 ff、累积分布为 FF。把总体风险按 rr 的符号拆成两段积分:

R(q)=EY[ρτ(Y−q)]=∫−∞q(1−τ)(q−y)f(y) dy+∫q∞τ(y−q)f(y) dy.R(q)=\mathbb E_Y[\rho_\tau(Y-q)] =\int_{-\infty}^{q}(1-\tau)(q-y)f(y)\,dy+\int_{q}^{\infty}\tau(y-q)f(y)\,dy.

对 qq 求导(用 Leibniz 法则;被积函数在积分端点 y=qy=q 处恰为 0,边界项消失):

dRdq=(1−τ)∫−∞qf(y) dy−τ∫q∞f(y) dy=(1−τ)F(q)−τ(1−F(q))=F(q)−τ.\frac{dR}{dq}=(1-\tau)\int_{-\infty}^{q}f(y)\,dy-\tau\int_{q}^{\infty}f(y)\,dy =(1-\tau)F(q)-\tau\big(1-F(q)\big) =F(q)-\tau.

令 dRdq=0\dfrac{dR}{dq}=0:

  F(q∗)=τ  ⟺  q∗=F−1(τ)  \boxed{\;F(q^*)=\tau\;\Longleftrightarrow\;q^*=F^{-1}(\tau)\;}

即最优 q∗q^* 恰好是 YY 的第 τ\tau 分位点——这是分位数回归的理论基础(Koenker & Bassett, 1978)。

特例验证: τ=0.5\tau=0.5 时 ρ0.5(r)=0.5 r\rho_{0.5}(r)=0.5\,r(r≥0r\ge0)或 −0.5 r-0.5\,r(r<0r<0),即 ρ0.5(r)=12∣r∣\rho_{0.5}(r)=\tfrac12|r|,退化为 §1.2 的 MAE(相差常数因子 12\tfrac12)——与"中位数是 τ=0.5\tau=0.5 分位点"完全对应,MAE 是分位数损失的特例。

Pinball Loss 曲线族:斜率随 τ 呈非对称变化,τ=0.5 退化为 MAE 的一半

1.6 泊松负对数似然 Poisson NLL(计数回归)

当 yi∈{0,1,2,… }y_i\in\{0,1,2,\dots\} 是计数型数据(如缺陷数、事件发生次数)而非连续实数时,高斯假设不再合适(高斯支持负数、且方差与均值无关,计数数据方差通常随均值增长)。改用泊松分布建模,令模型预测速率 λi=λθ(xi)>0\lambda_i=\lambda_\theta(x_i)>0:

p(yi∣xi,θ)=λi yie−λiyi!.p(y_i\mid x_i,\theta)=\frac{\lambda_i^{\,y_i}e^{-\lambda_i}}{y_i!}.

取负对数:

−log⁡p(yi∣xi,θ)=λi−yilog⁡λi+log⁡(yi!)⏟与 θ 无关,可丢弃.-\log p(y_i\mid x_i,\theta)=\lambda_i-y_i\log\lambda_i+\underbrace{\log(y_i!)}_{\text{与 }\theta\text{ 无关,可丢弃}}.

对 NN 个样本平均:

  LPoisson=1N∑i=1N[λi−yilog⁡λi]  \boxed{\; \mathcal L_{\mathrm{Poisson}}=\frac1N\sum_{i=1}^N\big[\lambda_i-y_i\log\lambda_i\big] \;}   泊松负对数似然  ⟺  计数回归损失  \boxed{\;\text{泊松负对数似然}\;\Longleftrightarrow\;\text{计数回归损失}\;}

工程实践: 由于 λi>0\lambda_i>0 是硬约束,网络通常直接输出 log⁡λi=zi\log\lambda_i=z_i(PyTorch 中 PoissonNLLLoss(log_input=True) 的默认行为),损失写成 L=1N∑i[ezi−yizi]\mathcal L=\frac1N\sum_i[e^{z_i}-y_iz_i],避免额外的 exp⁡\exp 数值不稳定和梯度截断。这与广义线性模型(GLM)中"对数链接函数(log link)"的做法一致。

Poisson NLL:不同真实计数 y 下的损失曲线,最优 λ=y


2. 自回归模型

自回归(Autoregressive, AR)不是某个固定损失函数,而是一种概率分解方式。它把高维联合分布用链式法则拆成一串条件分布的乘积。

对序列 x1,x2,…,xTx_1,x_2,\dots,x_T,由概率链式法则(恒等式,无需近似):

  pθ(x1:T)=∏t=1Tpθ(xt∣x<t)  ,x<t:=x1,x2,…,xt−1.\boxed{\; p_\theta(x_{1:T})=\prod_{t=1}^{T}p_\theta(x_t\mid x_{<t}) \;},\qquad x_{<t}:=x_1,x_2,\dots,x_{t-1}.

训练目标 = 最大化整条序列似然 = 最小化其负对数似然:

  LAR=−∑t=1Tlog⁡pθ(xt∣x<t)  \boxed{\; \mathcal L_{\mathrm{AR}}=-\sum_{t=1}^{T}\log p_\theta(x_t\mid x_{<t}) \;}

注意这就是 §0 主线的直接应用,只是把"一个样本的似然"换成"一条序列每一步条件似然的乘积"。每一步预测什么分布,就用什么损失——离散步用交叉熵,连续步用 MSE/高斯 NLL。

2.1 LLM 的自回归损失(离散 token → 交叉熵)

大语言模型在每个位置预测"下一个 token"的类别分布 pθ(xt∣x<t)p_\theta(x_t\mid x_{<t})(词表上的 Categorical 分布,见 §4)。把 §4 将推出的"单样本交叉熵 = −log⁡-\log 真类概率"代入每一步,对序列取平均:

  LLLM=−1T∑t=1Tlog⁡pθ ⁣(xttrue∣x<t)  \boxed{\; \mathcal L_{\mathrm{LLM}} =-\frac{1}{T}\sum_{t=1}^{T}\log p_\theta\!\big(x_t^{\mathrm{true}}\mid x_{<t}\big) \;}

即"每个位置正确 token 的负对数概率"之和/平均。举例:

text
输入: 我  喜欢  人工
目标: 喜欢 人工  智能

模型在三个位置分别学习:

p(喜欢∣我),p(人工∣我 喜欢),p(智能∣我 喜欢 人工).p(\text{喜欢}\mid\text{我}),\quad p(\text{人工}\mid\text{我 喜欢}),\quad p(\text{智能}\mid\text{我 喜欢 人工}).

总损失 = 这三个正确 token 的负对数概率之和。模型要让每一步给"正确下一个词"尽量高的概率。

2.2 连续时间序列的自回归损失(连续值 → MSE)

若序列取值连续:

xt=fθ(xt−1,xt−2,… )+ϵt,ϵt∼N(0,σ2).x_t=f_\theta(x_{t-1},x_{t-2},\dots)+\epsilon_t,\qquad \epsilon_t\sim\mathcal N(0,\sigma^2).

每一步条件分布是高斯,套用 §1.1 的结论(高斯 NLL ⇔ MSE),逐步求和:

  L=1T∑t=1T(xt−x^t)2  \boxed{\; \mathcal L=\frac{1}{T}\sum_{t=1}^{T}(x_t-\hat x_t)^2 \;}

小结:

自回归框架不改变损失形式,它只决定"把联合似然拆成逐步条件似然",具体损失仍由每一步的分布假设决定。


3. 二分类模型

二分类标签 yi∈{0,1}y_i\in\{0,1\},例如:是猫/不是猫、材料稳定/不稳定、有缺陷/无缺陷。

模型先输出 logit zi=fθ(xi)z_i=f_\theta(x_i),再经 Sigmoid 压到 (0,1)(0,1) 作为"属于类别 1 的概率":

pi=σ(zi)=11+e−zi∈(0,1).p_i=\sigma(z_i)=\frac{1}{1+e^{-z_i}}\in(0,1).

3.1 二元交叉熵 BCE

  LBCE=−1N∑i=1N[yilog⁡pi+(1−yi)log⁡(1−pi)]  \boxed{\; \mathcal L_{\mathrm{BCE}} =-\frac{1}{N}\sum_{i=1}^{N}\Big[y_i\log p_i+(1-y_i)\log(1-p_i)\Big] \;}

单样本形式 Li=−yilog⁡pi−(1−yi)log⁡(1−pi)\mathcal L_i=-y_i\log p_i-(1-y_i)\log(1-p_i),其巧妙之处是用 y∈{0,1}y\in\{0,1\} 做"开关":

概率解释(从伯努利 NLL 推出 BCE)

二分类假设标签服从伯努利分布,其概率质量函数可用一个式子统一写出 y=0y=0 和 y=1y=1 两种情形:

p(y∣x,θ)=p y(1−p)1−y(  y=1⇒p,y=0⇒1−p  ).p(y\mid x,\theta)=p^{\,y}(1-p)^{1-y} \quad\Big(\;y=1\Rightarrow p,\quad y=0\Rightarrow 1-p\;\Big).

取负对数(log⁡(ay)=ylog⁡a\log(a^y)=y\log a):

−log⁡p(y∣x,θ)=−[ylog⁡p+(1−y)log⁡(1−p)],-\log p(y\mid x,\theta)=-\big[y\log p+(1-y)\log(1-p)\big],

对 NN 个样本求平均即得 BCE:

  伯努利负对数似然  ⟺  二元交叉熵  \boxed{\;\text{伯努利负对数似然}\;\Longleftrightarrow\;\text{二元交叉熵}\;}

梯度为何如此干净(sigmoid + BCE 的配合)

把 p=σ(z)p=\sigma(z) 代入单样本 BCE,对 logit zz 求导,会神奇地约掉所有分式:

∂Li∂zi=σ(zi)−yi=pi−yi.\frac{\partial \mathcal L_i}{\partial z_i}=\sigma(z_i)-y_i=p_i-y_i .

(用到 σ′(z)=σ(z)(1−σ(z))\sigma'(z)=\sigma(z)(1-\sigma(z))。)梯度就是"预测概率减真实标签",与 §1.1 里 MSE 的残差梯度形式一致——这也是 sigmoid 要搭配 BCE(而不是搭配 MSE)的原因:搭 MSE 会在 σ\sigma 饱和区出现梯度消失,搭 BCE 则梯度线性、训练稳定。

工程实践

PyTorch 中通常直接用:

python
torch.nn.BCEWithLogitsLoss()   # 输入 logit z,内部自动做 sigmoid

它把 sigmoid 与 log 合并用 log-sum-exp 技巧计算,避免 pp 接近 0/1 时 log⁡\log 溢出,数值更稳定。不要自己先 sigmoid 再喂 BCELoss。

BCE 的两条支路:标签充当"开关",各自只惩罚对应分支

3.2 Focal Loss(难例加权)

当正负样本严重不均衡(如目标检测中背景远多于目标)时,BCE 会被大量"容易分类"的样本主导——它们单个损失虽小,但数量巨大,梯度总和仍会压制"难分类"样本的信号。Focal Loss(Lin et al., 2017)给每个样本按"分类难度"重新加权:

记 pt=pp_t=p(若 y=1y=1)或 pt=1−pp_t=1-p(若 y=0y=0),即模型分配给真实类别的概率(ptp_t 越接近 1 表示分类越"容易/正确")。标准 BCE 可统一写成 LBCE=−log⁡pt\mathcal L_{\mathrm{BCE}}=-\log p_t。Focal Loss 在此基础上乘一个调制因子:

  FL(pt)=−αt(1−pt)γlog⁡pt  ,γ≥0, αt∈(0,1) 为类别权重.\boxed{\; \mathrm{FL}(p_t)=-\alpha_t(1-p_t)^{\gamma}\log p_t \;},\qquad \gamma\ge0,\ \alpha_t\in(0,1)\text{ 为类别权重}.

退化验证: γ=0\gamma=0 时 (1−pt)0=1(1-p_t)^0=1,FL=−αtlog⁡pt\mathrm{FL}=-\alpha_t\log p_t,退化为(类别加权的)标准 BCE——说明 Focal Loss 是 BCE 的严格推广。

推导调制因子如何压低易分样本的梯度。 以 y=1y=1(pt=pp_t=p)为例,对 logit zz 求导(沿用 §3.1 的 dp/dz=p(1−p)dp/dz=p(1-p))。记 q=1−pq=1-p,先对 pp 求导:

∂FL∂p=−α[γqγ−1(−1)log⁡p+qγ⋅1p]=αγqγ−1log⁡p−αqγp.\frac{\partial \mathrm{FL}}{\partial p} =-\alpha\Big[\gamma q^{\gamma-1}(-1)\log p+q^{\gamma}\cdot\frac1p\Big] =\alpha\gamma q^{\gamma-1}\log p-\alpha\frac{q^{\gamma}}{p}.

再乘链式法则 ∂p/∂z=pq\partial p/\partial z=pq:

∂FL∂z=(αγqγ−1log⁡p−αqγp)⋅pq=αqγ[γplog⁡p−q]=α(1−p)γ[γplog⁡p−(1−p)].\frac{\partial \mathrm{FL}}{\partial z} =\Big(\alpha\gamma q^{\gamma-1}\log p-\alpha\frac{q^{\gamma}}{p}\Big)\cdot pq =\alpha q^{\gamma}\big[\gamma p\log p-q\big] =\alpha(1-p)^{\gamma}\big[\gamma p\log p-(1-p)\big].

代入 γ=0,α=1\gamma=0,\alpha=1 核验:(1−p)0[0−(1−p)]=−(1−p)=p−1(1-p)^0[0-(1-p)]=-(1-p)=p-1,与 §3.1 的标准 BCE 梯度 p−y=p−1p-y=p-1 一致 ✓。

对于易分样本(p→1p\to1,即 q=1−p→0q=1-p\to0),梯度中 (1−p)γ(1-p)^\gamma 这一因子以 γ\gamma 次幂速度趋于 0,而标准 BCE 的梯度只是线性地 ∝(1−p)\propto (1-p) 趋于 0——Focal Loss 让易分样本的梯度贡献衰减得更快,从而把训练信号让给难分样本,这正是它缓解类别不均衡的数学机制。

理论解释: Focal Loss 不对应单一分布的 NLL,而是对 BCE 按样本难度加权的启发式变体——权重本身依赖当前预测 ptp_t,是训练过程中动态变化的,不是一个固定的概率模型假设。

Focal Loss 曲线族与梯度衰减速度对比:γ 越大,易分样本梯度衰减越快

3.3 Hinge Loss(SVM / 最大间隔分类)

标签编码为 yi∈{−1,+1}y_i\in\{-1,+1\}(区别于 BCE 用的 {0,1}\{0,1\}),模型直接输出未经 sigmoid 的原始分数 ziz_i:

  Lhinge=1N∑i=1Nmax⁡(0, 1−yizi)  \boxed{\; \mathcal L_{\mathrm{hinge}}=\frac1N\sum_{i=1}^N\max(0,\,1-y_iz_i) \;}

推导动机:最大间隔。 分类正确当且仅当 yizi>0y_iz_i>0;Hinge loss 要求更强的带间隔的正确:yizi≥1y_iz_i\ge1。当满足时损失为 0;未满足时损失随"越界程度" 1−yizi1-y_iz_i 线性增长。

它是 0-1 损失的凸上界。 0-1 损失定义为 L01=1[yz<0]\mathcal L_{01}=\mathbf 1[y z<0](分类错误记 1 分,不可导、非凸,直接优化是 NP-hard)。逐段验证 max⁡(0,1−yz)≥L01\max(0,1-yz)\ge\mathcal L_{01}:

三段合并即 max⁡(0,1−yz)≥1[yz<0]\max(0,1-yz)\ge\mathbf 1[yz<0] 恒成立,且 Hinge 是凸函数(两段线性的上包络),因此常被用作 0-1 损失的可优化凸代理(这正是 SVM 的经典推导思路)。

次梯度:

∂Lhinge,i∂zi={−yi,yizi<10,yizi>1\frac{\partial \mathcal L_{\mathrm{hinge},i}}{\partial z_i}= \begin{cases} -y_i, & y_iz_i<1\\ 0, & y_iz_i>1 \end{cases}

在 yizi=1y_iz_i=1 处不可导(只有次梯度),这是 Hinge Loss 与处处光滑的 BCE 的关键区别。

与 BCE 的关系: 若把 BCE 也写成 {−1,+1}\{-1,+1\} 编码,logistic loss 为 log⁡(1+e−yz)\log(1+e^{-yz})——同样是 0-1 损失的凸上界、同样在 yz<0yz<0 区域近似线性增长,形状与 Hinge 非常接近。但 Hinge 不对应任何概率模型的 NLL,它纯粹是几何间隔最大化的目标,因此 SVM 的输出 zz 不能像 BCE 的 σ(z)\sigma(z) 那样直接解释为校准过的概率;而 logistic loss 因为源自伯努利 NLL(§3.1),σ(z)\sigma(z) 天然是一个(近似)校准的概率估计。

多分类的 Hinge 推广(Crammer–Singer):L=max⁡(0, 1+max⁡k≠yzk−zy)\mathcal L=\max\big(0,\ 1+\max_{k\ne y}z_k-z_y\big),要求真类分数比"最强的错误类"高出至少 1 个间隔,思路与二分类完全一致。

Hinge / Logistic 都是 0-1 损失的凸上界


4. 多分类模型

设共 KK 个互斥类别,yi∈{1,2,…,K}y_i\in\{1,2,\dots,K\}。模型输出 KK 个 logit zi1,…,ziKz_{i1},\dots,z_{iK},经 Softmax 归一化为一个概率分布:

pik=ezik∑j=1Kezij,∑k=1Kpik=1,pik>0.p_{ik}=\frac{e^{z_{ik}}}{\sum_{j=1}^{K}e^{z_{ij}}},\qquad \sum_{k=1}^{K}p_{ik}=1,\quad p_{ik}>0.

指数保证非负,分母保证求和为 1——所以 softmax 输出是合法的类别分布。

4.1 多分类交叉熵

用 one-hot 标签 yiky_{ik}(真类位置为 1,其余为 0):

  LCE=−1N∑i=1N∑k=1Kyiklog⁡pik  \boxed{\; \mathcal L_{\mathrm{CE}} =-\frac{1}{N}\sum_{i=1}^{N}\sum_{k=1}^{K}y_{ik}\log p_{ik} \;}

因为 one-hot 只有真类那一项 yi,yi=1y_{i,y_i}=1、其余为 0,内层求和塌缩成单项:

  LCE=−1N∑i=1Nlog⁡pi,yi  \boxed{\; \mathcal L_{\mathrm{CE}}=-\frac{1}{N}\sum_{i=1}^{N}\log p_{i,y_i} \;}

其中 pi,yip_{i,y_i} 是模型分配给真实类别的概率。例如真类是第 2 类,y=[0,1,0]y=[0,1,0],预测 p=[0.1,0.7,0.2]p=[0.1,0.7,0.2],则损失 =−log⁡0.7=-\log 0.7。模型只需把真类概率推高即可。

概率解释(从 Categorical NLL 推出交叉熵)

多分类标签服从类别分布(Categorical / 多项分布单次试验),同样用 one-hot 指数把它写成一个式子:

p(y∣x,θ)=∏k=1Kpk yk.p(y\mid x,\theta)=\prod_{k=1}^{K}p_k^{\,y_k}.

取负对数即得交叉熵:

−log⁡p(y∣x,θ)=−∑k=1Kyklog⁡pk.-\log p(y\mid x,\theta)=-\sum_{k=1}^{K}y_k\log p_k .   Categorical 负对数似然  ⟺  多分类交叉熵  \boxed{\;\text{Categorical 负对数似然}\;\Longleftrightarrow\;\text{多分类交叉熵}\;}

二分类(§3)其实是 K=2K=2 的特例:sigmoid 是 softmax 在两类上的退化,BCE 是交叉熵在两类上的退化。

softmax + CE 的梯度

与 §3 完全平行,softmax 配交叉熵对 logit 求导也约得很干净:

∂Li∂zik=pik−yik.\frac{\partial \mathcal L_i}{\partial z_{ik}}=p_{ik}-y_{ik}.

真类方向 p−1<0p-1<0(把该 logit 推高),非真类方向 p−0>0p-0>0(把它们压低),梯度形式统一、无饱和问题。

工程实践

python
torch.nn.CrossEntropyLoss()   # 输入原始 logits,内部自动做 log_softmax

输入必须是原始 logits,不要提前 softmax。 该实现用 log_softmax 合并计算,避免 eze^{z} 上溢与 log⁡0\log 0 下溢。

4.2 KL 散度:交叉熵的一般形式

交叉熵 H(q,p)=−∑kqklog⁡pkH(q,p)=-\sum_k q_k\log p_k 里的目标分布 qq 未必是 one-hot(下面两节的 Label Smoothing、知识蒸馏就是如此),这时需要 KL 散度 这个更一般的工具。两个分布 p,qp,q 之间的 KL 散度定义为:

DKL(q∥p)=∑kqklog⁡qkpk=∑kqklog⁡qk⏟−H(q)−∑kqklog⁡pk⏟−H(q,p)=H(q,p)−H(q),D_{\mathrm{KL}}(q\|p)=\sum_k q_k\log\frac{q_k}{p_k} =\underbrace{\sum_k q_k\log q_k}_{-H(q)}-\underbrace{\sum_k q_k\log p_k}_{-H(q,p)} =H(q,p)-H(q),

即

  H(q,p)=H(q)+DKL(q∥p)  \boxed{\; H(q,p)=H(q)+D_{\mathrm{KL}}(q\|p) \;}

推导 KL 散度非负(Gibbs 不等式),并说明这为什么保证交叉熵训练有意义。 利用 log⁡\log 是凹函数,Jensen 不等式给出 E[log⁡X]≤log⁡E[X]\mathbb E[\log X]\le\log\mathbb E[X]。取随机变量 X=qk/pkX=q_k/p_k(在分布 pp 下取值,即以 pkp_k 为权重):

∑kpklog⁡qkpk≤log⁡∑kpk⋅qkpk=log⁡∑kqk=log⁡1=0.\sum_k p_k\log\frac{q_k}{p_k}\le\log\sum_k p_k\cdot\frac{q_k}{p_k}=\log\sum_k q_k=\log1=0 .

整理即得

DKL(p∥q)=∑kpklog⁡pkqk=−∑kpklog⁡qkpk≥0,D_{\mathrm{KL}}(p\|q)=\sum_k p_k\log\frac{p_k}{q_k}=-\sum_k p_k\log\frac{q_k}{p_k}\ge0,

等号成立当且仅当 qk/pkq_k/p_k 对所有 kk 恒为常数(由 Jensen 等号条件,log⁡\log 严格凹),结合 ∑pk=∑qk=1\sum p_k=\sum q_k=1 该常数必为 1,即 p=qp=q。

把这个不等式反过来用在 H(q,p)=H(q)+DKL(q∥p)H(q,p)=H(q)+D_{\mathrm{KL}}(q\|p) 上:固定目标分布 qq、把 pp 视为模型可调分布,则 DKL(q∥p)≥0D_{\mathrm{KL}}(q\|p)\ge0 恒成立,且等号仅在 p=qp=q 时取到。于是

  arg⁡min⁡pH(q,p)=q  \boxed{\;\arg\min_p H(q,p)=q\;}

也就是说,不管目标分布 qq 是不是 one-hot,最小化交叉熵都会把模型分布 pp 推向目标分布 qq 本身——这是交叉熵训练能够收敛到"正确"目标的根本原因,also 解释了 §4.1 中"one-hot 标签 + 交叉熵"为什么会让模型把真类概率推向 1(因为此时 qq 本身就是 one-hot delta 分布)。

4.3 标签平滑交叉熵 Label Smoothing CE

标准 one-hot 目标 q=δyq=\delta_y(真类概率 1,其余 0)会驱使模型把真类 logit 推向 +∞+\infty(因为由 §4.2,arg⁡min⁡pH(q,p)=q\arg\min_p H(q,p)=q,要精确达到 py=1p_y=1 需要 zy−zk→∞z_y-z_{k}\to\infty),导致过拟合、过度自信、校准变差。Label Smoothing(Szegedy et al., 2016)把目标从纯 one-hot 换成与均匀分布 uk=1/Ku_k=1/K 的混合:

qkLS=(1−ϵ) δk,y+ϵK,ϵ∈(0,1) 为平滑系数.q_k^{\mathrm{LS}}=(1-\epsilon)\,\delta_{k,y}+\frac{\epsilon}{K},\qquad \epsilon\in(0,1)\text{ 为平滑系数}.

(验证归一性:∑kqkLS=(1−ϵ)⋅1+ϵ=1\sum_k q_k^{\mathrm{LS}}=(1-\epsilon)\cdot1+\epsilon=1 ✓)

推导损失的显式形式。 直接代入交叉熵定义 H(qLS,p)=−∑kqkLSlog⁡pkH(q^{\mathrm{LS}},p)=-\sum_k q_k^{\mathrm{LS}}\log p_k:

  LLS=−(1−ϵ)log⁡py−ϵK∑k=1Klog⁡pk  \boxed{\; \mathcal L_{\mathrm{LS}} =-(1-\epsilon)\log p_{y}-\frac{\epsilon}{K}\sum_{k=1}^K\log p_k \;}

第一项是标准交叉熵(乘权重 1−ϵ1-\epsilon),第二项是"让所有类别概率都不要太小"的正则项(乘权重 ϵ\epsilon)。

推导最优解为何不再是 py→1p_y\to1。 由 §4.2 的结论 arg⁡min⁡pH(q,p)=q\arg\min_p H(q,p)=q,直接代入 q=qLSq=q^{\mathrm{LS}}:

py∗=1−ϵ+ϵK<1,pk∗=ϵK  (k≠y).p_y^*=1-\epsilon+\frac{\epsilon}{K}<1,\qquad p_k^*=\frac{\epsilon}{K}\ \ (k\ne y).

即最优真类概率被严格限制在 1 以下,模型不再需要(也不会被鼓励)把 logit 推向无穷——这就是标签平滑能提升校准、缓解过拟合的严格数学原因,而不只是一个经验技巧。

Label Smoothing:目标分布 vs One-hot

4.4 知识蒸馏损失 Knowledge Distillation

知识蒸馏(Hinton et al., 2015)让"学生"模型 qSq^{S} 学习"教师"模型 pTeacherp^{T_{\mathrm{eacher}}}(已训练好、更大)的输出分布,而不是(或不仅是)硬标签。用带温度的 softmax软化分布:

pk(T)=exp⁡(zk/T)∑jexp⁡(zj/T),T>1 时分布更平滑(各类概率更接近).p_k^{(T)}=\frac{\exp(z_k/T)}{\sum_j\exp(z_j/T)},\qquad T>1\text{ 时分布更平滑(各类概率更接近)}.

蒸馏损失是学生分布对教师软标签的 KL 散度(教师侧不参与梯度,视为常数目标):

  LKD=T2⋅DKL(pteacher,(T) ∥ pstudent,(T))  \boxed{\; \mathcal L_{\mathrm{KD}}=T^2\cdot D_{\mathrm{KL}}\big(p^{\mathrm{teacher},(T)}\,\big\|\,p^{\mathrm{student},(T)}\big) \;}

推导 TT 在梯度中的角色(精确部分)。 由 §4.2,DKL(p∥q)=H(p,q)−H(p)D_{\mathrm{KL}}(p\|q)=H(p,q)-H(p),教师熵 H(p(T))H(p^{(T)}) 不依赖学生参数,梯度只来自交叉熵项,与 §4.1 的 softmax+CE 梯度结构相同,只是 logit 先除以了 TT:链式法则多出一个 1/T1/T 因子,

∂DKL(p(T)∥q(T))∂zistudent=1T(qi(T)−pi(T)).\frac{\partial D_{\mathrm{KL}}\big(p^{(T)}\|q^{(T)}\big)}{\partial z_i^{\text{student}}}=\frac1T\Big(q_i^{(T)}-p_i^{(T)}\Big).

T2T^2 缩放的由来(渐近论证,非精确恒等式)。 Hinton et al. 指出:当温度 TT 远大于 logit 的数值范围时,exp⁡(zk/T)≈1+zk/T\exp(z_k/T)\approx1+z_k/T,此时 softmax 关于 logit 近似线性,可证明该极限下 ∂DKL/∂zi∝1KT2(zistudent−ziteacher)\partial D_{\mathrm{KL}}/\partial z_i\propto \frac{1}{K T^2}(z_i^{\text{student}}-z_i^{\text{teacher}})——梯度幅值以 1/T21/T^2 衰减。为了让蒸馏损失的梯度幅值不随 TT 的选择而系统性变小(便于与硬标签损失按固定权重相加),实践中把 LKD\mathcal L_{\mathrm{KD}} 整体乘以 T2T^2 补偿。这是一个高温极限下的近似论证,并非对所有 TT 精确成立,但被实践广泛验证有效。

常见的总损失是硬标签 CE(§4.1,T=1T=1)与软标签 KD 损失的加权和:

L=(1−λ) LCE(y,p(1))+λ LKD.\mathcal L=(1-\lambda)\,\mathcal L_{\mathrm{CE}}(y,p^{(1)})+\lambda\, \mathcal L_{\mathrm{KD}}.

知识蒸馏:温度 T 越高,教师分布越"软化"


5. 度量学习 / 对比学习损失

前几节的损失都是"预测一个标签/数值"。度量学习(metric learning)的目标不同:学一个嵌入函数 fθ(x)f_\theta(x),使得同类样本在嵌入空间距离近、异类样本距离远,不直接输出类别或数值。这是 CLIP、SimCLR、人脸识别等系统的训练核心。

5.1 对比损失 Contrastive Loss(Siamese)

给定样本对 (xi,xj)(x_i,x_j),标签 yij=1y_{ij}=1 表示同类(应靠近),yij=0y_{ij}=0 表示异类(应至少远离间隔 mm)。记嵌入距离 dij=∥fθ(xi)−fθ(xj)∥2d_{ij}=\lVert f_\theta(x_i)-f_\theta(x_j)\rVert_2:

  Lij=yij dij2+(1−yij) [max⁡(0, m−dij)]2  \boxed{\; \mathcal L_{ij}=y_{ij}\,d_{ij}^2+(1-y_{ij})\,\big[\max(0,\,m-d_{ij})\big]^2 \;}

推导动机(非概率模型,几何约束直接转损失):

外层的 max⁡(0,⋅)\max(0,\cdot) 是 §3.3 Hinge 结构在"距离"而非"分类间隔"上的直接复用;平方是为了让梯度在接近边界时平滑衰减(类比 §1.1 MSE 对 §1.2 MAE 的关系)。

Contrastive Loss:两个分支的几何动机

5.2 三元组损失 Triplet Loss

Contrastive Loss 需要人工设定绝对间隔 mm,对不同样本对的难度不敏感。Triplet Loss(FaceNet, Schroff et al. 2015)改为相对约束:给定锚点 aa、正样本 pp(同类)、负样本 nn(异类),要求"负样本比正样本远至少一个间隔 α\alpha":

  L=max⁡(0, ∥f(a)−f(p)∥22−∥f(a)−f(n)∥22+α)  \boxed{\; \mathcal L=\max\Big(0,\ \lVert f(a)-f(p)\rVert_2^2-\lVert f(a)-f(n)\rVert_2^2+\alpha\Big) \;}

推导: 目标不等式是 d(a,p)+α≤d(a,n)d(a,p)+\alpha\le d(a,n),即"正样本距离 + 间隔 ≤\le 负样本距离"。把该不等式的违反量 d(a,p)−d(a,n)+αd(a,p)-d(a,n)+\alpha 套进 Hinge 结构 max⁡(0,⋅)\max(0,\cdot):满足约束时损失为 0,不满足时线性惩罚——与 §3.3 的 Hinge Loss、§5.1 的负样本项是同一个模板("违反间隔量→hinge”),只是这里比较的是两个距离之差,而非分类间隔 yzyz。

训练中三元组的采样策略(如"难负样本挖掘 hard negative mining")对收敛速度影响很大,这是工程实践问题,不改变损失本身的数学形式。

Triplet Loss 决策边界:零损失区由 d_an ≥ d_ap+α 划定

5.3 InfoNCE(对比预测编码 / SimCLR / CLIP)

Triplet Loss 每次只对比 1 个正样本与 1 个负样本。InfoNCE(Oord et al., 2018;SimCLR、CLIP 等广泛使用)把"1 个正样本 + N−1N-1 个负样本"当成一次 NN 选 1 的分类问题。设锚点嵌入 ziz_i,一个正样本嵌入 zi+z_i^+,N−1N-1 个负样本 {zj−}\{z_j^-\},相似度 s(u,v)=u⊤v/τs(u,v)=u^\top v/\tau(τ\tau 为温度):

  LInfoNCE=−log⁡exp⁡(s(zi,zi+))exp⁡(s(zi,zi+))+∑j=1N−1exp⁡(s(zi,zj−))  \boxed{\; \mathcal L_{\mathrm{InfoNCE}} =-\log\frac{\exp\big(s(z_i,z_i^+)\big)}{\exp\big(s(z_i,z_i^+)\big)+\sum_{j=1}^{N-1}\exp\big(s(z_i,z_j^-)\big)} \;}

推导:这就是 §4.1 的多分类交叉熵,换了一层皮。 把正样本和 N−1N-1 个负样本合并看成 NN 个"类别候选",其相似度 s(zi,⋅)/1s(z_i,\cdot)/1 当作 logit,套 softmax:

p(候选 c 是正样本)=exp⁡(s(zi,c))∑c′exp⁡(s(zi,c′)).p(\text{候选 }c\text{ 是正样本})=\frac{\exp(s(z_i,c))}{\sum_{c'}\exp(s(z_i,c'))}.

InfoNCE 就是 −log⁡p(正样本)-\log p(\text{正样本})——与 §4.1 "−log⁡pi,yi-\log p_{i,y_i}"完全同构,只是这里的"真实类别"是"谁是正样本",而 logit 由嵌入内积动态计算,不是网络的固定输出头。这个视角说明:对比学习本质上是把"表征相似度"当 logit 做的一次多分类交叉熵训练。

理论解释(结果引用,证明从略): Oord et al. (2018) 证明最小化 InfoNCE 等价于最大化锚点与正样本互信息 I(zi;zi+)I(z_i;z_i^+) 的一个下界:

I(zi;zi+) ≥ log⁡N−LInfoNCE.I(z_i;z_i^+)\ \ge\ \log N-\mathcal L_{\mathrm{InfoNCE}}.

负样本数 NN 越大,这个下界越紧,这也是对比学习中"大 batch / 大量负样本"能提升表征质量的理论依据之一(完整证明涉及对互信息定义的额外展开,此处不重复推导,仅引用结论)。

InfoNCE:温度 τ 越小,损失对相似度差越敏感(简化为 1 正 1 负)


6. GAN 的损失函数

GAN 不再直接最大化似然,而是让两个网络对抗博弈间接学到数据分布:

6.1 原始 GAN:极小极大博弈

  min⁡Gmax⁡D  V(D,G)=Ex∼pdata[log⁡D(x)]+Ez∼p(z)[log⁡(1−D(G(z)))]  \boxed{\; \min_G\max_D\; V(D,G) =\mathbb E_{x\sim p_{\mathrm{data}}}\big[\log D(x)\big] +\mathbb E_{z\sim p(z)}\big[\log(1-D(G(z)))\big] \;}

判别器的最优解与 GAN 到底在优化什么

固定 GG,对每个 xx 逐点最大化被积函数。记真、假分布密度为 pdata(x)p_{\mathrm{data}}(x)、pg(x)p_g(x),判别器目标可写成

∫[pdata(x)log⁡D(x)+pg(x)log⁡(1−D(x))] dx.\int \Big[p_{\mathrm{data}}(x)\log D(x)+p_g(x)\log(1-D(x))\Big]\,dx .

对 D(x)D(x) 求导置零:pdataD−pg1−D=0\dfrac{p_{\mathrm{data}}}{D}-\dfrac{p_g}{1-D}=0,解得最优判别器

D∗(x)=pdata(x)pdata(x)+pg(x).D^{*}(x)=\frac{p_{\mathrm{data}}(x)}{p_{\mathrm{data}}(x)+p_g(x)}.

把 D∗D^{*} 回代 VV,经整理可得(这是 GAN 论文的经典结果)

V(D∗,G)=2 JSD ⁣(pdata ∥ pg)−2log⁡2,V(D^{*},G)=2\,\mathrm{JSD}\!\big(p_{\mathrm{data}}\,\|\,p_g\big)-2\log 2,

其中 JSD\mathrm{JSD} 是 Jensen–Shannon 散度。所以生成器最小化 VV,本质是在最小化真实分布与生成分布之间的 JS 散度——当 pg=pdatap_g=p_{\mathrm{data}} 时 JSD=0 达到全局最优。这就是 GAN"间接学习数据分布"的严格含义。

6.2 判别器损失(就是一个 BCE)

把"最大化 VV"翻成"最小化 −V-V":

  LD=− Ex∼pdata[log⁡D(x)]−Ez∼p(z)[log⁡(1−D(G(z)))]  \boxed{\; \mathcal L_D=-\,\mathbb E_{x\sim p_{\mathrm{data}}}[\log D(x)] -\mathbb E_{z\sim p(z)}[\log(1-D(G(z)))] \;}

对照 §3.1 的 BCE:把真实样本贴标签 1、生成样本贴标签 0,LD\mathcal L_D 就是这个二分类问题的二元交叉熵。判别器训练 = 一个普通的真假二分类器。

6.3 生成器的原始损失(minimax 形式)

从 VV 中只有第二项含 GG,生成器最小化:

  LGminimax=Ez∼p(z)[log⁡(1−D(G(z)))]  \boxed{\; \mathcal L_G^{\mathrm{minimax}}=\mathbb E_{z\sim p(z)}\big[\log(1-D(G(z)))\big] \;}

理想上让 D(G(z))→1D(G(z))\to1。问题: 训练早期 GG 很弱、DD 能轻松识破,此时 D(G(z))≈0D(G(z))\approx0,函数 log⁡(1−D)\log(1-D) 在 D→0D\to0 处几乎平坦,梯度 ∂∂Dlog⁡(1−D)=−11−D≈−1\dfrac{\partial}{\partial D}\log(1-D)=\dfrac{-1}{1-D}\approx-1 传回生成器后被链式压得很小——即梯度消失,生成器学不动。

6.4 非饱和生成器损失(实践常用)

把目标改成"最大化 log⁡D(G(z))\log D(G(z))",等价于最小化其负值:

  LG=− Ez∼p(z)[log⁡D(G(z))]  \boxed{\; \mathcal L_G=-\,\mathbb E_{z\sim p(z)}\big[\log D(G(z))\big] \;}

它相当于把生成样本的目标标签设成 1,直接复用 BCE 的"逼近 1"那一支。为什么不饱和:当 D(G(z))≈0D(G(z))\approx0(早期)时,−log⁡D-\log D 很大且其导数 −1D-\dfrac1D 的幅值也很大,给生成器提供强梯度,训练早期就能被有效推动。两者优化方向一致(都想骗过 DD),但梯度性质好得多,故实际几乎都用这个版本。

因此实际 GAN 训练中常见成对形式:

  LD=−log⁡D(xreal)−log⁡(1−D(xfake)),LG=−log⁡D(xfake).  \boxed{\; \begin{aligned} \mathcal L_D&=-\log D(x_{\mathrm{real}})-\log\big(1-D(x_{\mathrm{fake}})\big),\\[4pt] \mathcal L_G&=-\log D(x_{\mathrm{fake}}). \end{aligned} \;}

注意: GAN 不是最小化同一个损失,而是判别器和生成器交替优化两个相反目标。这也是 GAN 相比前几节"单目标 MLE"的根本区别。

GAN 生成器梯度对比:训练早期 non-saturating 版本梯度远强于 minimax 版本

6.5 Wasserstein GAN(WGAN)

§6.1 的推导表明原始 GAN 在最优判别器下最小化的是 JS 散度。这带来一个实际问题:当真实分布 pdatap_{\mathrm{data}} 与生成分布 pgp_g 的支撑集不重叠(高维空间中低维流形几乎总是如此)时,可以证明 JSD 几乎处处恒等于 log⁡2\log2(一个与 GG 无关的常数),此时 ∇θJSD≈0\nabla_\theta \mathrm{JSD}\approx0——判别器训练得越好,生成器梯度反而越接近 0,这是原始 GAN 训练不稳定、容易梯度消失的根本原因(Arjovsky et al., 2017)。

WGAN 把优化目标换成 Wasserstein-1(Earth-Mover)距离:

W(pdata,pg)=inf⁡γ∈Π(pdata,pg)E(x,y)∼γ[∥x−y∥],W(p_{\mathrm{data}},p_g)=\inf_{\gamma\in\Pi(p_{\mathrm{data}},p_g)}\mathbb E_{(x,y)\sim\gamma}\big[\lVert x-y\rVert\big],

即把 pdatap_{\mathrm{data}} "搬运"成 pgp_g 所需的最小总搬运代价,Π\Pi 是所有边缘分布分别为 pdata,pgp_{\mathrm{data}},p_g 的联合分布(耦合)集合。这个定义即使两个分布支撑不重叠也依然连续、处处有意义(不会像 JSD 那样退化成常数)——这是它训练更稳定的根本原因,但 WW 本身作为下确界不可直接求梯度优化。

Kantorovich–Rubinstein 对偶(标准结果,证明从略,属最优传输理论)把这个下确界问题转成一个上确界问题:

  W(pdata,pg)=sup⁡∥f∥L≤1 Ex∼pdata[f(x)]−Ex∼pg[f(x)]  \boxed{\; W(p_{\mathrm{data}},p_g)=\sup_{\lVert f\rVert_L\le1}\ \mathbb E_{x\sim p_{\mathrm{data}}}[f(x)]-\mathbb E_{x\sim p_g}[f(x)] \;}

其中 sup⁡\sup 取遍所有 1-Lipschitz 函数 ff(即 ∣f(x1)−f(x2)∣≤∥x1−x2∥\lvert f(x_1)-f(x_2)\rvert\le\lVert x_1-x_2\rVert)。用一个网络 DθD_\theta(称为 "critic",不再输出 (0,1)(0,1) 概率,而是无界实数)来近似这个 ff,得到 WGAN 的判别器/生成器损失:

  LD=−(Ex∼pdata[D(x)]−Ez[D(G(z))])(critic 要最大化两者之差)LG=−Ez[D(G(z))]  \boxed{\; \begin{aligned} \mathcal L_D&=-\Big(\mathbb E_{x\sim p_{\mathrm{data}}}[D(x)]-\mathbb E_{z}[D(G(z))]\Big)\quad(\text{critic 要最大化两者之差})\\[4pt] \mathcal L_G&=-\mathbb E_z[D(G(z))] \end{aligned} \;}

约束条件"DD 必须 1-Lipschitz"需要额外强制,原始 WGAN 用权重裁剪(把 critic 权重截断到 [−c,c][-c,c]),后续 WGAN-GP(Gulrajani et al., 2017)改用梯度惩罚,直接把"1-Lipschitz ⟺ 梯度范数处处 ≤1\le1"这一充分条件写成软约束加入损失:

LGP=λ Ex^[(∥∇x^D(x^)∥2−1)2],x^=ϵ xreal+(1−ϵ) xfake, ϵ∼U[0,1],\mathcal L_{\mathrm{GP}}=\lambda\,\mathbb E_{\hat x}\Big[\big(\lVert\nabla_{\hat x}D(\hat x)\rVert_2-1\big)^2\Big],\qquad \hat x=\epsilon\, x_{\mathrm{real}}+(1-\epsilon)\,x_{\mathrm{fake}},\ \epsilon\sim U[0,1],

即在真假样本连线上随机取点,惩罚梯度范数偏离 1,比硬性裁剪权重更平滑、训练更稳定。

理论解释: WGAN 与原始 GAN 的根本区别在于优化的"距离"不同——JS 散度在分布不重叠时梯度消失,Wasserstein 距离即使在此情形下依然提供有意义的梯度,这是它成为 GAN 训练稳定性改进的主流方案之一的理论原因。

支撑不重叠时:JSD 很快封顶(平坦),Wasserstein 距离保持线性增长


7. VAE 的损失函数(变分自编码器)

VAE(Kingma & Welling, 2013)假设数据由隐变量 zz 生成:先验 p(z)=N(0,I)p(z)=\mathcal N(0,I),解码器(生成模型)pθ(x∣z)p_\theta(x\mid z),并引入编码器 qϕ(z∣x)q_\phi(z\mid x) 来近似难以直接计算的真实后验 pθ(z∣x)p_\theta(z\mid x)。直接最大化 log⁡pθ(x)=log⁡∫pθ(x,z) dz\log p_\theta(x)=\log\int p_\theta(x,z)\,dz 因为积分不可解而无法直接优化,需要推导一个可优化的下界。

7.1 推导证据下界 ELBO(精确恒等式分解,非仅 Jensen 不等式)

利用条件概率恒等式 pθ(x,z)=pθ(x) pθ(z∣x)p_\theta(x,z)=p_\theta(x)\,p_\theta(z\mid x),对任意 zz 都精确成立 log⁡pθ(x)=log⁡pθ(x,z)−log⁡pθ(z∣x)\log p_\theta(x)=\log p_\theta(x,z)-\log p_\theta(z\mid x)。这个等式与 zz 无关(左边不含 zz),所以对 z∼qϕ(z∣x)z\sim q_\phi(z\mid x) 取期望不改变其值:

log⁡pθ(x)=Eqϕ(z∣x)[log⁡pθ(x,z)−log⁡pθ(z∣x)].\log p_\theta(x)=\mathbb E_{q_\phi(z\mid x)}\big[\log p_\theta(x,z)-\log p_\theta(z\mid x)\big].

在括号内同时加减 log⁡qϕ(z∣x)\log q_\phi(z\mid x):

log⁡pθ(x)=Eqϕ(z∣x) ⁣[log⁡pθ(x,z)qϕ(z∣x)]⏟:= ELBO(x;θ,ϕ)+Eqϕ(z∣x) ⁣[log⁡qϕ(z∣x)pθ(z∣x)]⏟= DKL(qϕ(z∣x) ∥ pθ(z∣x)).\log p_\theta(x) =\underbrace{\mathbb E_{q_\phi(z\mid x)}\!\left[\log\frac{p_\theta(x,z)}{q_\phi(z\mid x)}\right]}_{:=\ \mathrm{ELBO}(x;\theta,\phi)} +\underbrace{\mathbb E_{q_\phi(z\mid x)}\!\left[\log\frac{q_\phi(z\mid x)}{p_\theta(z\mid x)}\right]}_{=\,D_{\mathrm{KL}}(q_\phi(z\mid x)\,\Vert\,p_\theta(z\mid x))}.

即精确的分解式:

  log⁡pθ(x)=ELBO(x;θ,ϕ)+DKL(qϕ(z∣x) ∥ pθ(z∣x))  \boxed{\; \log p_\theta(x)=\mathrm{ELBO}(x;\theta,\phi)+D_{\mathrm{KL}}\big(q_\phi(z\mid x)\,\Vert\,p_\theta(z\mid x)\big) \;}

由 §4.2 证明过的 KL 非负性,DKL(⋅∥⋅)≥0D_{\mathrm{KL}}(\cdot\Vert\cdot)\ge0,于是

log⁡pθ(x) ≥ ELBO(x;θ,ϕ),\log p_\theta(x)\ \ge\ \mathrm{ELBO}(x;\theta,\phi),

等号成立当且仅当 qϕ(z∣x)=pθ(z∣x)q_\phi(z\mid x)=p_\theta(z\mid x)(编码器精确恢复真实后验)。这就是"证据下界"名字的由来:ELBO 是似然 log⁡pθ(x)\log p_\theta(x) 的一个下界,且两者之差恰好是编码器对真实后验的近似误差,编码器越准,下界越紧。

7.2 拆分 ELBO:重建项 + 先验匹配项

利用生成模型的分解 pθ(x,z)=pθ(x∣z) p(z)p_\theta(x,z)=p_\theta(x\mid z)\,p(z):

ELBO=Eqϕ(z∣x) ⁣[log⁡pθ(x∣z) p(z)qϕ(z∣x)]=Eqϕ(z∣x)[log⁡pθ(x∣z)]+Eqϕ(z∣x) ⁣[log⁡p(z)qϕ(z∣x)].\mathrm{ELBO}=\mathbb E_{q_\phi(z\mid x)}\!\left[\log\frac{p_\theta(x\mid z)\,p(z)}{q_\phi(z\mid x)}\right] =\mathbb E_{q_\phi(z\mid x)}\big[\log p_\theta(x\mid z)\big]+\mathbb E_{q_\phi(z\mid x)}\!\left[\log\frac{p(z)}{q_\phi(z\mid x)}\right].

第二项按定义就是 −DKL(qϕ(z∣x)∥p(z))-D_{\mathrm{KL}}(q_\phi(z\mid x)\Vert p(z)),于是

  ELBO=Eqϕ(z∣x)[log⁡pθ(x∣z)]⏟重建项−DKL(qϕ(z∣x) ∥ p(z))⏟先验匹配项  \boxed{\; \mathrm{ELBO}=\underbrace{\mathbb E_{q_\phi(z\mid x)}\big[\log p_\theta(x\mid z)\big]}_{\text{重建项}}-\underbrace{D_{\mathrm{KL}}\big(q_\phi(z\mid x)\,\Vert\,p(z)\big)}_{\text{先验匹配项}} \;}

训练时最小化负 ELBO:

  LVAE=−Eqϕ(z∣x)[log⁡pθ(x∣z)]+DKL(qϕ(z∣x) ∥ p(z))  \boxed{\; \mathcal L_{\mathrm{VAE}}=-\mathbb E_{q_\phi(z\mid x)}\big[\log p_\theta(x\mid z)\big]+D_{\mathrm{KL}}\big(q_\phi(z\mid x)\,\Vert\,p(z)\big) \;}

两项各自有清晰含义,且都与前面章节呼应:

7.3 先验匹配项的闭式解(对角高斯情形)

设 qϕ(z∣x)=N(z;μϕ(x),diag(σϕ2(x)))q_\phi(z\mid x)=\mathcal N(z;\mu_\phi(x),\mathrm{diag}(\sigma_\phi^2(x)))(编码器输出均值和对角方差),逐维独立,先推导单维 DKL(N(μ,σ2) ∥ N(0,1))D_{\mathrm{KL}}\big(\mathcal N(\mu,\sigma^2)\,\Vert\,\mathcal N(0,1)\big):

DKL=∫N(z;μ,σ2)log⁡N(z;μ,σ2)N(z;0,1) dz,log⁡N(z;μ,σ2)N(z;0,1)=−log⁡σ−(z−μ)22σ2+z22.D_{\mathrm{KL}}=\int \mathcal N(z;\mu,\sigma^2)\log\frac{\mathcal N(z;\mu,\sigma^2)}{\mathcal N(z;0,1)}\,dz,\qquad \log\frac{\mathcal N(z;\mu,\sigma^2)}{\mathcal N(z;0,1)}=-\log\sigma-\frac{(z-\mu)^2}{2\sigma^2}+\frac{z^2}{2}.

对 z∼N(μ,σ2)z\sim\mathcal N(\mu,\sigma^2) 取期望,用 E[(z−μ)2]=σ2\mathbb E[(z-\mu)^2]=\sigma^2 和 E[z2]=μ2+σ2\mathbb E[z^2]=\mu^2+\sigma^2:

DKL=−log⁡σ−σ22σ2+μ2+σ22=−log⁡σ+μ2+σ2−12=12(μ2+σ2−log⁡σ2−1).D_{\mathrm{KL}}=-\log\sigma-\frac{\sigma^2}{2\sigma^2}+\frac{\mu^2+\sigma^2}{2} =-\log\sigma+\frac{\mu^2+\sigma^2-1}{2} =\frac12\big(\mu^2+\sigma^2-\log\sigma^2-1\big).

对角高斯情形逐维求和即得标准闭式解:

  DKL(qϕ(z∣x) ∥ p(z))=12∑j=1d(μj2+σj2−log⁡σj2−1)  \boxed{\; D_{\mathrm{KL}}\big(q_\phi(z\mid x)\,\Vert\,p(z)\big)=\frac12\sum_{j=1}^{d}\Big(\mu_j^2+\sigma_j^2-\log\sigma_j^2-1\Big) \;}

这个闭式解正是 VAE 实现中直接写出的正则项,不需要采样估计。

VAE 先验匹配项闭式解:全局最小点在 (μ,σ)=(0,1)

7.4 重参数化技巧(工程实践,非损失本身)

ELBO\mathrm{ELBO} 中重建项是对 z∼qϕ(z∣x)z\sim q_\phi(z\mid x) 的期望,训练需要对 ϕ\phi 求梯度,但"从分布中采样"这一步本身不可导。重参数化把随机性搬到与 ϕ\phi 无关的噪声源上:

z=μϕ(x)+σϕ(x)⊙ϵ,ϵ∼N(0,I),z=\mu_\phi(x)+\sigma_\phi(x)\odot\epsilon,\qquad \epsilon\sim\mathcal N(0,I),

此时 zz 是 ϕ\phi 的确定性函数(对给定的 ϵ\epsilon),梯度可以正常反传,只是数值上的采样估计噪声不可避免(可用小批量、少量采样缓解)。这一步不改变损失的数学形式,只是让 §7.2 的期望项可以用随机梯度下降优化。

VAE 与扩散模型的关系:扩散模型可以看作一个隐变量链更长、每一步都是简单高斯转移的层级 VAE——§7.1 的 ELBO 推导思路会在 §8.4 原样复用。


8. 扩散模型的损失函数

扩散模型训练时,向真实数据 x0x_0 逐步加高斯噪声(前向过程),再训一个网络学习"去噪"(反向过程)。前向过程有闭式解,可一步直接得到任意时刻 xtx_t:

xt=αˉt x0+1−αˉt ϵ,ϵ∼N(0,I).x_t=\sqrt{\bar\alpha_t}\,x_0+\sqrt{1-\bar\alpha_t}\,\epsilon,\qquad \epsilon\sim\mathcal N(0,I).

模型接收 (xt,t)(x_t,t),预测加入的噪声 ϵθ(xt,t)\epsilon_\theta(x_t,t)。

8.1 最常用:噪声预测 MSE(ϵ\epsilon-prediction)

  Ldiffusion=Ex0,ϵ,t[∥ϵ−ϵθ(xt,t)∥22]  \boxed{\; \mathcal L_{\mathrm{diffusion}} =\mathbb E_{x_0,\epsilon,t}\Big[\big\|\epsilon-\epsilon_\theta(x_t,t)\big\|_2^2\Big] \;}

训练一步的直观流程:

  1. 取一张真实数据 x0x_0;
  2. 随机采一个时间步 tt;
  3. 随机采高斯噪声 ϵ\epsilon;
  4. 用闭式公式合成加噪数据 xtx_t;
  5. 让模型据 (xt,t)(x_t,t) 预测噪声 ϵθ\epsilon_\theta;
  6. 用 MSE 比较预测噪声与真实噪声。

所以扩散模型最常见的损失,本质上还是 §1.1 的 MSE,只不过回归目标是"噪声":

  真实噪声  −  预测噪声    →  平方误差\boxed{\;\text{真实噪声}\;-\;\text{预测噪声}\;}\;\to\;\text{平方误差}

§8.4 会从变分下界出发,严格推导出这个 MSE 究竟从哪里来、以及它相对"完整理论目标"丢弃了什么。

8.2 预测原始数据 x0x_0(x0x_0-prediction)

有些实现让网络直接回归原图 x^0=xθ(xt,t)\hat x_0=x_\theta(x_t,t):

  Lx0=E[∥x0−x^0∥22]  \boxed{\; \mathcal L_{x_0}=\mathbb E\big[\|x_0-\hat x_0\|_2^2\big] \;}

由前向公式,ϵ\epsilon 与 x0x_0 在 (xt,t)(x_t,t) 已知时可互相线性换算(x0=1αˉt(xt−1−αˉt ϵ)x_0=\frac{1}{\sqrt{\bar\alpha_t}}(x_t-\sqrt{1-\bar\alpha_t}\,\epsilon)),因此这与噪声预测只是同一目标的不同参数化,仍是 MSE。

8.3 vv-prediction

Stable Diffusion 等采用 vv 参数化,定义

v=αˉt ϵ−1−αˉt x0,v=\sqrt{\bar\alpha_t}\,\epsilon-\sqrt{1-\bar\alpha_t}\,x_0,

网络预测 vθ(xt,t)v_\theta(x_t,t),损失

  Lv=E[∥v−vθ(xt,t)∥22]  \boxed{\; \mathcal L_v=\mathbb E\big[\|v-v_\theta(x_t,t)\|_2^2\big] \;}

vv 是 ϵ\epsilon 与 x0x_0 的线性组合,在高低噪声区间数值更均衡、训练更稳,但目标参数化不同,本质仍是 MSE。

8.4 完整理论目标:变分下界(ELBO)与"简化损失"的完整推导

上面三种 MSE 看似朴素,其实是从严格的变分推断简化来的,推导思路与 §7.1 的 VAE ELBO 完全一致——扩散模型就是一条隐变量链 x1,…,xTx_1,\dots,x_T 的层级 VAE,"编码器" qq 是固定的加噪过程,"解码器" pθp_\theta 是待学习的去噪过程。

第一步:变分下界的形式

套用 §7.1 的推导(把单个隐变量 zz 换成整条链 x1:Tx_{1:T}),扩散模型真正优化的是负 ELBO:

LVLB=−Eq ⁣[log⁡pθ(x0:T)q(x1:T∣x0)] ≥ −log⁡pθ(x0).\mathcal L_{\mathrm{VLB}}=-\mathbb E_q\!\left[\log\frac{p_\theta(x_{0:T})}{q(x_{1:T}\mid x_0)}\right]\ \ge\ -\log p_\theta(x_0).

按时间步展开(DDPM 论文的标准结果),可写成三部分:

  LVLB=L0⏟重建项+∑t=2TDKL ⁣(q(xt−1∣xt,x0) ∥ pθ(xt−1∣xt))⏟逐步去噪匹配项+LT⏟先验匹配项  \boxed{\; \mathcal L_{\mathrm{VLB}} =\underbrace{\mathcal L_0}_{\text{重建项}} +\sum_{t=2}^{T}\underbrace{D_{\mathrm{KL}}\!\big(q(x_{t-1}\mid x_t,x_0)\,\big\|\,p_\theta(x_{t-1}\mid x_t)\big)}_{\text{逐步去噪匹配项}} +\underbrace{\mathcal L_T}_{\text{先验匹配项}} \;}

LT=DKL(q(xT∣x0)∥p(xT))\mathcal L_T=D_{\mathrm{KL}}(q(x_T\mid x_0)\Vert p(x_T)) 中 p(xT)=N(0,I)p(x_T)=\mathcal N(0,I) 无参数,且前向过程设计得使 q(xT∣x0)≈N(0,I)q(x_T\mid x_0)\approx\mathcal N(0,I),故 LT≈\mathcal L_T\approx 常数,可忽略。真正含参数梯度的是中间那串 KL 项,下面把它完整展开成 MSE。

第二步:前向后验 q(xt−1∣xt,x0)q(x_{t-1}\mid x_t,x_0) 的闭式高斯("配方法"求均值方差)

由贝叶斯定理 q(xt−1∣xt,x0)∝q(xt∣xt−1) q(xt−1∣x0)q(x_{t-1}\mid x_t,x_0)\propto q(x_t\mid x_{t-1})\,q(x_{t-1}\mid x_0),两个因子都是高斯:

q(xt∣xt−1)=N(xt;αt xt−1, βtI),q(xt−1∣x0)=N(xt−1;αˉt−1 x0, (1−αˉt−1)I).q(x_t\mid x_{t-1})=\mathcal N\big(x_t;\sqrt{\alpha_t}\,x_{t-1},\,\beta_t I\big),\qquad q(x_{t-1}\mid x_0)=\mathcal N\big(x_{t-1};\sqrt{\bar\alpha_{t-1}}\,x_0,\,(1-\bar\alpha_{t-1})I\big).

把两个高斯密度的指数部分相加、按 xt−1x_{t-1} 配方(标准的"高斯乘高斯仍是高斯"配方法),二次项系数给出方差、一次项系数给出均值。配方后(过程与多元高斯共轭推导一致,此处直接给出结果):

q(xt−1∣xt,x0)=N(xt−1;μ~t(xt,x0), β~tI),q(x_{t-1}\mid x_t,x_0)=\mathcal N\big(x_{t-1};\tilde\mu_t(x_t,x_0),\,\tilde\beta_t I\big), β~t=1−αˉt−11−αˉt βt,μ~t(xt,x0)=αt (1−αˉt−1)1−αˉt xt+αˉt−1 βt1−αˉt x0.\tilde\beta_t=\frac{1-\bar\alpha_{t-1}}{1-\bar\alpha_t}\,\beta_t, \qquad \tilde\mu_t(x_t,x_0)=\frac{\sqrt{\alpha_t}\,(1-\bar\alpha_{t-1})}{1-\bar\alpha_t}\,x_t+\frac{\sqrt{\bar\alpha_{t-1}}\,\beta_t}{1-\bar\alpha_t}\,x_0 .

(可自行代入 αˉt=αtαˉt−1\bar\alpha_t=\alpha_t\bar\alpha_{t-1} 验证 β~t\tilde\beta_t 的分母化简:αt(1−αˉt−1)+βt=αt−αˉt+(1−αt)=1−αˉt\alpha_t(1-\bar\alpha_{t-1})+\beta_t=\alpha_t-\bar\alpha_t+(1-\alpha_t)=1-\bar\alpha_t,与上式一致。)

模型的反向过程同样设为高斯 pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σt)p_\theta(x_{t-1}\mid x_t)=\mathcal N(x_{t-1};\mu_\theta(x_t,t),\Sigma_t),常见做法是把方差直接固定为 Σt=β~tI\Sigma_t=\tilde\beta_t I(不学习),只学均值 μθ\mu_\theta。

第三步:两个协方差相同的高斯之间的 KL 有干净闭式解

对两个协方差同为 σ2I\sigma^2 I(DD 维)的高斯,多元高斯 KL 的一般公式

DKL(N(μ1,Σ1)∥N(μ2,Σ2))=12[tr(Σ2−1Σ1)+(μ2−μ1)⊤Σ2−1(μ2−μ1)−D+log⁡det⁡Σ2det⁡Σ1]D_{\mathrm{KL}}\big(\mathcal N(\mu_1,\Sigma_1)\Vert\mathcal N(\mu_2,\Sigma_2)\big) =\frac12\Big[\mathrm{tr}(\Sigma_2^{-1}\Sigma_1)+(\mu_2-\mu_1)^\top\Sigma_2^{-1}(\mu_2-\mu_1)-D+\log\frac{\det\Sigma_2}{\det\Sigma_1}\Big]

(标准结果,直接引用)在 Σ1=Σ2=σ2I\Sigma_1=\Sigma_2=\sigma^2I 时大幅化简:迹项 =tr(I)=D=\mathrm{tr}(I)=D,行列式比值 =1⇒log⁡(⋅)=0=1\Rightarrow\log(\cdot)=0,两者与 −D-D 抵消,只剩二次型项:

  DKL(N(μ1,σ2I) ∥ N(μ2,σ2I))=12σ2∥μ1−μ2∥2  \boxed{\; D_{\mathrm{KL}}\big(\mathcal N(\mu_1,\sigma^2I)\,\Vert\,\mathcal N(\mu_2,\sigma^2I)\big)=\frac{1}{2\sigma^2}\lVert\mu_1-\mu_2\rVert^2 \;}

代入 σ2=β~t\sigma^2=\tilde\beta_t、μ1=μ~t\mu_1=\tilde\mu_t、μ2=μθ\mu_2=\mu_\theta:

DKL(q(xt−1∣xt,x0) ∥ pθ(xt−1∣xt))=12β~t∥μ~t(xt,x0)−μθ(xt,t)∥2.D_{\mathrm{KL}}\big(q(x_{t-1}\mid x_t,x_0)\,\Vert\,p_\theta(x_{t-1}\mid x_t)\big)=\frac{1}{2\tilde\beta_t}\big\lVert\tilde\mu_t(x_t,x_0)-\mu_\theta(x_t,t)\big\rVert^2 .

即 KL 项精确等于两个均值之差的(加权)平方——原文"退化成预测均值之差的平方"这句话到这里已经严格证明,不再是断言。

第四步:把均值差重参数化成噪声差,显式解出权重 w(t)w(t)

用前向公式反解 x0=1αˉt(xt−1−αˉt ϵ)x_0=\frac{1}{\sqrt{\bar\alpha_t}}(x_t-\sqrt{1-\bar\alpha_t}\,\epsilon),代入 μ~t\tilde\mu_t 的表达式并利用 αˉt−1/αˉt=1/αt\sqrt{\bar\alpha_{t-1}}/\sqrt{\bar\alpha_t}=1/\sqrt{\alpha_t},xtx_t 的系数可以合并化简(分子 αt(1−αˉt−1)+βt=1−αˉt\alpha_t(1-\bar\alpha_{t-1})+\beta_t=1-\bar\alpha_t,与第二步同一恒等式):

μ~t=1αt(xt−βt1−αˉt ϵ).\tilde\mu_t=\frac{1}{\sqrt{\alpha_t}}\Big(x_t-\frac{\beta_t}{\sqrt{1-\bar\alpha_t}}\,\epsilon\Big).

于是把模型均值也用同样的函数形式参数化(网络只需预测 ϵθ\epsilon_\theta):

μθ(xt,t):=1αt(xt−βt1−αˉt ϵθ(xt,t)),\mu_\theta(x_t,t):=\frac{1}{\sqrt{\alpha_t}}\Big(x_t-\frac{\beta_t}{\sqrt{1-\bar\alpha_t}}\,\epsilon_\theta(x_t,t)\Big),

两者相减,xtx_t 项抵消,只剩噪声差:

μ~t−μθ=−βtαt1−αˉt(ϵ−ϵθ(xt,t)).\tilde\mu_t-\mu_\theta=-\frac{\beta_t}{\sqrt{\alpha_t}\sqrt{1-\bar\alpha_t}}\big(\epsilon-\epsilon_\theta(x_t,t)\big).

代回第三步的 KL 闭式解:

  DKL(q ∥ pθ)=βt22 β~t αt (1−αˉt)⏟=:w(t)  ∥ϵ−ϵθ(xt,t)∥2  \boxed{\; D_{\mathrm{KL}}\big(q\,\Vert\,p_\theta\big)=\underbrace{\frac{\beta_t^2}{2\,\tilde\beta_t\,\alpha_t\,(1-\bar\alpha_t)}}_{=:w(t)}\;\big\lVert\epsilon-\epsilon_\theta(x_t,t)\big\rVert^2 \;}

这就是 §8.1 那个 MSE 的完整理论出处:每一步的 KL 项精确等于"真实噪声减预测噪声"的平方乘一个由噪声调度 {αt,βt,αˉt}\{\alpha_t,\beta_t,\bar\alpha_t\} 决定的权重 w(t)w(t)——不是类比,是代数恒等。

第五步:DDPM 的"简化"

严格的 VLB 要求对每个 tt 按 w(t)w(t) 加权求和。DDPM(Ho et al., 2020)实验发现:直接把 w(t)w(t) 设为 1(即丢弃理论权重、每个时间步等权重平均),训练更稳定、样本质量反而更好:

Lsimple=Ex0,ϵ,t[∥ϵ−ϵθ(xt,t)∥2].\mathcal L_{\mathrm{simple}}=\mathbb E_{x_0,\epsilon,t}\big[\lVert\epsilon-\epsilon_\theta(x_t,t)\rVert^2\big].

直觉解释:理论权重 w(t)w(t) 在 tt 很小(几乎无噪声)时数值很大,会让训练过度关注"去除极少量噪声"这种相对次要的信号;设 w(t)=1w(t)=1 相当于把各时间步的重要性拉平,让模型在噪声较大、结构信息更关键的中间时间步上也能获得足够梯度信号。

  扩散模型的简化 MSE 损失=VLB 中间项在 w(t)→1 时的特例  \boxed{\;\text{扩散模型的简化 MSE 损失}=\text{VLB 中间项在 }w(t)\to1\text{ 时的特例}\;}

它既是 §1.1 意义下的普通 MSE,又与变分下界严格同源:§8.1 直接写出的那个 MSE,本质上就是这里 w(t)→1w(t)\to1 时的特例。

扩散模型噪声调度与理论权重 w(t):t 很小时权重远大于 1,DDPM 将其拉平为常数