总结对照(先看这张表)
| 类别 | 损失 | 常用形式 | 概率 / 理论解释 |
|---|
| 回归 | MSE | N1∑(yi−y^i)2 | 高斯 NLL(固定方差) |
| 回归 | MAE | N1∑∣yi−y^i∣ | 拉普拉斯 NLL |
| 回归 | Gaussian NLL | 见 §1.3 | 可学习方差高斯 NLL |
| 回归 | Huber / Smooth L1 | 见 §1.4 | MSE/MAE 折中的稳健 M-估计(非单一分布) |
| 回归 | Quantile / Pinball | 见 §1.5 | 使 F(q)=τ 的分位点 M-估计 |
| 回归 | Poisson NLL | λi−yilogλi | 泊松 NLL(计数数据) |
| 自回归 | 交叉熵 / NLL | 见 §2.1 | 条件 Categorical 似然 |
| 自回归 | MSE / Gaussian NLL | 见 §2.2 | 条件高斯似然 |
| 二分类 | BCE | 见 §3.1 | 伯努利 NLL |
| 二分类 | Focal Loss | 见 §3.2 | BCE 的难例加权变体(仍是 NLL) |
| 二分类 | Hinge / SVM | max(0,1−yz) | 0-1 损失的凸上界(非概率模型) |
| 多分类 | Cross Entropy | 见 §4.1 | Categorical NLL |
| 多分类 | KL 散度 | 见 §4.2 | CE 的一般形式:H(q,p)=H(q)+DKL(q∥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 |
| GAN | WGAN | 见 §6.5 | 最小化 Wasserstein-1 距离 |
| 生成模型 | VAE 损失 | 见 §7 | 负 ELBO = 重建项 + DKL(q∥prior) |
| 扩散模型 | 噪声预测 MSE | 见 §8 | 负 ELBO 化简(逐步权重设为 1) |
最核心的统一关系:
大多数监督学习损失=−log(模型给真实结果分配的概率)
也即
最小化负对数似然⟺最大化数据似然
但不是所有损失都来自同一个干净的概率假设:
- Hinge/SVM、Contrastive、Triplet 等是基于间隔或距离的几何启发式目标,不对应某个具体分布的 NLL;
- Focal Loss 是 BCE 的加权变体——仍然是 NLL,只是按样本难度重新加权;
- GAN 通过生成器与判别器的对抗博弈、VAE 与扩散模型通过(近似)变分下界,用不同方式逼近数据分布,而不是对单个样本做直接的 NLL 拟合。
下文按模型类别逐一给出完整推导。各节最后的"概率解释"或"理论解释"说明该损失对应上表中的哪一种假设。
统一记号
| 符号 | 含义 |
|---|
| N | 样本数 |
| yi | 第 i 个样本的真实标签 / 真实值 |
| y^i | 模型对第 i 个样本的预测 |
| zi | 模型输出的原始分数,称为 logit(未经 sigmoid/softmax) |
| θ | 模型参数 |
| xi | 第 i 个样本的输入特征 |
其余符号(如 δ,τ,γ,α,m 等)在对应小节局部定义,避免跨小节复用同一符号引发歧义。
0. 一条贯穿全文的主线:极大似然 = 最小化负对数似然
在推导任何具体损失前,先建立统一框架,后面每一节都是它的特例。
极大似然估计(MLE) 认为:好的参数 θ 应该让"观测到的训练数据"出现的概率最大。假设 N 个样本独立同分布,联合似然为
p(D∣θ)=i=1∏Np(yi∣xi,θ).
连乘不好优化(数值下溢、求导繁琐),取对数把连乘变连加,且对数单调不改变最优解:
logp(D∣θ)=i=1∑Nlogp(yi∣xi,θ).
优化习惯上写成"最小化",于是定义 负对数似然(Negative Log-Likelihood, NLL):
LNLL(θ)=−N1i=1∑Nlogp(yi∣xi,θ)
关键: 你对 p(y∣x,θ) 假设成什么分布,就会推出什么损失。
- 高斯 → MSE
- 拉普拉斯 → MAE
- 泊松 → Poisson NLL
- 伯努利 → BCE
- Categorical(类别分布)→ 交叉熵
下面逐一把它们推出来。
1. 回归模型
回归预测连续数值,例如房价、温度、材料带隙 Eg。
1.1 均方误差 MSE
LMSE=N1i=1∑N(yi−y^i)2
有时写成带 21 的形式:
L=2N1i=1∑N(yi−y^i)2.
21 纯粹是为了求导后系数变干净——对单样本 21(y−y^)2 求导:
∂y^∂21(y−y^)2=21⋅2(y−y^)⋅(−1)=y^−y.
梯度就是"预测减真实"这个残差,非常直观:预测偏大就往下压,偏小就往上抬,21 让前面不再多出一个 2。
概率解释(从高斯 NLL 推出 MSE)
假设真实值 = 模型输出 + 高斯噪声:
yi=fθ(xi)+ϵi,ϵi∼N(0,σ2).
则给定输入,yi 服从以 fθ(xi) 为均值、方差 σ2 的高斯:
p(yi∣xi,θ)=N(yi∣fθ(xi),σ2)=2πσ21exp(−2σ2(yi−fθ(xi))2).
代入 §0 的 NLL 并展开对数(log(ab)=loga+logb,logeu=u):
LNLL=−N1i=1∑Nlogp(yi∣xi,θ)=N1i=1∑N2σ2(yi−fθ(xi))2+与 θ 无关21log(2πσ2).
当 σ 视为固定常数时,第二项是常数、对优化无影响;第一项前面的 2σ21 是正的常数缩放,也不改变最优解。于是
argθminLNLL=argθminN1i=1∑N(yi−fθ(xi))2.
固定方差的高斯负对数似然⟺MSE
这就是"回归默认用 MSE"背后的假设:你其实是在假设残差服从高斯分布。
1.2 平均绝对误差 MAE
LMAE=N1i=1∑N∣yi−y^i∣
MAE 对异常值比 MSE 更鲁棒:MSE 里残差被平方,一个离群点(残差很大)会被放大成主导项;MAE 里残差是线性的,离群点不会被过度放大。
概率解释(从拉普拉斯 NLL 推出 MAE)
假设噪声服从拉普拉斯分布而非高斯:
p(yi∣xi,θ)=2b1exp(−b∣yi−fθ(xi)∣).
取负对数:
−logp(yi∣xi,θ)=b∣yi−fθ(xi)∣+log(2b).
log(2b) 是常数,b1 是正缩放,都不影响最优解,于是最小化 NLL 等价于最小化 ∑i∣yi−y^i∣:
拉普拉斯负对数似然⟺MAE
直观对比:拉普拉斯分布比高斯"尾巴更厚",也就是天然允许偶尔出现较大偏差,所以对异常值不敏感——这与 MAE 的鲁棒性一一对应。

1.3 可学习方差的高斯负对数似然(Gaussian NLL)
§1.1 里把 σ 当常数。若让模型同时预测均值 μθ(x) 和不确定性 σθ(x)(异方差回归),就不能再把方差项丢掉了:
p(y∣x,θ)=N(y∣μθ(x),σθ2(x)).
直接照抄 §1.1 展开、但保留 σi:=σθ(xi) 依赖 θ 的项,并丢掉真正的常数 21log(2π):
LGaussianNLL=N1i=1∑N[2σi2(yi−μi)2+21logσi2]
两项互相制衡,缺一不可:
- 2σi2(yi−μi)2 ——数据拟合项。要求均值准;同时 σi 越大,惩罚被 σi21 削弱,等于允许模型对"没把握"的样本报告更大误差。
- 21logσi2 ——正则项。如果没有它,模型会把 σi→∞ 让第一项趋于 0 从而"作弊逃避误差";logσi2 随 σi 增大而增大,惩罚这种偷懒,逼模型只在真正不确定时才放大 σi。
两项的平衡点:对固定的 μi,令 ∂L/∂σi2=0:
∂σi2∂[2σi2(yi−μi)2+21logσi2]=−2σi4(yi−μi)2+2σi21=0⟹σi2=(yi−μi)2,
即模型学到的方差会收敛到真实的残差平方——这正是"预测不确定性"的意义。

1.4 Huber Loss(Smooth L1)
MSE 在大残差处梯度会随残差线性增大(对离群点敏感),MAE 处处梯度恒定(对离群点鲁棒但在 0 附近不可导、收敛较慢)。Huber Loss 把两者拼接:设残差 r=y−y^、阈值 δ>0,
Lδ(r)=⎩⎨⎧21r2,δ(∣r∣−21δ),∣r∣≤δ∣r∣gt;δ
推导:分段处必须一阶连续(否则梯度会跳变)。 在 r=δ 处检验两段是否平滑衔接:
- 函数值:二次段 21δ2;线性段 δ(δ−21δ)=21δ2。两者相等 ✓
- 导数:二次段 drd21r2=rr=δ=δ;线性段 drd[δ(r−21δ)]=δ(r>0 时)。两者相等 ✓
所以 δ 的取值不是随意拼接,而是唯一使函数在阈值处 C1(一阶连续可导)的分段方式——这也是它被称为 "Smooth L1" 的原因。
梯度(对 y^,r=y−y^):
∂y^∂Lδ={y^−y,δ⋅sign(y^−y),∣r∣≤δ(与 MSE 相同)∣r∣gt;δ(幅值恒定为 δ, 与 MAE 同构)
小残差区表现如 MSE(靠近最优解时梯度平滑衰减到 0,收敛稳定);大残差区表现如 MAE(梯度幅值被 δ 截断,不会因离群点爆炸)。
理论解释: Huber Loss 并非某个单一分布的 NLL,而是 Huber(1964)为鲁棒统计(robust statistics)设计的 M-估计——在"数据主体服从高斯、但可能被少量污染(outlier)"的假设下,使估计量对污染分布最不敏感。它是 MSE 与 MAE 的一个精心设计的折中,而不是"高斯 + 拉普拉斯"的简单拼接。

1.5 分位数回归损失 Quantile / Pinball Loss
MSE/MAE 只能预测条件均值或中位数附近的一个点估计。若要预测 y 的第 τ∈(0,1) 分位点 qθ(x)(例如"90% 置信上界"),需要用 Pinball Loss:
ρτ(r)=r(τ−1[r<0])={τr,(τ−1)r,r≥0r<0,r=y−qθ(x)
即预测偏低(r>0,真实值比预测大)时用斜率 τ 惩罚,预测偏高(r<0)时用斜率 1−τ 惩罚——非对称的绝对值损失。
推导:为什么最小化 E[ρτ(Y−q)] 恰好给出第 τ 分位点。 设 Y 的密度为 f、累积分布为 F。把总体风险按 r 的符号拆成两段积分:
R(q)=EY[ρτ(Y−q)]=∫−∞q(1−τ)(q−y)f(y)dy+∫q∞τ(y−q)f(y)dy.
对 q 求导(用 Leibniz 法则;被积函数在积分端点 y=q 处恰为 0,边界项消失):
dqdR=(1−τ)∫−∞qf(y)dy−τ∫q∞f(y)dy=(1−τ)F(q)−τ(1−F(q))=F(q)−τ.
令 dqdR=0:
F(q∗)=τ⟺q∗=F−1(τ)
即最优 q∗ 恰好是 Y 的第 τ 分位点——这是分位数回归的理论基础(Koenker & Bassett, 1978)。
特例验证: τ=0.5 时 ρ0.5(r)=0.5r(r≥0)或 −0.5r(r<0),即 ρ0.5(r)=21∣r∣,退化为 §1.2 的 MAE(相差常数因子 21)——与"中位数是 τ=0.5 分位点"完全对应,MAE 是分位数损失的特例。

1.6 泊松负对数似然 Poisson NLL(计数回归)
当 yi∈{0,1,2,…} 是计数型数据(如缺陷数、事件发生次数)而非连续实数时,高斯假设不再合适(高斯支持负数、且方差与均值无关,计数数据方差通常随均值增长)。改用泊松分布建模,令模型预测速率 λi=λθ(xi)>0:
p(yi∣xi,θ)=yi!λiyie−λi.
取负对数:
−logp(yi∣xi,θ)=λi−yilogλi+与 θ 无关,可丢弃log(yi!).
对 N 个样本平均:
LPoisson=N1i=1∑N[λi−yilogλi]
泊松负对数似然⟺计数回归损失
工程实践: 由于 λi>0 是硬约束,网络通常直接输出 logλi=zi(PyTorch 中 PoissonNLLLoss(log_input=True) 的默认行为),损失写成 L=N1∑i[ezi−yizi],避免额外的 exp 数值不稳定和梯度截断。这与广义线性模型(GLM)中"对数链接函数(log link)"的做法一致。

2. 自回归模型
自回归(Autoregressive, AR)不是某个固定损失函数,而是一种概率分解方式。它把高维联合分布用链式法则拆成一串条件分布的乘积。
对序列 x1,x2,…,xT,由概率链式法则(恒等式,无需近似):
pθ(x1:T)=t=1∏Tpθ(xt∣x<t),x<t:=x1,x2,…,xt−1.
训练目标 = 最大化整条序列似然 = 最小化其负对数似然:
LAR=−t=1∑Tlogpθ(xt∣x<t)
注意这就是 §0 主线的直接应用,只是把"一个样本的似然"换成"一条序列每一步条件似然的乘积"。每一步预测什么分布,就用什么损失——离散步用交叉熵,连续步用 MSE/高斯 NLL。
2.1 LLM 的自回归损失(离散 token → 交叉熵)
大语言模型在每个位置预测"下一个 token"的类别分布 pθ(xt∣x<t)(词表上的 Categorical 分布,见 §4)。把 §4 将推出的"单样本交叉熵 = −log 真类概率"代入每一步,对序列取平均:
LLLM=−T1t=1∑Tlogpθ(xttrue∣x<t)
即"每个位置正确 token 的负对数概率"之和/平均。举例:
text
输入: 我 喜欢 人工
目标: 喜欢 人工 智能
模型在三个位置分别学习:
p(喜欢∣我),p(人工∣我 喜欢),p(智能∣我 喜欢 人工).
总损失 = 这三个正确 token 的负对数概率之和。模型要让每一步给"正确下一个词"尽量高的概率。
2.2 连续时间序列的自回归损失(连续值 → MSE)
若序列取值连续:
xt=fθ(xt−1,xt−2,…)+ϵt,ϵt∼N(0,σ2).
每一步条件分布是高斯,套用 §1.1 的结论(高斯 NLL ⇔ MSE),逐步求和:
L=T1t=1∑T(xt−x^t)2
小结:
- 离散 token 自回归 → 交叉熵
- 连续值自回归 → MSE 或高斯 NLL
自回归框架不改变损失形式,它只决定"把联合似然拆成逐步条件似然",具体损失仍由每一步的分布假设决定。
3. 二分类模型
二分类标签 yi∈{0,1},例如:是猫/不是猫、材料稳定/不稳定、有缺陷/无缺陷。
模型先输出 logit zi=fθ(xi),再经 Sigmoid 压到 (0,1) 作为"属于类别 1 的概率":
pi=σ(zi)=1+e−zi1∈(0,1).
3.1 二元交叉熵 BCE
LBCE=−N1i=1∑N[yilogpi+(1−yi)log(1−pi)]
单样本形式 Li=−yilogpi−(1−yi)log(1−pi),其巧妙之处是用 y∈{0,1} 做"开关":
- 当 y=1:第二项系数 (1−y)=0 关闭,只剩 L=−logp,逼 p→1。
- 当 y=0:第一项系数 y=0 关闭,只剩 L=−log(1−p),逼 p→0。
概率解释(从伯努利 NLL 推出 BCE)
二分类假设标签服从伯努利分布,其概率质量函数可用一个式子统一写出 y=0 和 y=1 两种情形:
p(y∣x,θ)=py(1−p)1−y(y=1⇒p,y=0⇒1−p).
取负对数(log(ay)=yloga):
−logp(y∣x,θ)=−[ylogp+(1−y)log(1−p)],
对 N 个样本求平均即得 BCE:
伯努利负对数似然⟺二元交叉熵
梯度为何如此干净(sigmoid + BCE 的配合)
把 p=σ(z) 代入单样本 BCE,对 logit z 求导,会神奇地约掉所有分式:
∂zi∂Li=σ(zi)−yi=pi−yi.
(用到 σ′(z)=σ(z)(1−σ(z))。)梯度就是"预测概率减真实标签",与 §1.1 里 MSE 的残差梯度形式一致——这也是 sigmoid 要搭配 BCE(而不是搭配 MSE)的原因:搭 MSE 会在 σ 饱和区出现梯度消失,搭 BCE 则梯度线性、训练稳定。
工程实践
PyTorch 中通常直接用:
python
torch.nn.BCEWithLogitsLoss() # 输入 logit z,内部自动做 sigmoid
它把 sigmoid 与 log 合并用 log-sum-exp 技巧计算,避免 p 接近 0/1 时 log 溢出,数值更稳定。不要自己先 sigmoid 再喂 BCELoss。

3.2 Focal Loss(难例加权)
当正负样本严重不均衡(如目标检测中背景远多于目标)时,BCE 会被大量"容易分类"的样本主导——它们单个损失虽小,但数量巨大,梯度总和仍会压制"难分类"样本的信号。Focal Loss(Lin et al., 2017)给每个样本按"分类难度"重新加权:
记 pt=p(若 y=1)或 pt=1−p(若 y=0),即模型分配给真实类别的概率(pt 越接近 1 表示分类越"容易/正确")。标准 BCE 可统一写成 LBCE=−logpt。Focal Loss 在此基础上乘一个调制因子:
FL(pt)=−αt(1−pt)γlogpt,γ≥0, αt∈(0,1) 为类别权重.
退化验证: γ=0 时 (1−pt)0=1,FL=−αtlogpt,退化为(类别加权的)标准 BCE——说明 Focal Loss 是 BCE 的严格推广。
推导调制因子如何压低易分样本的梯度。 以 y=1(pt=p)为例,对 logit z 求导(沿用 §3.1 的 dp/dz=p(1−p))。记 q=1−p,先对 p 求导:
∂p∂FL=−α[γqγ−1(−1)logp+qγ⋅p1]=αγqγ−1logp−αpqγ.
再乘链式法则 ∂p/∂z=pq:
∂z∂FL=(αγqγ−1logp−αpqγ)⋅pq=αqγ[γplogp−q]=α(1−p)γ[γplogp−(1−p)].
代入 γ=0,α=1 核验:(1−p)0[0−(1−p)]=−(1−p)=p−1,与 §3.1 的标准 BCE 梯度 p−y=p−1 一致 ✓。
对于易分样本(p→1,即 q=1−p→0),梯度中 (1−p)γ 这一因子以 γ 次幂速度趋于 0,而标准 BCE 的梯度只是线性地 ∝(1−p) 趋于 0——Focal Loss 让易分样本的梯度贡献衰减得更快,从而把训练信号让给难分样本,这正是它缓解类别不均衡的数学机制。
理论解释: Focal Loss 不对应单一分布的 NLL,而是对 BCE 按样本难度加权的启发式变体——权重本身依赖当前预测 pt,是训练过程中动态变化的,不是一个固定的概率模型假设。

3.3 Hinge Loss(SVM / 最大间隔分类)
标签编码为 yi∈{−1,+1}(区别于 BCE 用的 {0,1}),模型直接输出未经 sigmoid 的原始分数 zi:
Lhinge=N1i=1∑Nmax(0,1−yizi)
推导动机:最大间隔。 分类正确当且仅当 yizi>0;Hinge loss 要求更强的带间隔的正确:yizi≥1。当满足时损失为 0;未满足时损失随"越界程度" 1−yizi 线性增长。
它是 0-1 损失的凸上界。 0-1 损失定义为 L01=1[yz<0](分类错误记 1 分,不可导、非凸,直接优化是 NP-hard)。逐段验证 max(0,1−yz)≥L01:
- yz<0(分类错误):1−yz>1,而 L01=1,Hinge 更大;
- 0≤yz<1(分类正确但间隔不足):max(0,1−yz)=1−yz∈(0,1],而 L01=0,Hinge 仍 ≥0;
- yz≥1(分类正确且间隔充足):两者都为 0。
三段合并即 max(0,1−yz)≥1[yz<0] 恒成立,且 Hinge 是凸函数(两段线性的上包络),因此常被用作 0-1 损失的可优化凸代理(这正是 SVM 的经典推导思路)。
次梯度:
∂zi∂Lhinge,i={−yi,0,yizi<1yizi>1
在 yizi=1 处不可导(只有次梯度),这是 Hinge Loss 与处处光滑的 BCE 的关键区别。
与 BCE 的关系: 若把 BCE 也写成 {−1,+1} 编码,logistic loss 为 log(1+e−yz)——同样是 0-1 损失的凸上界、同样在 yz<0 区域近似线性增长,形状与 Hinge 非常接近。但 Hinge 不对应任何概率模型的 NLL,它纯粹是几何间隔最大化的目标,因此 SVM 的输出 z 不能像 BCE 的 σ(z) 那样直接解释为校准过的概率;而 logistic loss 因为源自伯努利 NLL(§3.1),σ(z) 天然是一个(近似)校准的概率估计。
多分类的 Hinge 推广(Crammer–Singer):L=max(0, 1+maxk=yzk−zy),要求真类分数比"最强的错误类"高出至少 1 个间隔,思路与二分类完全一致。

4. 多分类模型
设共 K 个互斥类别,yi∈{1,2,…,K}。模型输出 K 个 logit zi1,…,ziK,经 Softmax 归一化为一个概率分布:
pik=∑j=1Kezijezik,k=1∑Kpik=1,pik>0.
指数保证非负,分母保证求和为 1——所以 softmax 输出是合法的类别分布。
4.1 多分类交叉熵
用 one-hot 标签 yik(真类位置为 1,其余为 0):
LCE=−N1i=1∑Nk=1∑Kyiklogpik
因为 one-hot 只有真类那一项 yi,yi=1、其余为 0,内层求和塌缩成单项:
LCE=−N1i=1∑Nlogpi,yi
其中 pi,yi 是模型分配给真实类别的概率。例如真类是第 2 类,y=[0,1,0],预测 p=[0.1,0.7,0.2],则损失 =−log0.7。模型只需把真类概率推高即可。
概率解释(从 Categorical NLL 推出交叉熵)
多分类标签服从类别分布(Categorical / 多项分布单次试验),同样用 one-hot 指数把它写成一个式子:
p(y∣x,θ)=k=1∏Kpkyk.
取负对数即得交叉熵:
−logp(y∣x,θ)=−k=1∑Kyklogpk.
Categorical 负对数似然⟺多分类交叉熵
二分类(§3)其实是 K=2 的特例:sigmoid 是 softmax 在两类上的退化,BCE 是交叉熵在两类上的退化。
softmax + CE 的梯度
与 §3 完全平行,softmax 配交叉熵对 logit 求导也约得很干净:
∂zik∂Li=pik−yik.
真类方向 p−1<0(把该 logit 推高),非真类方向 p−0>0(把它们压低),梯度形式统一、无饱和问题。
工程实践
python
torch.nn.CrossEntropyLoss() # 输入原始 logits,内部自动做 log_softmax
输入必须是原始 logits,不要提前 softmax。 该实现用 log_softmax 合并计算,避免 ez 上溢与 log0 下溢。
4.2 KL 散度:交叉熵的一般形式
交叉熵 H(q,p)=−∑kqklogpk 里的目标分布 q 未必是 one-hot(下面两节的 Label Smoothing、知识蒸馏就是如此),这时需要 KL 散度 这个更一般的工具。两个分布 p,q 之间的 KL 散度定义为:
DKL(q∥p)=k∑qklogpkqk=−H(q)k∑qklogqk−−H(q,p)k∑qklogpk=H(q,p)−H(q),
即
H(q,p)=H(q)+DKL(q∥p)
推导 KL 散度非负(Gibbs 不等式),并说明这为什么保证交叉熵训练有意义。 利用 log 是凹函数,Jensen 不等式给出 E[logX]≤logE[X]。取随机变量 X=qk/pk(在分布 p 下取值,即以 pk 为权重):
k∑pklogpkqk≤logk∑pk⋅pkqk=logk∑qk=log1=0.
整理即得
DKL(p∥q)=k∑pklogqkpk=−k∑pklogpkqk≥0,
等号成立当且仅当 qk/pk 对所有 k 恒为常数(由 Jensen 等号条件,log 严格凹),结合 ∑pk=∑qk=1 该常数必为 1,即 p=q。
把这个不等式反过来用在 H(q,p)=H(q)+DKL(q∥p) 上:固定目标分布 q、把 p 视为模型可调分布,则 DKL(q∥p)≥0 恒成立,且等号仅在 p=q 时取到。于是
argpminH(q,p)=q
也就是说,不管目标分布 q 是不是 one-hot,最小化交叉熵都会把模型分布 p 推向目标分布 q 本身——这是交叉熵训练能够收敛到"正确"目标的根本原因,also 解释了 §4.1 中"one-hot 标签 + 交叉熵"为什么会让模型把真类概率推向 1(因为此时 q 本身就是 one-hot delta 分布)。
4.3 标签平滑交叉熵 Label Smoothing CE
标准 one-hot 目标 q=δy(真类概率 1,其余 0)会驱使模型把真类 logit 推向 +∞(因为由 §4.2,argminpH(q,p)=q,要精确达到 py=1 需要 zy−zk→∞),导致过拟合、过度自信、校准变差。Label Smoothing(Szegedy et al., 2016)把目标从纯 one-hot 换成与均匀分布 uk=1/K 的混合:
qkLS=(1−ϵ)δk,y+Kϵ,ϵ∈(0,1) 为平滑系数.
(验证归一性:∑kqkLS=(1−ϵ)⋅1+ϵ=1 ✓)
推导损失的显式形式。 直接代入交叉熵定义 H(qLS,p)=−∑kqkLSlogpk:
LLS=−(1−ϵ)logpy−Kϵk=1∑Klogpk
第一项是标准交叉熵(乘权重 1−ϵ),第二项是"让所有类别概率都不要太小"的正则项(乘权重 ϵ)。
推导最优解为何不再是 py→1。 由 §4.2 的结论 argminpH(q,p)=q,直接代入 q=qLS:
py∗=1−ϵ+Kϵ<1,pk∗=Kϵ (k=y).
即最优真类概率被严格限制在 1 以下,模型不再需要(也不会被鼓励)把 logit 推向无穷——这就是标签平滑能提升校准、缓解过拟合的严格数学原因,而不只是一个经验技巧。

4.4 知识蒸馏损失 Knowledge Distillation
知识蒸馏(Hinton et al., 2015)让"学生"模型 qS 学习"教师"模型 pTeacher(已训练好、更大)的输出分布,而不是(或不仅是)硬标签。用带温度的 softmax软化分布:
pk(T)=∑jexp(zj/T)exp(zk/T),T>1 时分布更平滑(各类概率更接近).
蒸馏损失是学生分布对教师软标签的 KL 散度(教师侧不参与梯度,视为常数目标):
LKD=T2⋅DKL(pteacher,(T)pstudent,(T))
推导 T 在梯度中的角色(精确部分)。 由 §4.2,DKL(p∥q)=H(p,q)−H(p),教师熵 H(p(T)) 不依赖学生参数,梯度只来自交叉熵项,与 §4.1 的 softmax+CE 梯度结构相同,只是 logit 先除以了 T:链式法则多出一个 1/T 因子,
∂zistudent∂DKL(p(T)∥q(T))=T1(qi(T)−pi(T)).
T2 缩放的由来(渐近论证,非精确恒等式)。 Hinton et al. 指出:当温度 T 远大于 logit 的数值范围时,exp(zk/T)≈1+zk/T,此时 softmax 关于 logit 近似线性,可证明该极限下 ∂DKL/∂zi∝KT21(zistudent−ziteacher)——梯度幅值以 1/T2 衰减。为了让蒸馏损失的梯度幅值不随 T 的选择而系统性变小(便于与硬标签损失按固定权重相加),实践中把 LKD 整体乘以 T2 补偿。这是一个高温极限下的近似论证,并非对所有 T 精确成立,但被实践广泛验证有效。
常见的总损失是硬标签 CE(§4.1,T=1)与软标签 KD 损失的加权和:
L=(1−λ)LCE(y,p(1))+λLKD.

5. 度量学习 / 对比学习损失
前几节的损失都是"预测一个标签/数值"。度量学习(metric learning)的目标不同:学一个嵌入函数 fθ(x),使得同类样本在嵌入空间距离近、异类样本距离远,不直接输出类别或数值。这是 CLIP、SimCLR、人脸识别等系统的训练核心。
5.1 对比损失 Contrastive Loss(Siamese)
给定样本对 (xi,xj),标签 yij=1 表示同类(应靠近),yij=0 表示异类(应至少远离间隔 m)。记嵌入距离 dij=∥fθ(xi)−fθ(xj)∥2:
Lij=yijdij2+(1−yij)[max(0,m−dij)]2
推导动机(非概率模型,几何约束直接转损失):
- 同类对(yij=1):只保留 dij2,直接惩罚距离,逼 dij→0;
- 异类对(yij=0):只保留 [max(0,m−dij)]2,只有当 dij<m(间隔不够)时才有损失——一旦已经拉开到 m 以外就不再继续拉远,避免嵌入空间无谓地发散。
外层的 max(0,⋅) 是 §3.3 Hinge 结构在"距离"而非"分类间隔"上的直接复用;平方是为了让梯度在接近边界时平滑衰减(类比 §1.1 MSE 对 §1.2 MAE 的关系)。

5.2 三元组损失 Triplet Loss
Contrastive Loss 需要人工设定绝对间隔 m,对不同样本对的难度不敏感。Triplet Loss(FaceNet, Schroff et al. 2015)改为相对约束:给定锚点 a、正样本 p(同类)、负样本 n(异类),要求"负样本比正样本远至少一个间隔 α":
L=max(0, ∥f(a)−f(p)∥22−∥f(a)−f(n)∥22+α)
推导: 目标不等式是 d(a,p)+α≤d(a,n),即"正样本距离 + 间隔 ≤ 负样本距离"。把该不等式的违反量 d(a,p)−d(a,n)+α 套进 Hinge 结构 max(0,⋅):满足约束时损失为 0,不满足时线性惩罚——与 §3.3 的 Hinge Loss、§5.1 的负样本项是同一个模板("违反间隔量→hinge”),只是这里比较的是两个距离之差,而非分类间隔 yz。
训练中三元组的采样策略(如"难负样本挖掘 hard negative mining")对收敛速度影响很大,这是工程实践问题,不改变损失本身的数学形式。

5.3 InfoNCE(对比预测编码 / SimCLR / CLIP)
Triplet Loss 每次只对比 1 个正样本与 1 个负样本。InfoNCE(Oord et al., 2018;SimCLR、CLIP 等广泛使用)把"1 个正样本 + N−1 个负样本"当成一次 N 选 1 的分类问题。设锚点嵌入 zi,一个正样本嵌入 zi+,N−1 个负样本 {zj−},相似度 s(u,v)=u⊤v/τ(τ 为温度):
LInfoNCE=−logexp(s(zi,zi+))+∑j=1N−1exp(s(zi,zj−))exp(s(zi,zi+))
推导:这就是 §4.1 的多分类交叉熵,换了一层皮。 把正样本和 N−1 个负样本合并看成 N 个"类别候选",其相似度 s(zi,⋅)/1 当作 logit,套 softmax:
p(候选 c 是正样本)=∑c′exp(s(zi,c′))exp(s(zi,c)).
InfoNCE 就是 −logp(正样本)——与 §4.1 "−logpi,yi"完全同构,只是这里的"真实类别"是"谁是正样本",而 logit 由嵌入内积动态计算,不是网络的固定输出头。这个视角说明:对比学习本质上是把"表征相似度"当 logit 做的一次多分类交叉熵训练。
理论解释(结果引用,证明从略): Oord et al. (2018) 证明最小化 InfoNCE 等价于最大化锚点与正样本互信息 I(zi;zi+) 的一个下界:
I(zi;zi+) ≥ logN−LInfoNCE.
负样本数 N 越大,这个下界越紧,这也是对比学习中"大 batch / 大量负样本"能提升表征质量的理论依据之一(完整证明涉及对互信息定义的额外展开,此处不重复推导,仅引用结论)。

6. GAN 的损失函数
GAN 不再直接最大化似然,而是让两个网络对抗博弈间接学到数据分布:
- 生成器 G(z):把随机噪声 z 映射成假样本 G(z);
- 判别器 D(x)∈(0,1):输出"x 是真实数据的概率"。
6.1 原始 GAN:极小极大博弈
GminDmaxV(D,G)=Ex∼pdata[logD(x)]+Ez∼p(z)[log(1−D(G(z)))]
- 判别器想最大化 V:让真样本 D(xreal)→1(第一项大),让假样本 D(G(z))→0(第二项 log(1−0)=0 大)。
- 生成器想最小化 V:让 D(G(z))→1,使第二项 log(1−1)→−∞。
判别器的最优解与 GAN 到底在优化什么
固定 G,对每个 x 逐点最大化被积函数。记真、假分布密度为 pdata(x)、pg(x),判别器目标可写成
∫[pdata(x)logD(x)+pg(x)log(1−D(x))]dx.
对 D(x) 求导置零:Dpdata−1−Dpg=0,解得最优判别器
D∗(x)=pdata(x)+pg(x)pdata(x).
把 D∗ 回代 V,经整理可得(这是 GAN 论文的经典结果)
V(D∗,G)=2JSD(pdata∥pg)−2log2,
其中 JSD 是 Jensen–Shannon 散度。所以生成器最小化 V,本质是在最小化真实分布与生成分布之间的 JS 散度——当 pg=pdata 时 JSD=0 达到全局最优。这就是 GAN"间接学习数据分布"的严格含义。
6.2 判别器损失(就是一个 BCE)
把"最大化 V"翻成"最小化 −V":
LD=−Ex∼pdata[logD(x)]−Ez∼p(z)[log(1−D(G(z)))]
对照 §3.1 的 BCE:把真实样本贴标签 1、生成样本贴标签 0,LD 就是这个二分类问题的二元交叉熵。判别器训练 = 一个普通的真假二分类器。
6.3 生成器的原始损失(minimax 形式)
从 V 中只有第二项含 G,生成器最小化:
LGminimax=Ez∼p(z)[log(1−D(G(z)))]
理想上让 D(G(z))→1。问题: 训练早期 G 很弱、D 能轻松识破,此时 D(G(z))≈0,函数 log(1−D) 在 D→0 处几乎平坦,梯度 ∂D∂log(1−D)=1−D−1≈−1 传回生成器后被链式压得很小——即梯度消失,生成器学不动。
6.4 非饱和生成器损失(实践常用)
把目标改成"最大化 logD(G(z))",等价于最小化其负值:
LG=−Ez∼p(z)[logD(G(z))]
它相当于把生成样本的目标标签设成 1,直接复用 BCE 的"逼近 1"那一支。为什么不饱和:当 D(G(z))≈0(早期)时,−logD 很大且其导数 −D1 的幅值也很大,给生成器提供强梯度,训练早期就能被有效推动。两者优化方向一致(都想骗过 D),但梯度性质好得多,故实际几乎都用这个版本。
因此实际 GAN 训练中常见成对形式:
LDLG=−logD(xreal)−log(1−D(xfake)),=−logD(xfake).
注意: GAN 不是最小化同一个损失,而是判别器和生成器交替优化两个相反目标。这也是 GAN 相比前几节"单目标 MLE"的根本区别。

6.5 Wasserstein GAN(WGAN)
§6.1 的推导表明原始 GAN 在最优判别器下最小化的是 JS 散度。这带来一个实际问题:当真实分布 pdata 与生成分布 pg 的支撑集不重叠(高维空间中低维流形几乎总是如此)时,可以证明 JSD 几乎处处恒等于 log2(一个与 G 无关的常数),此时 ∇θJSD≈0——判别器训练得越好,生成器梯度反而越接近 0,这是原始 GAN 训练不稳定、容易梯度消失的根本原因(Arjovsky et al., 2017)。
WGAN 把优化目标换成 Wasserstein-1(Earth-Mover)距离:
W(pdata,pg)=γ∈Π(pdata,pg)infE(x,y)∼γ[∥x−y∥],
即把 pdata "搬运"成 pg 所需的最小总搬运代价,Π 是所有边缘分布分别为 pdata,pg 的联合分布(耦合)集合。这个定义即使两个分布支撑不重叠也依然连续、处处有意义(不会像 JSD 那样退化成常数)——这是它训练更稳定的根本原因,但 W 本身作为下确界不可直接求梯度优化。
Kantorovich–Rubinstein 对偶(标准结果,证明从略,属最优传输理论)把这个下确界问题转成一个上确界问题:
W(pdata,pg)=∥f∥L≤1sup Ex∼pdata[f(x)]−Ex∼pg[f(x)]
其中 sup 取遍所有 1-Lipschitz 函数 f(即 ∣f(x1)−f(x2)∣≤∥x1−x2∥)。用一个网络 Dθ(称为 "critic",不再输出 (0,1) 概率,而是无界实数)来近似这个 f,得到 WGAN 的判别器/生成器损失:
LDLG=−(Ex∼pdata[D(x)]−Ez[D(G(z))])(critic 要最大化两者之差)=−Ez[D(G(z))]
约束条件"D 必须 1-Lipschitz"需要额外强制,原始 WGAN 用权重裁剪(把 critic 权重截断到 [−c,c]),后续 WGAN-GP(Gulrajani et al., 2017)改用梯度惩罚,直接把"1-Lipschitz ⟺ 梯度范数处处 ≤1"这一充分条件写成软约束加入损失:
LGP=λEx^[(∥∇x^D(x^)∥2−1)2],x^=ϵxreal+(1−ϵ)xfake, ϵ∼U[0,1],
即在真假样本连线上随机取点,惩罚梯度范数偏离 1,比硬性裁剪权重更平滑、训练更稳定。
理论解释: WGAN 与原始 GAN 的根本区别在于优化的"距离"不同——JS 散度在分布不重叠时梯度消失,Wasserstein 距离即使在此情形下依然提供有意义的梯度,这是它成为 GAN 训练稳定性改进的主流方案之一的理论原因。

7. VAE 的损失函数(变分自编码器)
VAE(Kingma & Welling, 2013)假设数据由隐变量 z 生成:先验 p(z)=N(0,I),解码器(生成模型)pθ(x∣z),并引入编码器 qϕ(z∣x) 来近似难以直接计算的真实后验 pθ(z∣x)。直接最大化 logpθ(x)=log∫pθ(x,z)dz 因为积分不可解而无法直接优化,需要推导一个可优化的下界。
7.1 推导证据下界 ELBO(精确恒等式分解,非仅 Jensen 不等式)
利用条件概率恒等式 pθ(x,z)=pθ(x)pθ(z∣x),对任意 z 都精确成立 logpθ(x)=logpθ(x,z)−logpθ(z∣x)。这个等式与 z 无关(左边不含 z),所以对 z∼qϕ(z∣x) 取期望不改变其值:
logpθ(x)=Eqϕ(z∣x)[logpθ(x,z)−logpθ(z∣x)].
在括号内同时加减 logqϕ(z∣x):
logpθ(x)=:= ELBO(x;θ,ϕ)Eqϕ(z∣x)[logqϕ(z∣x)pθ(x,z)]+=DKL(qϕ(z∣x)∥pθ(z∣x))Eqϕ(z∣x)[logpθ(z∣x)qϕ(z∣x)].
即精确的分解式:
logpθ(x)=ELBO(x;θ,ϕ)+DKL(qϕ(z∣x)∥pθ(z∣x))
由 §4.2 证明过的 KL 非负性,DKL(⋅∥⋅)≥0,于是
logpθ(x) ≥ ELBO(x;θ,ϕ),
等号成立当且仅当 qϕ(z∣x)=pθ(z∣x)(编码器精确恢复真实后验)。这就是"证据下界"名字的由来:ELBO 是似然 logpθ(x) 的一个下界,且两者之差恰好是编码器对真实后验的近似误差,编码器越准,下界越紧。
7.2 拆分 ELBO:重建项 + 先验匹配项
利用生成模型的分解 pθ(x,z)=pθ(x∣z)p(z):
ELBO=Eqϕ(z∣x)[logqϕ(z∣x)pθ(x∣z)p(z)]=Eqϕ(z∣x)[logpθ(x∣z)]+Eqϕ(z∣x)[logqϕ(z∣x)p(z)].
第二项按定义就是 −DKL(qϕ(z∣x)∥p(z)),于是
ELBO=重建项Eqϕ(z∣x)[logpθ(x∣z)]−先验匹配项DKL(qϕ(z∣x)∥p(z))
训练时最小化负 ELBO:
LVAE=−Eqϕ(z∣x)[logpθ(x∣z)]+DKL(qϕ(z∣x)∥p(z))
两项各自有清晰含义,且都与前面章节呼应:
- 重建项:−logpθ(x∣z) 是解码器的 NLL。若假设 pθ(x∣z) 是高斯(连续数据,如图像像素),这一项就是 §1.1 的 MSE;若假设是伯努利(二值数据),这一项就是 §3.1 的 BCE——重建项不是新损失,而是前面 NLL 家族在"以 z 为条件"情形下的直接套用。
- 先验匹配项:把编码器输出的后验 qϕ(z∣x) 拉向先验 p(z)=N(0,I),是正则项,防止编码器把每个 x 编码成任意分散、不成结构的 z(保证隐空间连续、可采样生成)。
7.3 先验匹配项的闭式解(对角高斯情形)
设 qϕ(z∣x)=N(z;μϕ(x),diag(σϕ2(x)))(编码器输出均值和对角方差),逐维独立,先推导单维 DKL(N(μ,σ2)∥N(0,1)):
DKL=∫N(z;μ,σ2)logN(z;0,1)N(z;μ,σ2)dz,logN(z;0,1)N(z;μ,σ2)=−logσ−2σ2(z−μ)2+2z2.
对 z∼N(μ,σ2) 取期望,用 E[(z−μ)2]=σ2 和 E[z2]=μ2+σ2:
DKL=−logσ−2σ2σ2+2μ2+σ2=−logσ+2μ2+σ2−1=21(μ2+σ2−logσ2−1).
对角高斯情形逐维求和即得标准闭式解:
DKL(qϕ(z∣x)∥p(z))=21j=1∑d(μj2+σj2−logσj2−1)
这个闭式解正是 VAE 实现中直接写出的正则项,不需要采样估计。
7.4 重参数化技巧(工程实践,非损失本身)
ELBO 中重建项是对 z∼qϕ(z∣x) 的期望,训练需要对 ϕ 求梯度,但"从分布中采样"这一步本身不可导。重参数化把随机性搬到与 ϕ 无关的噪声源上:
z=μϕ(x)+σϕ(x)⊙ϵ,ϵ∼N(0,I),
此时 z 是 ϕ 的确定性函数(对给定的 ϵ),梯度可以正常反传,只是数值上的采样估计噪声不可避免(可用小批量、少量采样缓解)。这一步不改变损失的数学形式,只是让 §7.2 的期望项可以用随机梯度下降优化。
VAE 与扩散模型的关系:扩散模型可以看作一个隐变量链更长、每一步都是简单高斯转移的层级 VAE——§7.1 的 ELBO 推导思路会在 §8.4 原样复用。
8. 扩散模型的损失函数
扩散模型训练时,向真实数据 x0 逐步加高斯噪声(前向过程),再训一个网络学习"去噪"(反向过程)。前向过程有闭式解,可一步直接得到任意时刻 xt:
xt=αˉtx0+1−αˉtϵ,ϵ∼N(0,I).
- x0:原始数据(如图片)
- xt:第 t 步加噪后的数据
- ϵ:这一步实际加入的高斯噪声
- αˉt∈(0,1):控制保留多少原始信号(t 越大 αˉt 越小,越接近纯噪声),且 αˉt=∏s=1tαs,αs=1−βs,βs 是第 s 步的噪声方差调度
模型接收 (xt,t),预测加入的噪声 ϵθ(xt,t)。
8.1 最常用:噪声预测 MSE(ϵ-prediction)
Ldiffusion=Ex0,ϵ,t[ϵ−ϵθ(xt,t)22]
训练一步的直观流程:
- 取一张真实数据 x0;
- 随机采一个时间步 t;
- 随机采高斯噪声 ϵ;
- 用闭式公式合成加噪数据 xt;
- 让模型据 (xt,t) 预测噪声 ϵθ;
- 用 MSE 比较预测噪声与真实噪声。
所以扩散模型最常见的损失,本质上还是 §1.1 的 MSE,只不过回归目标是"噪声":
真实噪声−预测噪声→平方误差
§8.4 会从变分下界出发,严格推导出这个 MSE 究竟从哪里来、以及它相对"完整理论目标"丢弃了什么。
8.2 预测原始数据 x0(x0-prediction)
有些实现让网络直接回归原图 x^0=xθ(xt,t):
Lx0=E[∥x0−x^0∥22]
由前向公式,ϵ 与 x0 在 (xt,t) 已知时可互相线性换算(x0=αˉt1(xt−1−αˉtϵ)),因此这与噪声预测只是同一目标的不同参数化,仍是 MSE。
8.3 v-prediction
Stable Diffusion 等采用 v 参数化,定义
v=αˉtϵ−1−αˉtx0,
网络预测 vθ(xt,t),损失
Lv=E[∥v−vθ(xt,t)∥22]
v 是 ϵ 与 x0 的线性组合,在高低噪声区间数值更均衡、训练更稳,但目标参数化不同,本质仍是 MSE。
8.4 完整理论目标:变分下界(ELBO)与"简化损失"的完整推导
上面三种 MSE 看似朴素,其实是从严格的变分推断简化来的,推导思路与 §7.1 的 VAE ELBO 完全一致——扩散模型就是一条隐变量链 x1,…,xT 的层级 VAE,"编码器" q 是固定的加噪过程,"解码器" pθ 是待学习的去噪过程。
第一步:变分下界的形式
套用 §7.1 的推导(把单个隐变量 z 换成整条链 x1:T),扩散模型真正优化的是负 ELBO:
LVLB=−Eq[logq(x1:T∣x0)pθ(x0:T)] ≥ −logpθ(x0).
按时间步展开(DDPM 论文的标准结果),可写成三部分:
LVLB=重建项L0+t=2∑T逐步去噪匹配项DKL(q(xt−1∣xt,x0)pθ(xt−1∣xt))+先验匹配项LT
LT=DKL(q(xT∣x0)∥p(xT)) 中 p(xT)=N(0,I) 无参数,且前向过程设计得使 q(xT∣x0)≈N(0,I),故 LT≈ 常数,可忽略。真正含参数梯度的是中间那串 KL 项,下面把它完整展开成 MSE。
第二步:前向后验 q(xt−1∣xt,x0) 的闭式高斯("配方法"求均值方差)
由贝叶斯定理 q(xt−1∣xt,x0)∝q(xt∣xt−1)q(xt−1∣x0),两个因子都是高斯:
q(xt∣xt−1)=N(xt;αtxt−1,βtI),q(xt−1∣x0)=N(xt−1;αˉt−1x0,(1−αˉt−1)I).
把两个高斯密度的指数部分相加、按 xt−1 配方(标准的"高斯乘高斯仍是高斯"配方法),二次项系数给出方差、一次项系数给出均值。配方后(过程与多元高斯共轭推导一致,此处直接给出结果):
q(xt−1∣xt,x0)=N(xt−1;μ~t(xt,x0),β~tI),
β~t=1−αˉt1−αˉt−1βt,μ~t(xt,x0)=1−αˉtαt(1−αˉt−1)xt+1−αˉtαˉt−1βtx0.
(可自行代入 αˉt=αtαˉt−1 验证 β~t 的分母化简:αt(1−αˉt−1)+βt=αt−αˉt+(1−αt)=1−αˉt,与上式一致。)
模型的反向过程同样设为高斯 pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σt),常见做法是把方差直接固定为 Σt=β~tI(不学习),只学均值 μθ。
第三步:两个协方差相同的高斯之间的 KL 有干净闭式解
对两个协方差同为 σ2I(D 维)的高斯,多元高斯 KL 的一般公式
DKL(N(μ1,Σ1)∥N(μ2,Σ2))=21[tr(Σ2−1Σ1)+(μ2−μ1)⊤Σ2−1(μ2−μ1)−D+logdetΣ1detΣ2]
(标准结果,直接引用)在 Σ1=Σ2=σ2I 时大幅化简:迹项 =tr(I)=D,行列式比值 =1⇒log(⋅)=0,两者与 −D 抵消,只剩二次型项:
DKL(N(μ1,σ2I)∥N(μ2,σ2I))=2σ21∥μ1−μ2∥2
代入 σ2=β~t、μ1=μ~t、μ2=μθ:
DKL(q(xt−1∣xt,x0)∥pθ(xt−1∣xt))=2β~t1μ~t(xt,x0)−μθ(xt,t)2.
即 KL 项精确等于两个均值之差的(加权)平方——原文"退化成预测均值之差的平方"这句话到这里已经严格证明,不再是断言。
第四步:把均值差重参数化成噪声差,显式解出权重 w(t)
用前向公式反解 x0=αˉt1(xt−1−αˉtϵ),代入 μ~t 的表达式并利用 αˉt−1/αˉt=1/αt,xt 的系数可以合并化简(分子 αt(1−αˉt−1)+βt=1−αˉt,与第二步同一恒等式):
μ~t=αt1(xt−1−αˉtβtϵ).
于是把模型均值也用同样的函数形式参数化(网络只需预测 ϵθ):
μθ(xt,t):=αt1(xt−1−αˉtβtϵθ(xt,t)),
两者相减,xt 项抵消,只剩噪声差:
μ~t−μθ=−αt1−αˉtβt(ϵ−ϵθ(xt,t)).
代回第三步的 KL 闭式解:
DKL(q∥pθ)==:w(t)2β~tαt(1−αˉt)βt2ϵ−ϵθ(xt,t)2
这就是 §8.1 那个 MSE 的完整理论出处:每一步的 KL 项精确等于"真实噪声减预测噪声"的平方乘一个由噪声调度 {αt,βt,αˉt} 决定的权重 w(t)——不是类比,是代数恒等。
第五步:DDPM 的"简化"
严格的 VLB 要求对每个 t 按 w(t) 加权求和。DDPM(Ho et al., 2020)实验发现:直接把 w(t) 设为 1(即丢弃理论权重、每个时间步等权重平均),训练更稳定、样本质量反而更好:
Lsimple=Ex0,ϵ,t[∥ϵ−ϵθ(xt,t)∥2].
直觉解释:理论权重 w(t) 在 t 很小(几乎无噪声)时数值很大,会让训练过度关注"去除极少量噪声"这种相对次要的信号;设 w(t)=1 相当于把各时间步的重要性拉平,让模型在噪声较大、结构信息更关键的中间时间步上也能获得足够梯度信号。
扩散模型的简化 MSE 损失=VLB 中间项在 w(t)→1 时的特例
它既是 §1.1 意义下的普通 MSE,又与变分下界严格同源:§8.1 直接写出的那个 MSE,本质上就是这里 w(t)→1 时的特例。