总结对照(先看这张表)

类别损失常用形式概率 / 理论解释
回归MSE1N(yiy^i)2\frac1N\sum(y_i-\hat y_i)^2高斯 NLL(固定方差)
回归MAE1Nyiy^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λiyilogλ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,1yz)\max(0,1-yz)0-1 损失的凸上界(非概率模型)
多分类Cross Entropy见 §4.1Categorical NLL
多分类KL 散度见 §4.2CE 的一般形式:H(q,p)=H(q)+DKL(qp)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(qprior)D_{\mathrm{KL}}(q\Vert\text{prior})
扩散模型噪声预测 MSE见 §8负 ELBO 化简(逐步权重设为 1)

最核心的统一关系:

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

也即

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

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

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

统一记号

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

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


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

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

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

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

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

logp(Dθ)=i=1Nlogp(yixi,θ).\log p(\mathcal D\mid\theta)=\sum_{i=1}^{N}\log p(y_i\mid x_i,\theta).

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

  LNLL(θ)=1Ni=1Nlogp(yixi,θ)  \boxed{\; \mathcal L_{\mathrm{NLL}}(\theta)= -\frac{1}{N}\sum_{i=1}^{N}\log p(y_i\mid x_i,\theta) \;}

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

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

下面逐一把它们出来。


1. 回归模型

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

1.1 均方误差 MSE

  LMSE=1Ni=1N(yiy^i)2  \boxed{\; \mathcal L_{\mathrm{MSE}}=\frac{1}{N}\sum_{i=1}^{N}(y_i-\hat y_i)^2 \;}

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

L=12Ni=1N(yiy^i)2.\mathcal L=\frac{1}{2N}\sum_{i=1}^{N}(y_i-\hat y_i)^2 .

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

