生成式 AI,特别是像 Stable Diffusion 或 DALL-E 这样的扩散模型,通常感觉像是魔法。你输入噪声 (或许还有一个文本提示) ,然后一个连贯、新颖的图像就蹦出来了。但从数学角度来看,这种“新颖性”其实有点令人费解。

理想情况下,如果一个扩散模型在数学上是“完美”的,它根本不应该生成新图像——它应该只是简单地死记硬背并复现其训练数据。然而,在实践中,神经网络确实能泛化。它们创造出的图像看起来属于训练分布,但并非原有数据的精确副本。

为什么会发生这种情况?这是优化的意外之喜吗?还是特定的架构怪癖?

在这篇文章中,我们将深入探讨研究论文 《Towards a Mechanistic Explanation of Diffusion Model Generalization》 (迈向扩散模型泛化的机制性解释) 。 作者提出了一个迷人的假设: 扩散模型之所以能泛化,是因为它们并不是一次性查看整张图像。相反,它们依赖于一种局部归纳偏置 (local inductive bias) ——本质上充当了“基于补丁 (patch-based) ”的去噪器。通过对这一机制进行逆向工程,研究人员创建了一种完全无需训练的算法,模仿了深度神经网络的创造力。

“最优”去噪器的悖论

要理解为什么泛化很奇怪,我们首先需要看看扩散模型在数学上是如何工作的。这个过程涉及两个方向:

  1. 前向过程: 我们慢慢地向图像添加高斯噪声,直到它变成纯粹的静电噪声。
  2. 反向过程: 我们训练一个神经网络来估计噪声并将其移除,一步接一步。

网络的目标是估计给定噪声输入的后验均值 。 令人惊讶的是,我们可以写出完美去噪器的闭式方程。如果我们能访问整个训练数据集 \(\mathcal{D}\),去噪器的数学最优输出就是训练图像的加权平均值。

Equation 7: The optimal empirical denoiser equation.

在这里,权重取决于每个训练图像 \(\mathbf{x}^{(i)}\) 产生该噪声输入 \(\mathbf{z}\) 的可能性有多大。

Equation 9: The posterior probability weight.

这意味着什么?影响深远。如果一个神经网络完美地最小化了其损失函数,它的行为将完全像这个方程一样。而且由于高维空间的特性,这个“最优”去噪器通常几乎将其所有权重都分配给训练集中唯一的最近邻。

结果? 最优去噪器只是输出了训练集中最接近的图像。它在死记硬背。它没有泛化。

既然神经网络确实在泛化,它们必然是相对于这个最优数学解犯了“错误”。这篇论文旨在描述这些错误的特征。

分析神经网络的“误差”

研究人员首先比较了最先进的扩散模型 (如 DDPM++、NCSN++ 和像 DiT 这样的 Transformer) 的输出与 CIFAR-10 数据集上理论上的“最优”去噪器。

他们发现了惊人的现象。所有这些不同的架构,以不同的方式训练,都以相同的方式偏离了最优解。

Figure 2. Left: MSE between empirical and network denoisers. Right: Visual comparison of denoiser outputs.

如上图 (左) 所示,网络与最优去噪器之间的均方误差 (MSE) 在扩散过程的中间阶段 (大约 \(t=3\)) 激增。在非常高的噪声 (早期步骤) 和非常低的噪声 (最后步骤) 下,网络几乎是最优的。但在中间那个阶段,它们偏离了轨道。

视觉对比 (右) 更具说明性。在 \(t=3\) 时,“Empirical” (最优) 去噪器产生了一个清晰、锐利的图像 (一只猫) 。然而,神经网络产生的却是模糊、扭曲的版本,并带有明显的伪影——注意 DDPM++ 和 DiT 输出背景中的粉色调。

这表明泛化并不是随机噪声。它是所有图像扩散架构中共享的一种归纳偏置

局部归纳偏置

如果网络不像最优去噪器那样从全局查看整个图像,那它们在做什么?作者假设网络是在局部进行操作。

为了验证这一点,他们分析了网络的梯度敏感度。本质上,他们问的是: “如果我改变输入噪声 \(\mathbf{z}\) 中的一个像素,位置 \((x,y)\) 的输出像素会发生多大变化?”

Figure 3. Gradient sensitivity heatmaps and patch size analysis.

结果 (图 3,右) 显示,对于特定的输出像素 (由红星标记) ,网络只关心其紧邻的输入像素。

  • 在低噪声下 (\(t=0.03\)) ,焦点针尖般敏锐。
  • 随着噪声增加 (\(t=3\) 到 \(t=30\)) ,“感受野”变大,但它仍然是局部的。它从未像最优数学公式要求的那样真正关注全局上下文。

这证实了猜想: 神经网络之所以能泛化,是因为它们利用局部信息来近似全局后验均值。

引入 PSPC: 逆向工程“泛化”

如果扩散模型的“魔法”来自于以局部补丁的方式处理图像,我们能否在不训练神经网络的情况下复制它?

作者提出了一种称为补丁集后验合成 (Patch Set Posterior Composites, PSPC) 的方法。其想法是显式地执行“最优”去噪操作,但仅在图像的小裁剪区域 (补丁) 上进行,然后将结果缝合在一起。

