第3章:扩散模型的数学原理
3.3 分数匹配(Score Matching)理论
理论背景
分数匹配(Score Matching)是一种用于估计概率密度函数梯度的技术,由Hyvärinen于2005年首次提出。其核心思想是通过最小化模型分数(即对数概率密度的梯度)与真实数据分数之间的差异,从而避免显式计算归一化常数(配分函数)。
数学定义
给定数据分布 ( p_{data}(\mathbf{x}) ),其**分数函数(Score Function)**定义为对数密度的梯度: [ \mathbf{s}{data}(\mathbf{x}) = \nabla{\mathbf{x}} \log p_{data}(\mathbf{x}) ] 类似地,模型分布 ( p_{\theta}(\mathbf{x}) ) 的分数函数为: [ \mathbf{s}{\theta}(\mathbf{x}) = \nabla{\mathbf{x}} \log p_{\theta}(\mathbf{x}) ]
目标函数
分数匹配的目标是最小化以下Fisher散度: [ \mathcal{J}(\theta) = \frac{1}{2} \mathbb{E}{p{data}(\mathbf{x})} \left[ | \mathbf{s}{\theta}(\mathbf{x}) - \mathbf{s}{data}(\mathbf{x}) |^2 \right] ]
通过分部积分可推导出显式分数匹配目标(无需真实分数): [ \mathcal{J}{ESM}(\theta) = \mathbb{E}{p_{data}(\mathbf{x})} \left[ \text{tr}(\nabla_{\mathbf{x}} \mathbf{s}{\theta}(\mathbf{x})) + \frac{1}{2} | \mathbf{s}{\theta}(\mathbf{x}) |^2 \right] ] 其中 ( \nabla_{\mathbf{x}} \mathbf{s}_{\theta}(\mathbf{x}) ) 是分数函数的雅可比矩阵。
与扩散模型的联系
在扩散模型中,分数匹配用于学习逆向过程的梯度场:
- 正向过程:数据逐渐被噪声化,形成一系列中间分布 ( p_t(\mathbf{x}) )。
- 逆向过程:通过分数网络 ( \mathbf{s}{\theta}(\mathbf{x}, t) ) 估计各时间步的分数 ( \nabla{\mathbf{x}} \log p_t(\mathbf{x}) ),从而逐步去噪。
关键性质
- 免归一化:仅依赖对数密度的梯度,无需计算 ( p_{\theta}(\mathbf{x}) ) 的显式值。
- 局部一致性:分数函数在数据流形外未定义,但扩散模型通过添加噪声确保全局定义。
- 隐式表示:分数网络可参数化为U-Net等结构,直接输出梯度场。
代码示例(PyTorch伪代码)
import torch
import torch.nn as nn
class ScoreNetwork(nn.Module):
def __init__(self, input_dim, hidden_dim):
super().__init__()
self.net = nn.Sequential(
nn.Linear(input_dim, hidden_dim),
nn.Softplus(),
nn.Linear(hidden_dim, input_dim) # 输出与输入同维度的分数
def forward(self, x):
return self.net(x)
# 分数匹配损失计算
def score_matching_loss(score_net, x_batch):
x_batch.requires_grad_(True)
scores = score_net(x_batch)
# 计算雅可比矩阵的迹(通过自动微分)
jacobian_trace = torch.autograd.grad(
outputs=scores.sum(), inputs=x_batch,
create_graph=True, retain_graph=True
)[0].sum(dim=-1)
loss = (jacobian_trace + 0.5 * (scores**2).sum(dim=-1)).mean()
return loss
示意图
正向噪声化过程 逆向去噪过程
x₀ → x₁ → ... → x_T x_T → ... → x₁ → x₀
│ │ │ │ │ │
s₀ s₁ s_T ŝ_T ŝ₁ ŝ₀
(真实分数) (估计分数)
案例研究:图像生成
在CIFAR-10数据集上,分数匹配训练的扩散模型可生成高质量图像。实验表明:
- 分数网络能准确捕捉图像局部结构(如边缘、纹理)的梯度方向。
- 通过朗之万动力学采样(基于分数网络)可逐步优化噪声图像至清晰样本。
扩展阅读
- Hyvärinen A. (2005). Estimation of Non-Normalized Statistical Models by Score Matching.
- Song & Ermon (2019). Generative Modeling by Estimating Gradients of the Data Distribution.
注:此内容包含理论推导、代码示例和可视化元素,符合书籍要求的平衡性。实际出版时可进一步补充实验细节和图表。