NCSN · 深度精读
NeurIPS 2019 OralarXiv:1907.05600v323 页:主文 8 页 + 参考文献 5 页 + 附录 10 页

Generative Modeling by Estimating Gradients of the Data Distribution

学习一系列高斯扰动分布的 score,再用噪声从大到小的 annealed Langevin dynamics,把无结构随机值逐步带回图像数据流形附近。

Yang Song · Stefano Ermon | Stanford University

论文的核心桥梁同一个 noise-conditioned network,连接多尺度 denoising score matching 与退火采样。大噪声改善低密度区域的可达性,小噪声恢复数据细节;10 个尺度构成离散的连续过渡。
8.87CIFAR-10 Inception Score
25.32CIFAR-10 FID
10噪声尺度
1000每个样本的网络评估次数
01 · Research gap

直接学习数据 score,为什么会在图像上失效

score 是 log-density 对输入的梯度。它消除了 density 的归一化常数,允许网络直接学习一个向量场;但图像分布常被视为嵌在高维像素空间中的低维流形,ambient density 与其梯度可能不存在,训练样本又几乎不给低密度区域提供监督。

流形困难

当分布只支撑在低维集合上,\(\nabla_{\mathbf{x}}\log p_{\mathrm{data}}(\mathbf{x})\) 作为 ambient-space density score 可能没有定义。经典 score matching 的分部积分等价还要求光滑性、边界衰减和全维支撑等条件。

估计困难

训练目标按 \(p_{\mathrm{data}}\) 加权误差。低密度区域几乎没有样本,网络在那里可以给出错误向量而付出很小训练代价;随机初始化却恰好位于这些区域。

混合困难

相互分离的模式之间,score 不携带 mixture weight;普通 Langevin chain 很难穿过低密度障碍。有限步、有限步长且没有 Metropolis 校正时,这一困难更明显。

Figure 1 manifold experiment
Figure 1 · 流形假设的训练症状。 原始 CIFAR-10 上 sliced score matching loss 先下降再不规则波动;加入方差 0.0001 的极小高斯扰动后收敛更稳定。它是现象证据,没有证明所有自然图像严格位于光滑流形。
Figure 2 exact scoreFigure 2 estimated score
Figure 2 · 低密度区域的 score 估计。 左为二维 Gaussian mixture 的真实 score,右为三层 MLP 估计;红框附近高密度区较准确,模式之间和外围偏差显著。
02 · Problem

输入、输出与三种分布

\(\mathbf{x}\in\mathbb{R}^{D}\)干净数据样本;图像实验像素位于 \([0,1]\)。
\(q_{\sigma}\)数据与 \(\mathcal{N}(\mathbf{0},\sigma^2\mathbf{I})\) 卷积后的边际。
\(\tilde{\mathbf{x}}\)由干净样本加噪得到的训练输入。
\(\mathbf{s}_{\theta}\)与图像同形状的向量场,条件是离散噪声编号。
\(\sigma_1\gt\cdots\gt\sigma_L\)几何序列;主图像实验从 1 降到 0.01。
\(\lambda(\sigma)\)各尺度损失权重,论文选择 \(\sigma^2\)。
\(\alpha_i\)第 \(i\) 个噪声级别的采样步长。
\(\theta\)共享 NCSN 参数;训练后固定,用于所有尺度采样。
\[ q_{\sigma}(\mathbf{x})=\int p_{\mathrm{data}}(\mathbf{t})\,\mathcal{N}(\mathbf{x}\mid\mathbf{t},\sigma^2\mathbf{I})\,\mathrm{d}\mathbf{t},\qquad \mathbf{s}_{\theta}(\mathbf{x},\sigma)\approx\nabla_{\mathbf{x}}\log q_{\sigma}(\mathbf{x}) \]
Gaussian convolution 让每个 \(q_{\sigma}\) 在整个 ambient space 有支撑。模型输出 score,不输出归一化 density、likelihood 或图像。
建模边界
论文直接参数化 vector field,没有强制 \(\mathbf{s}_{\theta}\) 必须是某个标量能量的梯度。训练最优点可对应真实 score,有限容量和有限训练后的向量场可能不可积,因此“省去 partition function”不等于“得到可校准 likelihood”。
03 · Mathematics