y^  12(yy^)2=122(yy^)(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,ϵiN(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(yixi,θ)=N ⁣(yifθ(xi),σ2)=12πσ2exp ⁣((yifθ(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)=loga+logb\log(ab)=\log a+\log blogeu=u\log e^u=u):

LNLL=1Ni=1Nlogp(yixi,θ)=1Ni=1N[(yifθ(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} 是正的常数缩放,也不改变最优解。于是

argminθLNLL=argminθ1Ni=1N(yifθ(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=1Ni=1Nyiy^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(yixi,θ)=12bexp ⁣(yifθ(xi)b).p(y_i\mid x_i,\theta)=\frac{1}{2b}\exp\!\left(-\frac{|y_i-f_\theta(x_i)|}{b}\right).

取负对数:

logp(yixi,θ)=yifθ(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 等价于最小化 iyiy^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(yx,θ)=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=1Ni=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=yy^r=y-\hat y、阈值 δ>0\delta>0

  Lδ(r)={12r2,rδδ(r12δ),rgt;δ  \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 yr=yy^r=y-\hat y):

Lδy^={y^y,rδ(与 MSE 相同)δsign(y^y),rgt;δ(幅值恒定为 δ, 与 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,r0(τ1)r,r<0,r=yqθ(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[ρτ(Yq)]\mathbb E[\rho_\tau(Y-q)] 恰好给出第 τ\tau 分位点。YY 的密度为 ff、累积分布为 FF。把总体风险按 rr 的符号拆成两段积分:

R(q)=EY[ρτ(Yq)]=q(1τ)(qy)f(y)dy+qτ(yq)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τqf(y)dy=(1τ)F(q)τ(1F(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=F1(τ)  \boxed{\;F(q^*)=\tau\;\Longleftrightarrow\;q^*=F^{-1}(\tau)\;}

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

特例验证: τ=0.5\tau=0.5ρ0.5(r)=0.5r\rho_{0.5}(r)=0.5\,rr0r\ge0)或 0.5r-0.5\,rr<0r<0),即 ρ0.5(r)=12r\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(yixi,θ)=λiyieλiyi!.p(y_i\mid x_i,\theta)=\frac{\lambda_i^{\,y_i}e^{-\lambda_i}}{y_i!}.

取负对数:

logp(yixi,θ)=λiyilogλ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=1Ni=1N[λiyilogλ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=1Ni[eziyizi]\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θ(xtx<t)  ,x<t:=x1,x2,,xt1.\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=1Tlogpθ(xtx<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θ(xtx<t)p_\theta(x_t\mid x_{<t})(词表上的 Categorical 分布,见 §4)。把 §4 将推出的"单样本交叉熵 = log-\log 真类概率"代入每一步,对序列取平均:

  LLLM=1Tt=1Tlogpθ ⁣(xttruex<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θ(xt1,xt2,)+ϵt,ϵtN(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=1Tt=1T(xtx^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+ezi(0,1).p_i=\sigma(z_i)=\frac{1}{1+e^{-z_i}}\in(0,1).

3.1 二元交叉熵 BCE

  LBCE=1Ni=1N[yilogpi+(1yi)log(1pi)]  \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=yilogpi(1yi)log(1pi)\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=0y=1y=1 两种情形:

p(yx,θ)=py(1p)1y(  y=1p,y=01p  ).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)=yloga\log(a^y)=y\log a):

logp(yx,θ)=[ylogp+(1y)log(1p)],-\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 求导,会神奇地约掉所有分式:

Lizi=σ(zi)yi=piyi.\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=1pp_t=1-p(若 y=0y=0),即模型分配给真实类别的概率(ptp_t 越接近 1 表示分类越"容易/正确")。标准 BCE 可统一写成 LBCE=logpt\mathcal L_{\mathrm{BCE}}=-\log p_t。Focal Loss 在此基础上乘一个调制因子:

  FL(pt)=αt(1pt)γlogpt  ,γ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(1pt)0=1(1-p_t)^0=1FL=αtlogpt\mathrm{FL}=-\alpha_t\log p_t,退化为(类别加权的)标准 BCE——说明 Focal Loss 是 BCE 的严格推广。

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

FLp=α[γqγ1(1)logp+qγ1p]=αγqγ1logpα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

FLz=(αγqγ1logpαqγp)pq=αqγ[γplogpq]=α(1p)γ[γplogp(1p)].\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 核验:(1p)0[0(1p)]=(1p)=p1(1-p)^0[0-(1-p)]=-(1-p)=p-1,与 §3.1 的标准 BCE 梯度 py=p1p-y=p-1 一致 ✓。

对于易分样本p1p\to1,即 q=1p0q=1-p\to0),梯度中 (1p)γ(1-p)^\gamma 这一因子以 γ\gamma 次幂速度趋于 0,而标准 BCE 的梯度只是线性地 (1p)\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=1Ni=1Nmax(0,1yizi)  \boxed{\; \mathcal L_{\mathrm{hinge}}=\frac1N\sum_{i=1}^N\max(0,\,1-y_iz_i) \;}

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

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

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

次梯度:

Lhinge,izi={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+eyz)\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+maxkyzkzy)\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=ezikj=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=1Ni=1Nk=1Kyiklogpik  \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=1Ni=1Nlogpi,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],则损失 =log0.7=-\log 0.7。模型只需把真类概率推高即可。

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

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

p(yx,θ)=k=1Kpkyk.p(y\mid x,\theta)=\prod_{k=1}^{K}p_k^{\,y_k}.

取负对数即得交叉熵:

logp(yx,θ)=k=1Kyklogpk.-\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 求导也约得很干净:

Lizik=pikyik.\frac{\partial \mathcal L_i}{\partial z_{ik}}=p_{ik}-y_{ik}.

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

工程实践

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

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

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

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

DKL(qp)=kqklogqkpk=kqklogqkH(q)kqklogpkH(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(qp)  \boxed{\; H(q,p)=H(q)+D_{\mathrm{KL}}(q\|p) \;}

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

kpklogqkpklogkpkqkpk=logkqk=log1=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(pq)=kpklogpkqk=kpklogqkpk0,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(qp)H(q,p)=H(q)+D_{\mathrm{KL}}(q\|p) 上:固定目标分布 qq、把 pp 视为模型可调分布,则 DKL(qp)0D_{\mathrm{KL}}(q\|p)\ge0 恒成立,且等号仅在 p=qp=q 时取到。于是

  argminpH(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,argminpH(q,p)=q\arg\min_p H(q,p)=q,要精确达到 py=1p_y=1 需要 zyzkz_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)=kqkLSlogpkH(q^{\mathrm{LS}},p)=-\sum_k q_k^{\mathrm{LS}}\log p_k

  LLS=(1ϵ)logpyϵKk=1Klogpk  \boxed{\; \mathcal L_{\mathrm{LS}} =-(1-\epsilon)\log p_{y}-\frac{\epsilon}{K}\sum_{k=1}^K\log p_k \;}

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

推导最优解为何不再是 py1p_y\to1 由 §4.2 的结论 argminpH(q,p)=q\arg\min_p H(q,p)=q,直接代入 q=qLSq=q^{\mathrm{LS}}

py=1ϵ+ϵK<1,pk=ϵK  (ky).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=T2DKL(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(pq)=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/zi1KT2(zistudentziteacher)\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=yijdij2+(1yij)[max(0,mdij)]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)22f(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 个正样本 + N1N-1 个负样本"当成一次 NN 选 1 的分类问题。设锚点嵌入 ziz_i,一个正样本嵌入 zi+z_i^+N1N-1 个负样本 {zj}\{z_j^-\},相似度 s(u,v)=uv/τs(u,v)=u^\top v/\tauτ\tau 为温度):

  LInfoNCE=logexp(s(zi,zi+))exp(s(zi,zi+))+j=1N1exp(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 的多分类交叉熵,换了一层皮。 把正样本和 N1N-1 个负样本合并看成 NN 个"类别候选",其相似度 s(zi,)/1s(z_i,\cdot)/1 当作 logit,套 softmax:

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

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

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

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

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

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


6. GAN 的损失函数

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

6.1 原始 GAN:极小极大博弈

  minGmaxD  V(D,G)=Expdata[logD(x)]+Ezp(z)[log(1D(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)logD(x)+pg(x)log(1D(x))]dx.\int \Big[p_{\mathrm{data}}(x)\log D(x)+p_g(x)\log(1-D(x))\Big]\,dx .

D(x)D(x) 求导置零:pdataDpg1D=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)}.

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

V(D,G)=2JSD ⁣(pdatapg)2log2,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=Expdata[logD(x)]Ezp(z)[log(1D(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=Ezp(z)[log(1D(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(1D)\log(1-D)D0D\to0 处几乎平坦,梯度 Dlog(1D)=11D1\dfrac{\partial}{\partial D}\log(1-D)=\dfrac{-1}{1-D}\approx-1 传回生成器后被链式压得很小——即梯度消失,生成器学不动。

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

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

  LG=Ezp(z)[logD(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(早期)时,logD-\log D 很大且其导数 1D-\dfrac1D幅值也很大,给生成器提供强梯度,训练早期就能被有效推动。两者优化方向一致(都想骗过 DD),但梯度性质好得多,故实际几乎都用这个版本。

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

  LD=logD(xreal)log(1D(xfake)),LG=logD(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 几乎处处恒等于 log2\log2(一个与 GG 无关的常数),此时 θJSD0\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)γ[xy],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)=supfL1 Expdata[f(x)]Expg[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)x1x2\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=(Expdata[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^)21)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θ(xz)p_\theta(x\mid z),并引入编码器 qϕ(zx)q_\phi(z\mid x) 来近似难以直接计算的真实后验 pθ(zx)p_\theta(z\mid x)。直接最大化 logpθ(x)=logpθ(x,z)dz\log p_\theta(x)=\log\int p_\theta(x,z)\,dz 因为积分不可解而无法直接优化,需要推导一个可优化的下界。

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

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

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

在括号内同时加减 logqϕ(zx)\log q_\phi(z\mid x)

logpθ(x)=Eqϕ(zx) ⁣[logpθ(x,z)qϕ(zx)]:= ELBO(x;θ,ϕ)+Eqϕ(zx) ⁣[logqϕ(zx)pθ(zx)]=DKL(qϕ(zx)pθ(zx)).\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))}.

即精确的分解式:

  logpθ(x)=ELBO(x;θ,ϕ)+DKL(qϕ(zx)pθ(zx))  \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,于是

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

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

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

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

ELBO=Eqϕ(zx) ⁣[logpθ(xz)p(z)qϕ(zx)]=Eqϕ(zx)[logpθ(xz)]+Eqϕ(zx) ⁣[logp(z)qϕ(zx)].\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ϕ(zx)p(z))-D_{\mathrm{KL}}(q_\phi(z\mid x)\Vert p(z)),于是

  ELBO=Eqϕ(zx)[logpθ(xz)]重建项DKL(qϕ(zx)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ϕ(zx)[logpθ(xz)]+DKL(qϕ(zx)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ϕ(zx)=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)logN(z;μ,σ2)N(z;0,1)dz,logN(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}.

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

DKL=logσσ22σ2+μ2+σ22=logσ+μ2+σ212=12(μ2+σ2logσ21).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ϕ(zx)p(z))=12j=1d(μj2+σj2logσj21)  \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 实现中直接写出的正则项,不需要采样估计。

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

ELBO\mathrm{ELBO} 中重建项是对 zqϕ(zx)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=αˉtx0+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_0x0x_0-prediction)

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

  Lx0=E[x0x^022]  \boxed{\; \mathcal L_{x_0}=\mathbb E\big[\|x_0-\hat x_0\|_2^2\big] \;}

由前向公式,ϵ\epsilonx0x_0(xt,t)(x_t,t) 已知时可互相线性换算(x0=1αˉt(xt1αˉ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αˉtx0,v=\sqrt{\bar\alpha_t}\,\epsilon-\sqrt{1-\bar\alpha_t}\,x_0,

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

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

vvϵ\epsilonx0x_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 ⁣[logpθ(x0:T)q(x1:Tx0)]  logpθ(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(xt1xt,x0)pθ(xt1xt))逐步去噪匹配项+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(xTx0)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(xTx0)N(0,I)q(x_T\mid x_0)\approx\mathcal N(0,I),故 LT\mathcal L_T\approx 常数,可忽略。真正含参数梯度的是中间那串 KL 项,下面把它完整展开成 MSE。

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

由贝叶斯定理 q(xt1xt,x0)q(xtxt1)q(xt1x0)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(xtxt1)=N(xt;αtxt1,βtI),q(xt1x0)=N(xt1;αˉt1x0,(1αˉt1)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).

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

q(xt1xt,x0)=N(xt1;μ~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αˉt11αˉtβt,μ~t(xt,x0)=αt(1αˉt1)1αˉtxt+αˉt1βt1αˉtx0.\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αˉt1\bar\alpha_t=\alpha_t\bar\alpha_{t-1} 验证 β~t\tilde\beta_t 的分母化简:αt(1αˉt1)+β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θ(xt1xt)=N(xt1;μθ(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 IDD 维)的高斯,多元高斯 KL 的一般公式

DKL(N(μ1,Σ1)N(μ2,Σ2))=12[tr(Σ21Σ1)+(μ2μ1)Σ21(μ2μ1)D+logdetΣ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,行列式比值 =1log()=0=1\Rightarrow\log(\cdot)=0,两者与 D-D 抵消,只剩二次型项:

  DKL(N(μ1,σ2I)N(μ2,σ2I))=12σ2μ1μ22  \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(xt1xt,x0)pθ(xt1xt))=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(xt1αˉtϵ)x_0=\frac{1}{\sqrt{\bar\alpha_t}}(x_t-\sqrt{1-\bar\alpha_t}\,\epsilon),代入 μ~t\tilde\mu_t 的表达式并利用 αˉt1/αˉt=1/αt\sqrt{\bar\alpha_{t-1}}/\sqrt{\bar\alpha_t}=1/\sqrt{\alpha_t}xtx_t 的系数可以合并化简(分子 αt(1αˉt1)+β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(qpθ)=β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 要求对每个 ttw(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 时的特例。