好,我们正式进入第二讲:Score Matching。我会按你熟悉的节奏走——动机、数学、关键洞察、和后面的衔接。
这条线的核心问题始终是同一个:如何建模数据分布 $p(x)$。但和第一讲的变分推断完全不同的思路——不学 $p(x)$,而学 $\nabla_x \log p(x)$。
一、动机:为什么不直接建模 $p(x)$?
先看直接建模 $p(x)$ 会遇到什么问题。
任何概率密度都可以写成:
其中 $\tilde p_\theta(x) \geq 0$ 是非归一化的(unnormalized),$Z(\theta) = \int \tilde p_\theta(x)\, dx$ 是归一化常数(配分函数),确保积分为 1。
比如最经典的能量模型(EBM):
最大似然要最大化 $\log p_\theta(x) = -E_\theta(x) - \log Z(\theta)$,梯度:
第二项是地狱。$Z(\theta)$ 是高维积分,通常没有闭式,而且每个 $\theta$ 都不一样。
第二项展开:
注意期望是对 $p_\theta$ 自己取的——要从当前模型采样!这通常需要 MCMC,慢且方差大。这就是经典 EBM 训练困难的根源。
核心问题:$Z(\theta)$ 让最大似然几乎不可行。能不能绕开 $Z$?
二、Hyvärinen 的关键洞察(2005)
Score 定义:
注意是对 $x$ 求梯度,不是对 $\theta$。
关键观察:
$Z(\theta)$ 不依赖 $x$,所以它的 $x$ 梯度恒为 0!
也就是说,score 完全不需要知道 $Z$。我们只要建模 $\nabla_x \log p(x)$,就绕开了归一化的灾难。
这是 Hyvärinen 2005 的根本动机:学 score 而不是学密度。
三、Score 的几何意义
直观一下,$\nabla_x \log p(x)$ 是什么?
它是一个向量场,每点的方向指向 $\log p$ 增长最快的方向——也就是指向高密度区域。
1 | 低密度 |
所以 score 是一个”指向数据流形”的向导场。如果你站在低密度区域,顺着 score 走,会走向高密度区域(数据集中的地方)。
这给了我们采样的思路:有了 score,就能用类似”梯度上升”的过程从噪声走向数据。这就是 Langevin 动力学的雏形,我们后面会展开。
四、Score Matching 损失
我们想学一个网络 $s_\theta(x)$ 逼近真实的 $\nabla_x \log p_{\text{data}}(x)$。最自然的损失:
(下标 ESM = Explicit Score Matching)
问题:这没法直接算——我们不知道 $\nabla_x \log p_{\text{data}}(x)$,这正是要学的东西!陷入鸡生蛋蛋生鸡。
Hyvärinen 的关键贡献是证明了一个奇迹般的恒等式:
意义:右边完全不需要 $\nabla_x \log p_{\text{data}}$!只用 $s_\theta$ 自身和它的雅可比迹。我们可以直接最小化它。
五、Hyvärinen 恒等式的推导
这个推导值得细看,只用一次分部积分(integration by parts)。
展开 $J_{\text{ESM}}$:
(最后一项 $\frac{1}{2}\mathbb{E}|\nabla_x \log p_{\text{data}}|^2$ 不依赖 $\theta$,是常数)
第一项已经只含 $s_\theta$,好。麻烦在第二项,展开为积分:
用对数导数公式 $\nabla_x \log p = \nabla_x p / p$:
$p_{\text{data}}$ 被消掉了! 这一步是关键——它让我们不再需要知道 $p_{\text{data}}$ 的密度形式,只需要它的存在。
现在用分部积分(假设 $p_{\text{data}}(x) \to 0$ 在边界上,这在标准条件下成立,完整证明见附录1):
其中 $\nabla_x \cdot s_\theta = \sum_i \partial s_{\theta,i} / \partial x_i = \text{tr}(\nabla_x s_\theta)$ 是散度,等于雅可比矩阵的迹。
代回:
这就是 Hyvärinen 恒等式。完全可以用 $p_{\text{data}}$ 的样本(数据集)蒙特卡洛估计——不需要知道密度本身。
六、致命问题:trace 项算不动
理论很美,工程很疼。
$\text{tr}(\nabla_x s_\theta(x))$ 是 $s_\theta$ 雅可比矩阵的迹。如果 $x \in \mathbb{R}^d$:
要算这个,你需要 $d$ 次反向传播(每次拿一个偏导)。对于 $d = 32 \times 32 \times 3 \approx 3000$(小图像)就已经吃不消,对于 $d = 256 \times 256 \times 3 \approx 200{,}000$ 完全没法算。
结果:Hyvärinen 2005 在低维问题上能 work,但在图像生成这种高维场景下,原版 score matching 完全不实用。沉寂了 14 年。
七、关键转机:Denoising Score Matching(Vincent 2011)
这是后来一切的基础。Vincent 想:能不能避开 trace 项?
他的洞察:给数据加点噪声,再学加噪后分布的 score。
设噪声 $\sigma > 0$,定义加噪分布:
$q_\sigma(\tilde x)$ 是数据分布加高斯噪声后的边际分布。我们要学 $q_\sigma$ 的 score,即 $\nabla_{\tilde x} \log q_\sigma(\tilde x)$。
定义 Denoising Score Matching (DSM) 损失:
注意里面是 $\log q_\sigma(\tilde x \mid x)$(条件概率,有闭式),不是 $\log q_\sigma(\tilde x)$(边际,无闭式)。
Vincent 证明了(详细证明在附录2):
也就是 DSM 和 ESM(对 $q_\sigma$)的最优解相同。学 $q_\sigma$ 的 score 这件事,可以通过 DSM 来做——而 DSM 没有 trace 项!
八、DSM 损失化简
把 $q_\sigma(\tilde x \mid x) = \mathcal{N}(\tilde x; x, \sigma^2 I)$ 代入:
代回 DSM 损失:
用重参数化 $\tilde x = x + \sigma \epsilon,\, \epsilon \sim \mathcal{N}(0, I)$:
所以:
这是一个干净的 MSE! 没有 trace,没有积分,可以直接训练。
九、第一个奇迹:DSM ≡ “学去噪”
让我们用另一种参数化。定义”去噪函数”:
代入 DSM 损失:
意义:DSM 等价于训练一个去噪器——给加噪图像 $\tilde x$,输出原始图像 $x$。
这就是 score 视角和 diffusion 视角第一次”对上”了:
- 第一讲(变分视角):DDPM 让网络预测 $\epsilon$ 或 $\mu$,本质上是去噪
- 这一讲(score 视角):DSM 学 score 也等价于去噪
- 它们本质上是同一件事!score 就是去噪方向(乘上一个标量)
更精确地:
(其中 $\epsilon_\theta$ 是预测的噪声)
这是连接两条线的第一个公式。后面 Score SDE 会把这个对应推到完整框架。
十、有了 score 之后怎么采样?
答案:Langevin 动力学(Langevin dynamics)。
物理背景:Langevin 方程描述布朗运动中的粒子。在我们这里,它给出了一个从 $p$ 采样的方法,只需要 $\nabla_x \log p(x)$:
其中 $\eta > 0$ 是步长。可以证明:当 $\eta \to 0$、$k \to \infty$ 时,$x_k$ 的分布收敛到 $p(x)$。
直观:
- 漂移项 $\frac{\eta}{2}\nabla_x \log p$:把粒子拉向高密度区域
- 噪声项 $\sqrt{\eta}\, z$:防止粒子卡在局部模式上,保证遍历全分布
如果我们学到了 $s_\theta \approx \nabla_x \log p$,直接代进去:
——就能从 $p$ 采样了。无需归一化常数,无需采样链复杂的 EBM,只要 score。
十一、致命问题二:低密度区域 score 不准
理论很美,实践又疼一次。
考虑实际数据:图像在 $\mathbb{R}^{d}$($d \approx 10^5$)中其实集中在一个低维流形上,绝大部分空间是低密度区域。
问题是:
- 训练数据稀疏:低密度区域几乎没有训练样本
- score 学不准:网络在低密度区域输出基本是随机的
- Langevin 卡住:从随机噪声 $\mathcal{N}(0, I)$ 出发,初始点几乎肯定在低密度区域,$s_\theta$ 给出的方向是错的,Langevin 完全不收敛
这正是 score-based 方法 2011 年之后又沉寂多年的原因——理论可行,但实际从噪声开始采样不 work。
十二、第二个奇迹:NCSN(Song & Ermon 2019)
直到 2019 年,Yang Song 想到:用多种尺度的噪声。
核心思路:
- 大噪声 $\sigma_1$:加大量噪声后,$q_{\sigma_1}$ 在整个空间都有显著密度,score 处处都能学准
- 小噪声 $\sigma_L$:噪声很小时,$q_{\sigma_L} \approx p_{\text{data}}$,采样得到的接近真实数据
- 中间过渡:从 $\sigma_1$ 退火到 $\sigma_L$
具体地,选 $L$ 个噪声尺度 $\sigma_1 > \sigma_2 > \cdots > \sigma_L$(几何递减,如 $\sigma_l = \sigma_1 \cdot (\sigma_L/\sigma_1)^{(l-1)/(L-1)}$)。
训练一个噪声条件 score 网络 $s_\theta(x, \sigma)$,加权 DSM 损失:
其中 $\lambda(\sigma_l) = \sigma_l^2$(平衡不同尺度的损失大小)。
代入展开,加权后形式漂亮:
(其中 $\tilde x_l = x + \sigma_l \epsilon$)
这是个统一的 MSE,可以训练。
十三、Annealed Langevin Dynamics
采样时,从大噪声到小噪声退火:
1 | 初始化: x ~ N(0, σ_1^2 I) # 大噪声分布 |
直观:大尺度先把 $x$ 拉到正确的”大方向”上,小尺度再做精修。这绕开了”从纯噪声出发 score 不准”的问题——因为初始点 $\mathcal{N}(0, \sigma_1^2 I)$ 正好是 $q_{\sigma_1}$ 的高密度区域。
NCSN 是 2019 年第一个用 score-based 方法在 CIFAR-10 上做出能看的图像的工作——比 GAN 还差一点,但已经证明了路线可行。
十四、和第一讲的对照
让我把两条线放一起,你会看到惊人的对称性:
| 变分视角(第一讲) | Score 视角(这一讲) | |||||
|---|---|---|---|---|---|---|
| 起点 | Sohl-Dickstein 2015 | Hyvärinen 2005 | ||||
| 核心问题 | 边际化算不出来 | 归一化常数 $Z$ 算不出来 | ||||
| 解决思路 | ELBO 下界 | 学 score 绕开 $Z$ | ||||
| 第一版工程问题 | 方差大 | trace 项算不动 | ||||
| 关键补丁 | DDPM(简化目标) | DSM(去噪等价) | ||||
| 工程问题二 | 仍要 1000 步采样 | 低密度区域 score 不准 | ||||
| 突破 | 使用多步小噪声(自带) | NCSN 多尺度噪声 | ||||
| 训练目标 | $\ | \epsilon - \epsilon_\theta(x_t, t) \ | ^2$ | $\sigma \ | s_\theta(\tilde x, \sigma) + \epsilon/\sigma \ | ^2$ |
| 采样 | 逆向链 | Annealed Langevin | ||||
| 提出年份 | 2020(DDPM) | 2019(NCSN) |
两条独立发展的线,2019-2020 几乎同时成熟,得出几乎相同形式的目标函数。这不是巧合——它们在数学上本质等价。下一讲 Score SDE 会把这件事完全说清。
十五、要点回顾
- Score 是 $\nabla_x \log p(x)$,绕开了 $Z$ 的问题
- 原版 Score Matching(Hyvärinen 2005):用分部积分把损失变成不需要真实 score 的形式,但 trace 项算不动
- DSM(Vincent 2011):用加噪后的 score,损失变成漂亮的 MSE,等价于”学去噪”
- 关键洞察:score ≈ 去噪方向——这是连接两条线的桥梁
- Langevin 采样:用 score 做”梯度上升 + 噪声”
- NCSN(Song & Ermon 2019):多尺度噪声 + annealed Langevin,解决低密度区域问题
- 形式上和 DDPM 几乎相同——下一讲统一两条线
附录1: $\int s_\theta(x)^\top \nabla_x p_{\text{data}}(x)\, dx = -\int p_{\text{data}}(x)\, \nabla_x \cdot s_\theta(x)\, dx$
这一步是 score matching 推导里的关键一步——分部积分。我们一行一行推清楚,顺便把这个工具讲透,因为它在后面 SDE 推导里还会频繁出现。
一、先看一维情形(最容易理解)
一维分部积分公式(高中知识):
或者写成定积分:
我们要推:
(暂且把 $s_\theta, p_{\text{data}}$ 都当作一维标量函数)
设 $u = s_\theta$,$v = p_{\text{data}}$。那么 $v’ = \frac{dp_{\text{data}}}{dx}$,$u’ = \frac{ds_\theta}{dx}$。代入分部积分公式:
关键步骤:边界项为 0。
这要求一个正则性假设:$\lim_{|x| \to \infty} s_\theta(x)\, p_{\text{data}}(x) = 0$。
什么时候成立?
- $p_{\text{data}}(x) \to 0$ 在 $|x| \to \infty$ 处 ✓(任何合理的概率密度都满足,因为 $\int p\, dx = 1$ 强迫它衰减)
- $s_\theta(x)$ 不能”爆炸得比 $p_{\text{data}}$ 衰减得还快”——通常 $p_{\text{data}}$ 是指数衰减(高斯尾巴),$s_\theta$ 是神经网络多项式增长,这个条件几乎总是成立
所以边界项消失,得到:
这就是一维版本的恒等式。✓
二、为什么这个变换能成立?直觉
为什么”导数能从一边换到另一边”?用一个最直观的图景:
(微分形式的写法)用乘法的微分法则:
整理:
两边积分:
边界项消失:
本质上就是乘法求导法则反向用了一次。
三、推广到多维:散度定理
多维情形,我们要推的是:
注意类型:
- $s_\theta(x) \in \mathbb{R}^d$:向量场
- $\nabla_x p_{\text{data}}(x) \in \mathbb{R}^d$:梯度向量
- $s_\theta(x)^\top \nabla_x p_{\text{data}}(x) \in \mathbb{R}$:两个向量的点积,是标量
- $\nabla_x \cdot s_\theta(x) = \sum_i \partial s_{\theta,i}/\partial x_i \in \mathbb{R}$:散度,是标量
所以两边都是标量积分,类型对得上。
用散度恒等式推
有一个标准的向量分析恒等式(乘积法则的多维版):
对任意标量函数 $f$ 和向量场 $\mathbf{v}$ 成立(就是把一维的 $(fg)’ = f’g + fg’$ 推广到多维,这里”导数”对应”梯度”,左边的”和的一阶导”对应”散度”)。
我们这里取 $f = p_{\text{data}}$,$\mathbf{v} = s_\theta$:
整理:
注意 $\nabla p_{\text{data}} \cdot s_\theta$ 就是 $s_\theta^\top \nabla p_{\text{data}}$。两边积分:
第一项消失:散度定理
第一项 $\int \nabla \cdot (p_{\text{data}} s_\theta)\, dx$ 是关键。散度定理(高斯-奥斯特罗格拉茨基定理):
意思是:一个向量场在体积内的散度积分,等于它在边界上的法向通量。
我们的积分域 $V = \mathbb{R}^d$ 是整个空间,边界 $\partial V$ 是”无穷远的球面”。要让这个边界积分为 0,需要:
(且衰减得足够快,具体是要快于 $1/|x|^{d-1}$)
这个条件在标准设定下成立——$p_{\text{data}}$ 是合理的概率密度(指数衰减),$s_\theta$ 是神经网络(最多多项式增长),乘积一定衰减到 0。
所以散度积分 = 边界通量 = 0。
得到结果
写成期望形式:
四、再说一句关于 trace 和散度的关系
我们之前写成 $\text{tr}(\nabla_x s_\theta)$,这里又写成 $\nabla_x \cdot s_\theta$,这两个其实是同一个东西:
而 $\nabla_x s_\theta$ 是 $s_\theta$ 的雅可比矩阵 $J \in \mathbb{R}^{d \times d}$,$J_{ij} = \partial s_{\theta,i}/\partial x_j$。雅可比矩阵的迹:
所以散度 = 雅可比的迹,只是不同记号。
五、把推导整合在一起
为了把整个 score matching 的关键化简看清楚,我把完整链条写一遍:
我们要算:
第一步:展开期望,用对数导数公式 $\nabla_x \log p = \nabla_x p / p$:
$p_{\text{data}}$ 神奇地约掉了——这是为什么这个推导能 work。
第二步:用乘积法则 + 散度定理(刚才推的):
第三步:写回期望:
完成。✓
六、这个技巧的”关键魔法”在哪?
值得停下来欣赏一下这个推导为什么这么神奇。
起点:$\mathbb{E}_{p_{\text{data}}}[s_\theta^\top \nabla_x \log p_{\text{data}}]$——里面有个 $\nabla_x \log p_{\text{data}}$,这正是我们不知道、想学的东西。
终点:$-\mathbb{E}_{p_{\text{data}}}[\nabla_x \cdot s_\theta]$——里面只有 $s_\theta$ 和它的导数,完全不需要知道 $p_{\text{data}}$ 的密度形式,只要能从 $p_{\text{data}}$ 采样就行(数据集就是采样!)。
两步操作做到了这个变换:
- 对数导数公式:把 $\log p$ 的梯度变成 $\nabla p / p$,然后 $p$ 约掉
- 分部积分(散度定理):把”$\nabla$ 在 $p$ 上”换成”$\nabla$ 在 $s_\theta$ 上”,代价是边界项(为 0)
第二步是核心:它把”未知函数 $p_{\text{data}}$ 的导数”换成了”已知函数 $s_\theta$ 的导数”,梯度从积不动的对象转移到了能算的对象。
七、这个技巧后面还会出现
为什么花这么多时间讲这个推导?因为分部积分(散度定理)在 diffusion / score matching 框架里是反复出现的核心工具。后面你会看到:
- Score Matching 损失推导(就是我们刚做的)
- Stein’s identity:$\mathbb{E}_p[\nabla \cdot f + f^\top \nabla \log p] = 0$,用同样手法推
- Fokker-Planck 方程:推 SDE 下分布的演化,反复用分部积分
- Reverse SDE 推导(Anderson 1982):把前向 SDE 翻转成反向,核心一步就是分部积分
- Probability Flow ODE:从 Fokker-Planck 推 ODE,又是分部积分
学透这一步,后面的 SDE 推导你会觉得”怎么又是这一招”——确实是同一招。
八、要点回顾
- 一维分部积分:$\int u v’ = [uv] - \int u’ v$,边界项消失则得到对称形式
- 多维推广:用乘积法则 $\nabla \cdot (fv) = \nabla f \cdot v + f \nabla \cdot v$ + 散度定理
- 散度定理把”体积内的散度积分”变成”边界上的通量”,在合理衰减条件下边界项为 0
- 这个技巧的本质:把未知函数的导数换成已知函数的导数
- 散度 = 雅可比矩阵的迹,两个名字一回事
- 这个工具在后续 SDE 推导里反复出现,值得彻底理解
附录2:$\arg\min_\theta J_{\text{DSM}}(\theta) = \arg\min_\theta J_{\text{ESM}}^{(\sigma)}(\theta)$
这是 Vincent 2011 论文的核心定理,推导很优雅。我们彻底证一遍——这个证明的技巧和你刚学的分部积分非常类似,都是”把不知道的东西通过代数变换约掉”。
一、先把两个目标写清楚
设噪声分布:
加噪后的边际分布:
ESM(对 $q_\sigma$):学 $q_\sigma$ 的 score:
DSM:学条件 score:
注意区别:
- ESM 里是 $\nabla \log q_\sigma(\tilde x)$ —— 边际的 score,没有闭式(里面有积分)
- DSM 里是 $\nabla \log q_\sigma(\tilde x \mid x)$ —— 条件的 score,有闭式(高斯)
我们要证:两者作为 $\theta$ 的函数,只差一个常数——所以最优 $\theta$ 相同。
二、整体策略
我们不直接证两者相等,而是证明:
其中 $C$ 不依赖于 $\theta$。这样:
策略:把两个目标都展开,看交叉项是否相等。
三、把两个目标展开
平方展开 $| s_\theta - t |^2 = | s_\theta |^2 - 2 s_\theta^\top t + | t |^2$,所以:
ESM 展开:
DSM 展开:
目标:证明 $(A) = (A’)$、$(B) = (B’)$,这样剩下 $C_1, C_2$ 都不依赖 $\theta$,差就是常数。
四、证 $(A) = (A’)$:边际化等价
这一步几乎是定义。
$(A’)$ 里的双重期望可以重组:
交换积分顺序:
所以 $(A) = (A’)$ ✓
直觉:被积函数 $| s_\theta(\tilde x) |^2$ 只依赖 $\tilde x$,和 $x$ 无关,所以对 $x$ 边际化把联合分布塌缩成边际分布,期望不变。
五、证 $(B) = (B’)$:核心一步
这是关键的一步。我们要证:
左边的”边际 score”和右边的”条件 score”在期望意义下相等。这是个非平凡的事实——表面上看两者完全不同。
推导左边 $(B)$
用对数导数公式 $\nabla_{\tilde x} \log q_\sigma(\tilde x) = \nabla_{\tilde x} q_\sigma(\tilde x) / q_\sigma(\tilde x)$:
(还是那个”$q_\sigma$ 神奇消掉”的把戏)
推 $\nabla_{\tilde x} q_\sigma(\tilde x)$
$q_\sigma(\tilde x) = \int q_\sigma(\tilde x \mid x)\, p_{\text{data}}(x)\, dx$,对 $\tilde x$ 求梯度($p_{\text{data}}$ 不依赖 $\tilde x$,梯度可以进入积分):
再用一次对数导数公式($\nabla_{\tilde x} q_\sigma(\tilde x \mid x) = q_\sigma(\tilde x \mid x)\, \nabla_{\tilde x} \log q_\sigma(\tilde x \mid x)$):
代回 $(B)$
把 $s_\theta(\tilde x)$ 移进内层积分(它不依赖 $x$):
这就是双重期望:
✓
六、合起来
我们证明了:
- $(A) = (A’)$
- $(B) = (B’)$
- $C_1, C_2$ 都不依赖 $\theta$
所以:
两式相减:
最小化谁结果都一样:
证毕。
七、关键技巧总结
整个证明就靠两个把戏,反复用:
技巧 1:对数导数公式
它的威力:把 $\log p$ 拆开后,$p$ 出现在分母,容易和外面的 $p$ 约掉。我们用了两次:
- 一次把 $\nabla \log q_\sigma(\tilde x)$ 变成 $\nabla q_\sigma(\tilde x) / q_\sigma(\tilde x)$,然后约掉 $q_\sigma(\tilde x)$
- 一次把 $\nabla q_\sigma(\tilde x \mid x)$ 写成 $q_\sigma(\tilde x \mid x)\, \nabla \log q_\sigma(\tilde x \mid x)$,造出条件 score
技巧 2:交换积分顺序
边际分布是积分的结果 $q_\sigma(\tilde x) = \int q_\sigma(\tilde x \mid x) p_{\text{data}}(x)\, dx$。当我们对 $\tilde x$ 求梯度后,这个积分依然在,只是被积函数变了。
梯度算子可以”穿过”对 $x$ 的积分(因为求导和积分变量不同),这让我们能把”边际 score 的期望”和”条件 score 的期望”联系起来。
八、为什么这个等价”看起来不可思议”?
直觉上,边际 score $\nabla \log q_\sigma(\tilde x)$ 和条件 score $\nabla \log q_\sigma(\tilde x \mid x)$ 完全不同:
- 边际 score:在所有可能的 $x$ 上平均后的”指向高密度方向”
- 条件 score:已知 $x$ 时,$\tilde x$ 偏离 $x$ 的方向(有闭式 $-(\tilde x - x)/\sigma^2$)
它们怎么会”等价”?
关键是等价的是期望,不是逐点相等。具体地:
(这其实是 Tweedie 公式的雏形——边际 score 是条件 score 在后验下的期望)
我们证明的不是逐点相等,而是在更外层的期望下相等。这就是为什么 $J_{\text{ESM}}$ 和 $J_{\text{DSM}}$ 只差一个不依赖 $\theta$ 的常数——交叉项 $(B), (B’)$ 被这个隐藏的恒等式连接起来。
九、为什么这件事如此重要?
回顾我们绕了一大圈做了什么:
| 我们想要的 | 实际可算的 | |
|---|---|---|
| ESM | $\nabla \log p_{\text{data}}$(根本不知道) | 没法直接算 |
| ESM($q_\sigma$) | $\nabla \log q_\sigma(\tilde x)$(边际,无闭式) | 没法直接算 |
| DSM | $\nabla \log q_\sigma(\tilde x \mid x)$(条件,有闭式!) | 可以直接算! |
DSM 把”想学边际 score”这件事,通过”加点噪声 + 用条件 score 当目标”的迂回,变成了一个完全可计算的 MSE 损失。
代入条件高斯的 score $\nabla \log q_\sigma(\tilde x \mid x) = -(\tilde x - x)/\sigma^2$,得到:
——干净的回归损失,可以直接训练。这就是 DSM 在工程上的伟大之处。
十、和上一讲分部积分对比
注意到这个证明没有用分部积分——它纯粹靠”对数导数 + 积分顺序交换”。这是因为:
- Hyvärinen ESM 的化简(上一讲)需要把 $\nabla p_{\text{data}}$ 转移到 $s_\theta$ 上,所以要分部积分
- Vincent DSM 的等价性证明则是把”边际 score”通过定义本身展开成”条件 score 的积分”,不需要”导数转移”
两个证明思路不同,但共同的精神是:利用对数导数公式让”未知函数”自动从分子分母约掉,最终得到一个只用已知量的式子。
这是 score 视角下反复出现的核心技术——记住它,后面在 Tweedie 公式、reverse SDE 推导里你都会再看到。
十一、要点回顾
- DSM 和 ESM(对 $q_\sigma$)只差一个不依赖 $\theta$ 的常数,所以最优解相同
- 证明靠两步:展开平方损失,然后证明 $(A) = (A’)$ 和 $(B) = (B’)$
- $(A) = (A’)$ 用积分顺序交换得到边际化
- $(B) = (B’)$ 用对数导数公式让 $q_\sigma$ 在分母分子约掉,然后造出 $p_{\text{data}}\, q_\sigma(\tilde x \mid x)$ 的形式
- 隐藏的核心事实:边际 score = 条件 score 在后验下的期望(Tweedie 公式)
- 这让我们绕开”边际 score 没有闭式”的问题,转而学有闭式的”条件 score”——目标完全等价但完全可计算