从 score matching 到多尺度去噪目标

3.1 经典 score matching

\[ \mathcal{J}_{\mathrm{SM}}(\theta)=\mathbb{E}_{p_{\mathrm{data}}}\left[\operatorname{tr}\left(\nabla_{\mathbf{x}}\mathbf{s}_{\theta}(\mathbf{x})\right)+\frac{1}{2}\left\lVert\mathbf{s}_{\theta}(\mathbf{x})\right\rVert_2^2\right] \]

它在满足正则条件时与 \(\frac12\mathbb{E}\lVert\mathbf{s}_{\theta}-\nabla\log p_{\mathrm{data}}\rVert^2\) 相差一个与参数无关的常数。trace Jacobian 对高维深网代价高,原论文因此讨论 DSM 与 SSM 两个可扩展替代。

3.2 Denoising score matching

\[ \ell(\theta;\sigma)=\frac{1}{2}\mathbb{E}_{\mathbf{x}\sim p_{\mathrm{data}},\,\tilde{\mathbf{x}}\sim\mathcal{N}(\mathbf{x},\sigma^2\mathbf{I})}\left[\left\lVert\mathbf{s}_{\theta}(\tilde{\mathbf{x}},\sigma)+\frac{\tilde{\mathbf{x}}-\mathbf{x}}{\sigma^2}\right\rVert_2^2\right] \]

Gaussian conditional score 是 \(-(\tilde{\mathbf{x}}-\mathbf{x})/\sigma^2\)。单个训练对的监督目标指向其干净源样本;对所有可能源样本求条件期望后,最优网络等于边际 \(q_{\sigma}(\tilde{\mathbf{x}})\) 的 score。

\[ \mathcal{L}(\theta)=\frac{1}{L}\sum_{i=1}^{L}\sigma_i^2\ell(\theta;\sigma_i)=\frac{1}{2L}\sum_{i=1}^{L}\mathbb{E}\left[\left\lVert\sigma_i\mathbf{s}_{\theta}(\tilde{\mathbf{x}},\sigma_i)+\boldsymbol{\epsilon}\right\rVert_2^2\right],\quad \boldsymbol{\epsilon}\sim\mathcal{N}(\mathbf{0},\mathbf{I}) \]

权重 \(\lambda(\sigma)=\sigma^2\) 来自经验观察 \(\lVert\mathbf{s}_{\theta}(\mathbf{x},\sigma)\rVert_2\propto1/\sigma\),用来平衡各尺度损失量级。这是经验假设,缺少对任意数据分布的定理保证。

3.3 Sliced score matching 的角色

\[ \mathcal{J}_{\mathrm{SSM}}(\theta)=\mathbb{E}_{\mathbf{x},\mathbf{v}}\left[\mathbf{v}^{\mathsf{T}}\nabla_{\mathbf{x}}\mathbf{s}_{\theta}(\mathbf{x})\mathbf{v}+\frac{1}{2}\left\lVert\mathbf{s}_{\theta}(\mathbf{x})\right\rVert_2^2\right],\qquad \mathbb{E}[\mathbf{v}\mathbf{v}^{\mathsf{T}}]=\mathbf{I} \]

随机投影只替代 Jacobian trace 的计算,第二项仍是完整 score norm。主 NCSN 采用 DSM;SSM 用于 Figure 1、Figure 2 的诊断实验,也可训练 NCSN,但论文报告其计算约慢四倍。

04 · Pipeline

训练一次随机尺度,推理逐级退火

TRAIN 01抽取图像

\(\mathbf{x}\sim p_{\mathrm{data}}\)

TRAIN 02抽取尺度

均匀抽取 \(i\in\{1,\ldots,L\}\)。

TRAIN 03加入噪声

\(\tilde{\mathbf{x}}=\mathbf{x}+\sigma_i\boldsymbol{\epsilon}\)

