来源:Song 等,2021,arXiv:2011.13456,§4.4(架构改进与实验)+ 附录 H(架构细节)。 读法:§9.1 先定位,改的是哪块(那个 UNet score 网络);§9.2 逐项改动,每条都给「改了什么 / 为什么有用 / 对应 UNet 哪里」,方差缩放、傅里叶嵌入这种细节进折叠;§9.3 训练与采样的配套设定;§9.4 结果数字;§9.5 意义。复杂推理一律折叠,主线读下来不卡。 --- ## §9.1 改的是哪个东西 这一步:先把范围框死,这一节优化的不是前面任何理论,只是那个把 $(x,t)$ 映射到 score 的神经网络本身。 前面定下来的全不动:前向 SDE 给 $f,g$(§3)、反向只缺 score(§4)、score 用 $J(\theta)$ 训(§5)、采样用 ODE/PC(§6/§7)。**真正决定生成质量的,是那个 score 网络 $s_\theta(x,t)$ 估得有多准。**它的骨架就是熟悉的 UNet:编码器一路下采样抽特征、解码器一路上采样还原、中间跳连把同分辨率的细节接过去,每级若干残差块,外加时间/噪声嵌入告诉网络现在是哪一档噪声。 论文把改进后的两版叫 NCSN++(VE 这条)和 DDPM++(VP 这条)。下面逐条看它们在这套 UNet 上改了什么。 --- ## §9.2 逐项改动:改了什么 / 为什么 / 对应 UNet 哪里 这一步:七条改动,逐条拆。每条先一句「改了什么」,再说「为什么」,最后指到 UNet 的具体位置。 ① 抗混叠的上/下采样 - 改了什么:把朴素的下采样(带步长的卷积/池化)和上采样(最近邻插值 + 卷积)换成带低通滤波的重采样(FIR 滤波,借自 StyleGAN2)。 - 为什么:朴素重采样会引入混叠,高频信号被错误折叠成伪纹理,图像出格栅状伪影。先低通滤波再采样,把会混叠的高频滤掉,FID 明显下降。 - 对应 UNet:编码器每次降分辨率那层、解码器每次升分辨率那层。 ② 跳连乘 $1/\sqrt2$ 缩放 - 改了什么:每条跳连(以及残差支路)汇合时,乘一个 $1/\sqrt2$。 - 为什么:两条幅度相当的信号相加,方差会翻倍;深层网络里这种相加叠很多层,幅度会失控。乘 $1/\sqrt2$ 正好把方差压回去、保持数值稳定。 - 对应 UNet:解码器里「跳连特征 + 上采样特征」的那个相加/拼接点。 > [!note]- 为什么偏偏是 $1/\sqrt2$(方差两条规则) > 《方差》那块的两条规则:缩放 $\mathrm{Var}(kX)=k^2\mathrm{Var}(X)$;独立相加方差相加。设两条支路各自方差约为 $1$、近似独立,相加后方差 $\approx 1+1=2$。要把它压回 $1$,整体乘系数 $k$ 使 $k^2\cdot 2=1$,即 $k=1/\sqrt2$。所以这个看似随意的常数,就是「让相加后方差不膨胀」算出来的。 ③ BigGAN 风格残差块 - 改了什么:把普通残差块换成 BigGAN 那种残差块(把上/下采样融进残差块内部,分支结构更合理)。 - 为什么:梯度流更顺、表达力更强,score 估得更准。 - 对应 UNet:每一级的那些 ResBlock。 ④ 加深:每级更多残差块 - 改了什么:每个分辨率级别堆更多残差块(论文里「deep」版尤其明显)。 - 为什么:更多容量 → 拟合 score 更准。CIFAR-10 上最好的几个数字都来自加深版。 - 对应 UNet:每级 ResBlock 的数量。 ⑤ 渐进式输入/输出旁路(progressive 结构) - 改了什么:普通 UNet 只在最顶层吃一张原图、最后吐一张输出,中间层级只经手内部特征。progressive 结构(思路借自 StyleGAN/MSG-GAN)给每个分辨率层级都开一条直通外界的旁路——输入侧:把原图下采样到该级尺寸、直接喂给该级;输出侧:每级各自吐一份该分辨率的结果、逐级上采样汇成最终输出。 - 为什么:层级一深,信号从原图走到深层、梯度从输出传回深层,路都太长,分辨率越高越训不动。每级的直通旁路是近路——每个层级直接看得到图、直接对输出负责,训练稳、收敛快;$1024^2$ 必须靠它。 - 对应 UNet:加在网络与外界(原图/输出)之间。⚠️ 撞名:它也常被叫「跳连」,但和 UNet 内部那种编码器↔解码器的横向跳连不是一个东西——一个通外界、一个通内部。 - ⚠️ 不是只有高清才用:论文在 CIFAR-10($32^2$)上的最优 VE 配置 NCSN++ 就带 "residual" 输入渐进(附录 H)。 ⑥ 噪声尺度/时间嵌入用傅里叶特征 - 改了什么:把 $t$(或 $\sigma$)先编码成高斯傅里叶特征,再过一个小 MLP,注入每个残差块。 - 为什么:一个网络要对所有噪声档都给准 score,必须知道「现在是哪一档」。这正是 §5 说的「网络多吃一个 $t$」的落地;傅里叶特征比直接喂一个标量更利于网络分辨相近的 $t$。 - 对应 UNet:DDPM 的 timestep embedding,这里换成傅里叶特征版、且对连续 $t$ 也成立。 > [!note]- 傅里叶特征是什么(够用版) > 不是直接把标量 $t$ 喂进去,而是先算一组 $[\sin(2\pi f_i t),\cos(2\pi f_i t)]$(多个频率 $f_i$)拼成一个向量,再过 MLP。直觉:单个标量挨得近的两个 $t$ 网络难区分,换成不同频率的正余弦后,相近的 $t$ 在高频分量上差别被放大,网络更容易给出随 $t$ 平滑而又有分辨力的输出。 ⑦ EMA(权重的指数滑动平均;人话:给权重记一份「长期平均」的影子账) - 改了什么:存两份权重。一份是训练权重 $\theta$——网络本体,优化器每个 batch 更新它;另一份是影子权重 $\theta_{\text{EMA}}$——额外的拷贝,不算梯度、不参与训练。每次优化器更新完 $\theta$,紧跟一行更新影子: $\theta_{\text{EMA}}\leftarrow m\,\theta_{\text{EMA}}+(1-m)\,\theta\qquad(m\approx 0.999)$ 影子每步只朝最新权重挪一小步,等效于对最近许多步的 $\theta$ 做加权平均,越久远的权重占比按指数衰减——「指数滑动平均」名字的来历。 - 谁用哪份:训练全程用 $\theta$(反传、更新都发生在它身上);出图和评测时加载 $\theta_{\text{EMA}}$。 - 为什么要两份:SGD 让 $\theta$ 在好解附近因 batch 噪声来回抖,任一时刻的快照 = 好解 + 随机抖动;对许多步取平均,抖动均值近零、互相抵消,剩下的更接近轨迹中心——和 §3 取期望杀噪声是同一个哲学。而训练必须继续用「抖的」那份(拿平均版去训练会改变优化本身),所以一份负责探索、一份负责出活。零理论成本,FID 提升常常可观。 一句话收口:**这七条全是「把同一个 score 网络训得更准、采得更稳」的工程,没有一条改动前面的 SDE 理论**。(⚠️ 也不是两条河通吃:①FIR 与 ⑤渐进属 NCSN++(VE) 的最优配置;DDPM++(VP) 的最优配置不用这两条,其余共享。) --- ## §9.3 训练与采样的配套设定 这一步:把网络放进前面几节的框架里,实际怎么跑。 - 训练:用 §5 的连续时间目标 $J(\theta)$,时间 $t$ 连续抽,权重取 §5 的典型选择(该时刻扰动核的方差);VE 线训成 NCSN++,VP/sub-VP 线训成 DDPM++。 - 采样:用 §7 的 PC(预测器 = 反向 SDE 数值步、校正器 = Langevin),论文里 PC 比单用预测器或校正器都好;要确定性/可算似然就走 §6 的概率流 ODE。 - 似然:走概率流 ODE 算 bits/dim(机制见 §8)。 --- ## §9.4 结果数字 这一步:上面这套刷出的主要数字。下面给出量级与结论;精确小数以论文 §4.4 原表为准。 - CIFAR-10 当时新 SOTA:FID 低至约 **2.20**、Inception Score 约 **9.89**(连续训练的加深版 NCSN++(VE) 配 PC 采样拿下;DDPM++ deep 约 2.41),创当时 CIFAR-10 的最好成绩。 - **首次 $1024\times1024$ 高清人脸**(CelebA-HQ):此前 score-based/扩散方法没做到这个分辨率,这是把这条路推上高分辨率的标志(靠 §9.2-⑤ 的渐进结构)。 - 精确似然:借 §6 概率流 ODE 算出测试数据的精确对数似然,在均匀去量化的 CIFAR-10 上达 **2.99 bits/dim**,超过论文对比的全部流模型与 DDPM、创该设定的新纪录(论文 Table 2 未与自回归模型直接比,量化方式不同)。 --- ## §9.5 意义 这一步:为什么这一节重要,而不只是「调参刷榜」。 到这里论文证明了:**「连续 SDE + 单个 score 网络」这套统一框架不是只在理论上漂亮**。配上合适的网络工程,它在三个维度上同时拿下当时的标杆,质量(FID 2.2)、分辨率(首个 $1024^2$)、似然(可精确计算)。三者通常要不同模型各自专精,这套框架用一个 score 网络全吃下。此前训 UNet/CelebA-HQ 攒下的工程经验,与这套配置是同一脉络——这一节等于把那些经验接到了论文的 SOTA 配置上。 --- ## 本节一条线 这一节优化的是 score 网络(UNet)本身,不动前面任何理论:抗混叠上下采样、跳连 $1/\sqrt2$ 缩放(让相加方差不膨胀)、BigGAN 残差块、加深、渐进式高分辨率结构、傅里叶时间嵌入、EMA,得到 NCSN++/DDPM++。配 §5 的训练目标、§7 的 PC 采样、§6 的 ODE 似然,刷出 CIFAR-10 FID 约 2.2 的当时新 SOTA、首个 $1024^2$ 高清、并可精确算似然,质量、分辨率、似然三线齐拿。下一节(§10)是最后一块:让生成可控(按条件 $y$ 生成、做补全/上色这类逆问题)。