PSPC 如何工作

  1. 分解 (Decompose) : 将噪声输入图像 \(\mathbf{z}\) 分解为许多重叠的补丁 (由裁剪矩阵定义) 。
  2. 检索与去噪 (Retrieve & Denoise) : 对于每个噪声补丁,将其与训练集中的补丁进行比较。计算“补丁后验均值”——本质上是找到匹配训练补丁的加权平均值。
  3. 合成 (Composite) : 将所有这些去噪后的补丁缝合回一张完整的图像,对重叠补丁的像素进行平均。

Figure 5. The PSPC pipeline: decomposing, denoising patches, and compositing.

这种“弗兰肯斯坦”式去噪器的数学公式非常优雅。代替全局期望,我们要计算:

Equation 16: The PSPC Equation.

这个方程本质上是说: 将去噪后的补丁 (\(\mathbb{E}[\dots]\)) 加起来,然后除以覆盖每个像素的补丁数量 (归一化项) 。

PSPC 的两种变体

作者介绍了两种定义补丁的方法:

  1. PSPC-Square: 使用标准的方形滑动窗口 (例如 \(8\times8\) 或 \(16\times16\) 像素) 。方形的大小随时间 \(t\) 变化,以匹配在神经网络中观察到的梯度敏感度。
  2. PSPC-Flex: 这是更高级的版本。它不使用死板的方形,而是使用直接源自神经网络梯度热图的自适应、不规则形状。

Figure 6. PSPC-Flex cropping matrices based on sensitivity maps.

如图 6 所示, PSPC-Flex 创建了看起来很自然的掩码,精确捕捉了网络在任何给定噪声水平下“看”的地方。

实验结果: 它有效吗?

PSPC 的目标不是在质量上击败最先进的图像生成器 (目前还不行) ,而是为了解释它们。如果 PSPC 的行为与神经网络完全一致,这就证明局部补丁处理是泛化背后的机制。

1. 匹配网络输出

研究人员将相同的噪声输入同时喂给一个训练好的神经网络 (DDPM++) 和他们无需训练的 PSPC 算法。

Figure 1. Comparison of denoiser outputs. Column 5 is PSPC.

看图 1。

  • 第 1 列 (最优) : 返回精确的训练数据 (太清晰了,没有泛化) 。
  • 第 2-4 列 (网络) : 产生特定的伪影、模糊和颜色偏移。
  • 第 5 列 (PSPC) : PSPC-Flex 的输出与神经网络惊人地相似。它复制了最优去噪器所避免的模糊、结构甚至颜色伪影。

2. 定量误差分析

当测量相对于神经网络输出的均方误差 (MSE) 时,PSPC 优于其他基线方法 (如高斯近似或闭式扩散模型) 。

Figure 7. MSE of various denoisers against DDPM++.

在图 7 中,粉色和绿色的线 (PSPC 变体) 始终低于橙色 (CFDM) 和蓝色 (高斯) 线,这意味着它们更接近神经网络的实际行为。

3. 采样和相似性

最后,作者使用 PSPC 运行了完整的扩散采样过程。一个完全无需训练、仅仅是将训练补丁缝合在一起的算法,能否生成连贯的新图像?

Figure 8. Sampling trajectories of DDPM++ vs PSPC-Flex.

图 8 比较了采样轨迹。虽然 PSPC (右) 积累了一些误差,导致保真度低于神经网络 (左) ,但结构和内容得到了显著保留。如果网络生成一张戴眼镜的人脸,PSPC 也会尝试用补丁构建一张戴眼镜的人脸。

为了量化这一点,他们使用了 SSCD (一种图像拷贝检测/相似性指标) 。

Figure 9. SSCD cosine similarity matrix.

图 9 显示,PSPC-Flex 样本与神经网络样本的相似度得分为 0.55 。 这显著高于最优去噪器 (0.34) 或其他基线。这种高相关性证实了 PSPC 捕捉到了神经网络生成过程的本质。

结论: 泛化的“原因”

这篇论文为扩散模型如何创造新内容提供了一个令人信服的机制性解释。它们不是简单地死记硬背数据,也没有在做什么不可名状的魔法。

扩散模型之所以能泛化,是因为它们作为局部补丁去噪器在运行。

通过将图像分解为局部上下文窗口,模型失去了识别确切全局训练图像的能力。取而代之的是,它寻找训练图像中最匹配的部分——这里是一只眼睛,那里是一种纹理——并将它们组合成一个连贯的整体。

作者引入的 PSPC 算法作为一个概念验证,证明了我们可以利用基于检索和缝合数据集补丁的简单、免训练算法,来模仿庞大且昂贵的神经网络的行为。

为什么这很重要?

  1. 可解释性: 我们现在对这个“黑盒”有了更清晰的理解。我们要知道,死记硬背与生成创造之间的鸿沟在于处理的局部性。
  2. 版权和归因: 既然 PSPC 显式地使用了训练补丁,这表明神经生成在某种意义上是一种复杂的拼贴画形式。这可能为追踪哪些训练图像对特定生成的像素做出了贡献提供工具。
  3. 效率: 虽然 PSPC 目前很慢 (由于最近邻搜索) ,但未来的优化可能会带来无需大规模训练运行的高质量生成模型——只需要一个好的数据集和一个聪明的补丁合成算法。

通过揭开“魔法”的神秘面纱,我们不仅获得了更好的理论,也可能为未来生成式 AI 提供了更好、更可控的工具。