TRAIN 04预测 score

RefineNet 接收图像与尺度编号。

TRAIN 05加权 DSM

用 \(\sigma_i^2\) 平衡 loss。

4.1 Annealed Langevin dynamics

\[ \alpha_i=\epsilon\frac{\sigma_i^2}{\sigma_L^2},\qquad \tilde{\mathbf{x}}_t=\tilde{\mathbf{x}}_{t-1}+\frac{\alpha_i}{2}\mathbf{s}_{\theta}(\tilde{\mathbf{x}}_{t-1},\sigma_i)+\sqrt{\alpha_i}\mathbf{z}_t,\quad \mathbf{z}_t\sim\mathcal{N}(\mathbf{0},\mathbf{I}) \]

从 \(\sigma_1\) 到 \(\sigma_L\),每个尺度做 \(T\) 次更新,再把末态传给下一尺度。论文用 \(\alpha_i\propto\sigma_i^2\) 近似维持 drift 与随机噪声的相对量级:若 score norm 约为 \(1/\sigma_i\),则 \(\alpha_i\mathbb{E}\lVert\mathbf{s}\rVert^2/(4D)\) 的尺度较稳定。论文原文把向量相除写成 “SNR”,严格解释应比较期望平方范数。

采样精度
有限步长 ULA 且没有 Metropolis-Hastings 校正,论文假设 \(\epsilon\) 足够小、\(T\) 足够大时偏差可忽略。算法没有给出 exact sampling 或全局混合保证;大噪声只提供更连通的中间分布。
Figure 3 Gaussian mixture sampling
Figure 3 · 两模式 Gaussian mixture。 普通 Langevin dynamics 使用真实 score 仍恢复错误的模式比例;退火版本更接近 0.2/0.8。主文称 \(\sigma_1=10,\sigma_{10}=0.1\),Appendix B.1 的复现实验写为 20 到 1;页面保留这项来源冲突。
Figure 4 intermediate samples
Figure 4 · 退火采样中间状态。 每行由 \([0,1]\) 均匀噪声开始,随噪声级别下降形成类别结构与局部细节。论文没有使用 NCSNv2 后续提出的最终 Tweedie denoise。
05 · Architecture

RefineNet、dilation 与 CondInstanceNorm++

四级 RefineNet

使用 pre-activation residual blocks 和 U-Net 式多路径 skip。第一 cascade 为 128 filters,其余为 256;MNIST 全部减半。除第一处下采样以外,其余 residual subsampling 改为 dilated convolution,逐 cascade 把 dilation 加倍。

生成式调整

Refine Blocks 的 max pooling 改为 average pooling;所有激活使用 ELU。每个 convolution 与 pooling 前均加入 CondInstanceNorm++,包括原 RefineNet 没有 normalization 的位置。

尺度条件

噪声条件是 10 类离散编号,每类在 normalization 中拥有独立 \(\gamma,\beta,\alpha\) 参数;它不是类别标签。网络对全部尺度共享 convolutional weights。

\[ \mathbf{z}_k=\gamma_{i,k}\frac{\mathbf{x}_k-\mu_k}{s_k}+\beta_{i,k}+\alpha_{i,k}\frac{\mu_k-m}{v} \]
\(\mu_k,s_k\) 是第 \(k\) 个 feature map 的空间统计;\(m,v\) 是各 channel mean \(\mu_k\) 之间的均值与标准差。最后一项保留跨 channel 的均值结构,用于减少颜色偏移。论文中的 \(v\) 表示标准差;固定提交的 ConditionalInstanceNorm2dPlus.forward 将代码变量 v 定义为 torch.var(means),再除以 \(\sqrt{v+10^{-5}}\),该变量表示方差。论文中的 \(v\) 表示标准差;固定提交的 ConditionalInstanceNorm2dPlus.forward 将代码变量 v 定义为 torch.var(means),再除以 \(\sqrt{v+10^{-5}}\),该变量表示方差。
网络 / 图结构训练硬件
Figure 1 CIFAR score diagnostic5-block autoencoder ResNet;filters 32, 64, 64, 128, 128;第 2、4 block 下采样;decoder 镜像;ELUSSM;50,000 iterations;Adam;lr 0.001;batch 1281× Titan XP
Figure 2 toy score3-layer MLP;每层 128 hidden;SoftplusSSM;10,000 iterations;Adam;lr 0.001;batch 1282.7 GHz Intel Core i7
主图像 NCSN4-cascaded RefineNet;CondInstanceNorm++;dilated convolution;ELUDSM;200,000 iterations;Adam;lr 0.001;batch 128;每 5,000 保存MNIST 1× Titan XP;CelebA/CIFAR-10 2× Titan XP
06 · Experiments

数据、协议、完整结果表与消融

项目设置
数据MNIST 28×28;CIFAR-10 32×32;CelebA 先中心裁剪到 140×140,再缩放到 32×32;像素缩放到 \([0,1]\)。代码训练集为 torchvision MNIST/CIFAR-10 的 train=True,CelebA 使用 split=train;测试 loader 分别使用 train=False 与 split=test
增强CelebA 与 CIFAR-10 随机水平翻转;MNIST 不翻转
噪声\(L=10\) 个几何尺度;\(\sigma_1=1\),\(\sigma_{10}=0.01\);每个 batch example 均匀抽尺度
采样\(T=100\) steps/level;\(\epsilon=2\times10^{-5}\);初始样本均匀分布于 \([0,1]\);总计 1,000 次 network evaluations
稳健区间作者报告 \(\epsilon\) 在 \(5\times10^{-6}\) 到 \(5\times10^{-5}\) 通常有效,并称对 \(T\) 较稳健;没有完整 sweep 表
模型选择MNIST 取 200k 最后 checkpoint;CelebA/CIFAR 每个 checkpoint 生成 1,000 张,按该小样本 FID 选最低者
最终评测50,000 样本;OpenAI Inception Score 实现;TTUR FID 实现。论文与仓库没有明确记录最终 FID reference statistics 来自 CIFAR-10 train 还是 test split

Table 1 · CIFAR-10 全部报告行

条件模型Inception Score ↑FID ↓
UnconditionalPixelCNN4.6065.93
UnconditionalPixelIQN5.2949.46
UnconditionalEBM6.0240.58
UnconditionalWGAN-GP7.86 ± 0.0736.4
UnconditionalMoLM7.90 ± 0.1018.9
UnconditionalSNGAN8.22 ± 0.0521.7
UnconditionalProgressiveGAN8.80 ± 0.05—
UnconditionalNCSN (Ours)8.87 ± 0.1225.32
ConditionalEBM8.3037.9
ConditionalSNGAN8.60 ± 0.0825.5
ConditionalBigGAN9.2214.73
结果如何解释
8.87 是论文发表时报告的无条件 CIFAR-10 最佳 Inception Score;其不确定区间与 ProgressiveGAN 有重叠,论文未给显著性检验。25.32 FID 落后 MoLM 与 SNGAN。conditional rows 使用类别信息,不能与 NCSN 视为同一任务条件。MNIST 与 CelebA 没有数字,因为论文指出预处理与当时报告协议不统一。
Figure 5 uncurated samples
Figure 5 · MNIST、CelebA、CIFAR-10 未筛选样本。 这是质量与多样性的定性证据。页面使用论文原图;Appendix Figures 11–13 提供更大样本板。

单尺度 baseline

baseline 使用同一 RefineNet,仅训练 \(\sigma=0.01\) 并用普通 Langevin dynamics:\(T=1000\)、\(\epsilon=2\times10^{-5}\),计算预算仍为 1,000 次网络评估。Appendix Figures 7–8 显示样本失败。这项对照同时改变了多尺度训练与退火采样,无法分别量化两个因素的独立贡献。

Image inpainting

\[ \mathbf{y}=\mathbf{x}+\tilde{\mathbf{z}},\quad \tilde{\mathbf{z}}\sim\mathcal{N}(\mathbf{0},\sigma_i^2\mathbf{I}),\qquad \tilde{\mathbf{x}}\leftarrow\tilde{\mathbf{x}}\odot(\mathbf{1}-\mathbf{m})+\mathbf{y}\odot\mathbf{m} \]

每个 noise level 只采一次带噪观测 \(\mathbf{y}\),之后在该 level 的每次内循环把已知像素钳回同一个 \(\mathbf{y}\)。最小尺度仍为 0.01,算法返回前没有把观测区恢复为完全干净的 \(\mathbf{x}\)。它演示任意形状 mask 的定性修复,没有 PSNR、LPIPS 或 conditional posterior 校准评测。

Figure 6 inpainting
Figure 6 · CelebA 与 CIFAR-10 图像修复。 每组最左是遮挡输入,最右是原图,中间是多次随机修复。多样输出说明 score field 能约束缺失区域,但不证明恢复了真实 conditional distribution。

Figures 7–8 · Baseline

三个数据集的单尺度未筛选样本与完整 Langevin 轨迹。它们显示小噪声 score 无法把 uniform initialization 可靠引向数据区。

Figures 9–10 · Nearest neighbors

分别用 pixel \(\ell_2\) 与 pretrained Inception V3 feature distance 检索训练集近邻;定性上没有逐图复制,仍不足以证明零记忆或隐私安全。

Figures 11–13 · Extended samples

MNIST、CelebA、CIFAR-10 更大样本板,用于检查多样性与失败模式;没有增加新的量化协议。

Figures 14–15 · Sampling trajectories

CelebA 的扩展中间状态,展示从高噪声到低噪声的渐进细化;两图均属于同一 annealed Langevin algorithm。

Figure 16 · CelebA inpainting

扩展人脸修复样本,左列为遮挡输入,右列为原图,中间列展示同一观测的多种随机 completion。

Figure 17 · CIFAR-10 inpainting

扩展自然图像修复样本,布局与 Figure 16 相同;只提供视觉比较,没有 PSNR、LPIPS 或用户研究。

07 · Paper vs. implementation

官方代码对论文算法的具体实现

项目论文官方实现判断
DSM loss\(\sigma_i^2\) 加权 conditional score MSEtarget = -(perturbed-samples)/sigma²;per-example 乘 sigma ** anneal_power,默认 power 2一致
noise ladder1 到 0.01 的 10 级几何序列exp(linspace(log(begin), log(end), num_classes))一致
采样更新\(\alpha_i\mathbf{s}/2+\sqrt{\alpha_i}\mathbf{z}\)step_size*s + sqrt(2*step_size)*z数学形式等价,但同名超参数数值不能直接照搬:代码 step_lr=2e-5 对应论文记号 \(\epsilon=4\times10^{-5}\);复现论文 \(\epsilon=2\times10^{-5}\) 时,代码应设 step_lr=1e-5。令 \(\eta_i\) 表示代码 step_size、\(\eta\) 表示 step_lr,对应关系为 \(\eta_i=\alpha_i/2\)、\(\eta=\epsilon/2\)。公开 inpainting 函数的默认 step_lr=8e-6,调用处显式传入 step_lr=2e-5
初始化uniform noisetorch.rand,范围 \([0,1]\)一致且代码更明确
中间 clamp算法未写每步只对保存的预览图 clamp(0,1);latent 自身继续无约束更新不改变采样状态
inpainting通用 mask公开 runner 固定左半图 :16,每 level 重采 noisy observation 并在 inner steps 固定论文算法通用;发布代码 demo 硬编码半图
优化器Adam,lr 0.001beta1 0.9、weight decay 0、AMSGrad false;未显式覆盖 beta2,使用 PyTorch 默认 0.999代码补齐正文缺项:PyTorch Adam 默认 beta2=0.999、epsilon=1e-8
版本边界原始 NCSN 2019仓库 README 提醒后续 NCSNv2 与 SDE 已稳定化这些后续改进不属于本文实验
复现限制
官方仓库只有 11 次历史提交,依赖未锁定版本;README 列出 PyTorch、PyYAML、tqdm、Pillow、tensorboardX 与 seaborn。checkpoint 由 Google Drive 提供。论文与代码均未报告 wall-clock training time、随机种子重复实验或参数总量;当前环境直接复现还需要恢复旧依赖组合。
08 · Evidence map

证据层级

Paper Verified
  • 极小 Gaussian perturbation 让 Figure 1 的 SSM 训练曲线更稳定。
  • 多尺度 NCSN + annealed Langevin 在三个 32px 数据集产生清晰样本。
  • CIFAR-10 报告 IS 8.87 ± 0.12、FID 25.32。
  • 单尺度 baseline 在相同 network-evaluation 预算下定性失败。
  • 任意形状 mask 可通过每步观测钳制完成定性修复。
Author Claim
  • 多噪声尺度同时改善 score estimation 与 Langevin mixing。
  • \(\sigma^2\) loss weighting 使各尺度贡献同量级。
  • 修复结果说明模型学习了有效、语义化 representation。
  • 最近邻结果说明模型没有简单记忆训练图像。
Our Interpretation
  • noise ladder 同时承担 support smoothing、低密度监督与采样 continuation 三个角色。
  • 训练 objective 与 sampler decoupling 提供灵活性,也让有限步 sampler 的质量缺少直接训练约束。
  • FID checkpoint 只用 1,000 样本筛选,选择噪声可能影响最终结果。
Research Extension
  • 把离散 noise ladder 写成连续时间 SDE,并联合设计训练权重与数值求解器。
  • 学习可校准 conservative score field,显式测量 curl 与可积性。
  • 对 structured graph 或程序使用 execution-aware corruption 与 constrained score updates。
  • 用 renderer 或任务指标在 test time 修正 score trajectory。
09 · Reviewer

审稿视角

Strengths

  • 准确指出 naïve score generation 的两个核心障碍。
  • 训练无需 adversarial loop 或模型内 MCMC。
  • 单网络共享多尺度,目标简单且可直接 minibatch 优化。
  • toy、CIFAR、MNIST、CelebA 与修复任务构成多层证据。
  • 附录给出架构与主要训练配置,官方代码公开。

Weaknesses

  • 生成每张图需要 1,000 次串行网络评估。
  • 核心单尺度对照没有析分训练尺度与采样退火贡献。
  • sampling bias、mixing 与 score error 没有定量诊断。
  • 图像仅为 32px,CelebA/MNIST 缺少可比数字。
  • inpainting 只有定性结果。
  • 直接向量场没有 conservative constraint。

Reproducibility

  • Adam 的 beta2、数值 epsilon 只可从框架默认值推知。
  • 训练与测试 loader 的划分可由官方代码核实;最终 FID reference statistics 的训练集或测试集来源没有明确记录。
  • 1,000 样本 checkpoint selection 方差未报告。
  • toy Figure 3 的主文和附录 noise endpoints 冲突。
  • 缺少训练时长、模型参数量与独立重复训练。
Reviewer judgment
论文最强的贡献是把 score estimation 的统计困难与 sampler 的动力学困难放进同一个多尺度构造。 实验证明该构造在当时能生成竞争性 32px 图像;它没有证明有限步 Langevin 的精确性,也没有充分隔离每个组件的因果贡献。
10 · Sources

资料、版本与图表来源

  1. NeurIPS 2019 正式论文页:论文、supplement、审稿与作者回复入口。
  2. arXiv:1907.05600v3,2020-10-10:本页正文、附录与 Figure 1–17 的主要来源。
  3. 官方 NCSN 实现:固定核查 commit 7f27f4a16471d20a0af3be8b8b4c2ec57c8a0bc1,用于 loss、noise ladder、采样更新、图像修复与配置核查。
  4. Hyvärinen, Estimation of Non-Normalized Statistical Models by Score Matching, JMLR 2005:Eq. 1 的基础。
  5. Vincent, A Connection Between Score Matching and Denoising Autoencoders, Neural Computation 2011:DSM 等价的基础。
  6. Song et al., Sliced Score Matching, UAI 2019:SSM 目标及 Figure 1–2 的估计工具。