这一步:§1 说去噪器 $D$ 用网络 $D_\theta$ 实现,但网络外面还要套一层随 $\sigma$ 变的缩放(preconditioning,译预条件化):把网络的输入、输出、噪声条件各按 $\sigma$ 乘一个系数,调理到网络好训的幅度。注意它调理的是网络这一头,不是对训练数据做预处理,名字像、事不同。这一节讲:为什么要套(§5.1)、skip 连接长什么样与每个值乘在哪(§5.2,论文式(7))、网络实际在学什么(§5.3,论文式(8))、四个缩放怎么定(§5.4)、这套东西买来什么(§5.5)。 ## §5.1 为什么要 preconditioning 先说共同的毛病根。旧办法都让网络 $F_\theta$ 预测「归一化的噪声」,理想输出就是当初加进去的标准噪声 $\varepsilon$,再拿它还原去噪估计 $D$。拿最简单的加噪 $x=y+\sigma\varepsilon$ 看,还原式是 $D=x-\sigma F_\theta$ 网络若完美($F_\theta=\varepsilon$),还原的正是干净图 $y=x-\sigma\varepsilon$。但网络不完美,$F_\theta$ 和真噪声 $\varepsilon$ 有差,两式相减看去噪误差: $D-y=-\sigma\,(F_\theta-\varepsilon)$ **误差就出在 $F_\theta-\varepsilon$(网络没把噪声预测准的那点差),它被 $\sigma$ 乘上放大,$\sigma$ 越大放得越狠。** 下面三条线都绕着这个根打转。 ① VP(DDPM,方差保持):$x_t=\sqrt{\bar\alpha_t}\,y+\sqrt{1-\bar\alpha_t}\,\varepsilon$,输入 $x_t$ 方差保持恒定(理想为 1),输入端不爆。但还原去噪估计要除以 $\sqrt{\bar\alpha_t}$,误差变成 $D-y=-\sigma_{\text{eff}}\,(F_\theta-\varepsilon)$,其中 $\sigma_{\text{eff}}=\sqrt{1-\bar\alpha_t}/\sqrt{\bar\alpha_t}$ 是 §2 里 VP 的等效噪声水平,$t$ 越大越爆。同一个放大照样在。 ② VE(NCSN,方差爆炸,EDM 也走这条):输出端的放大就是上面整体段那个 $-\sigma(F_\theta-\varepsilon)$。VE 还多一个毛病:输入方差 $\sigma_{data}^2+\sigma^2$ 随 $\sigma$ 一路涨到爆,原版还不做输入归一化、直接吞。所以输入端(幅度爆)、输出端(误差放大 $\sigma$ 倍)两个都占,比 VP 多沾一个。 ③ EDM(治法):**给网络套一个随 $\sigma$ 变的 skip 连接,让它在「预测干净图 $y$」和「预测噪声 $n$」之间取舍**($n$ 指加进图里的那份高斯噪声,方差 $\sigma^2$,§5.2 正式定义),哪种在当前 $\sigma$ 下好训偏哪种。$\sigma$ 大时偏向预测 $y$,输出误差的放大系数(§5.2 引入的 $c_{out}$)封顶在 $\sigma_{data}$、不随 $\sigma$ 爆,输入、输出一起治。 > [!note]- DDPM 和去噪估计 D 的关系:它内部也在算 D,靠多步扛住放大 > 「不转换 D」其实躲不掉。DDPM 采样看着是用预测噪声 $\hat\varepsilon$ 直接走,但每步内部等价于先估一张干净图 $\hat x_0=(x_t-\sqrt{1-\bar\alpha_t}\,\hat\varepsilon)/\sqrt{\bar\alpha_t}$,这就是去噪估计 $D$,再往回走一步。所以那个「误差被噪声水平放大」照样发生在 DDPM 里,只是没显式叫它 $D$。 > > DDPM 却工作得好,靠三样把放大扛住:一是它是 VP、输入不爆,网络好训、$\hat\varepsilon$ 预测得准,误差 $F_\theta-\varepsilon$ 本身小;二是走 1000 步、每步只挪一点,单步的放大误差很小,且大 $\sigma$ 处走偏后面还能纠回(§3);三是大 $\sigma$ 处去噪估计本就是「一堆图的模糊平均」,精度要求低,放大点无伤大雅。三样合起来把放大稀释掉了。 > > EDM 非要正面治,是因为它只花 35 次网络求值(约 18 步)。步子一大,单步误差没法再靠上千步平摊冲淡,大 $\sigma$ 那头的放大就从「无伤大雅」变「要命」;何况 EDM 走 VE、输入端还额外爆。于是让网络随 $\sigma$ 在「预测噪声」和「预测干净图」间自动切换(大 $\sigma$ 改预测干净图、躲开放大),少步也稳。这正是 preconditioning 干的活。 ## §5.2 skip 连接与 $D_\theta$ 的形式 先讲 skip 连接是什么。**skip 连接(跳跃连接)是套在整个网络外面的一条旁路,不是 U-Net 内部层与层之间那种 skip**:输入兵分两路,一路不进网络、直达出口,一路进网络,两路在出口相加。 ``` x ──┬── 乘 c_skip ────────────────────┐ │ (相加)──→ D_θ(x;σ) └── 乘 c_in ──→ 网络 F_θ ──→ 乘 c_out ──┘ ``` 按训练时一次前向的发生顺序,每个值乘在哪: 1. 合成带噪图 $x=y+n$($y$ 干净图,$n$ 是方差 $\sigma^2$ 的高斯噪声)。 2. 把 $\sigma$ 代进四条写死的公式,得四个数 $c_{in}$、$c_{skip}$、$c_{out}$、$c_{noise}$。这四条公式以 $\sigma$ 为自变量,$\sigma$ 代进去就出数,不是训练出来的参数;具体形状和推导在 §5.4。 3. $x$ 乘 $c_{in}$ 喂进网络,$c_{noise}$ 一起喂进去当条件(告诉网络当前噪声多大),网络吐出裸输出 $F_\theta$。 4. 裸输出乘 $c_{out}$。 5. 原始的 $x$(没乘过 $c_{in}$ 的那份)乘 $c_{skip}$,这一下就是旁路。 6. 第 4、5 步的结果相加,得去噪估计 $D_\theta$,拿它和 $y$ 算 L2 损失(论文式(2),就是 §1.2 里定义去噪器的那条 L2 去噪误差式),反传只更新 $F_\theta$ 的权重。 采样时每步同样走第 2 到 6 步拿到 $D_\theta(x_i;\sigma_i)$,代进 §3 的斜率 $d_i=\dfrac{x_i-D_\theta}{\sigma_i}$ 往前走。把第 6 步写成一条式子,就是论文式(7): > [!danger] EDM 论文式(7) · 带 preconditioning 的去噪器 > $D_\theta(x;\sigma)=c_{skip}(\sigma)\,x+c_{out}(\sigma)\,F_\theta\big(c_{in}(\sigma)\,x;\ c_{noise}(\sigma)\big)$ 逐项对回上面的流程:$c_{skip}(\sigma)\,x$ 是旁路(第 5 步),$F_\theta$ 是要训练的裸网络,$c_{in}$ 缩放它的输入(第 3 步),$c_{out}$ 缩放它的输出(第 4 步),$c_{noise}$ 是喂给网络的条件数。 再讲为什么要加这套东西。§5.1 盯的是输出端(误差被 $\sigma$ 放大),这里换个视角,盯网络本身,账分三步: ① 论文式(2)(§1.2 去噪器的定义)是对每个 $\sigma$ 各自定义一个最优去噪器(论文原文就写 separately for every $\sigma$),理论上每档是一道独立的题,严格讲每档配一套参数才最对口(`DDIM 03_生成过程_不用重训` §6 的 Theorem 1 正是靠「参数不跨时间步共享」立住的)。 ② 工程上从 DDPM 到 EDM 都是一个网络通吃所有档位,靠容量够大、外加把噪声水平报给它当条件。 ③ 但容量够大不等于学得动:$\sigma$ 从 0.002 到 80,输入幅度差出几个量级,活也从「挑一点小噪声」变到「凭空画整张图」,一套权重同时吃这么大跨度的一族题,照样难训。 四个缩放干的就是把每档的题面调理到学得动:$c_{in}$ 压输入幅度,$c_{skip}$ 按档位换挡,$c_{out}$ 配挡缩放网络该补的量,$c_{noise}$ 报档位。和 §5.1 是同一件事的两个视角:那边看误差放大多狠,这边看题目多难学。 $c_{skip}$ 怎么换挡,预览 §5.4 Table 1 里它那条(怎么推出来的到 §5.4 讲): $c_{skip}(\sigma)=\frac{\sigma_{data}^2}{\sigma^2+\sigma_{data}^2}$ 验两头:$\sigma$ 很小时,分母里 $\sigma^2$ 可忽略,分子分母几乎相等,$c_{skip}\approx1$,旁路全开;$\sigma$ 很大时,分母被 $\sigma^2$ 统治,$c_{skip}\approx0$,旁路关死。挡位是公式代着 $\sigma$ 自动换的,中间没有任何开关和判断。 两头网络各自在学什么,一步代数看清。理想时去噪输出该等于论文式(2) 的目标 $y$,把论文式(7) 右边代进去: $c_{skip}\,x+c_{out}\,F_\theta=y$ 解出网络该输出什么。两边减 $c_{skip}\,x$: $c_{out}\,F_\theta=y-c_{skip}\,x$ 两边除以 $c_{out}$: $F_\theta=\frac{y-c_{skip}\,x}{c_{out}}$ 两头代入。大 $\sigma$ 一头($c_{skip}\approx0$):旁路抄过去的几乎是零,目标是 $\dfrac{y}{c_{out}}$,网络学的是整张干净图本身(大 $\sigma$ 下 $x$ 几乎纯噪声,这张图只能是各种可能图的平均糊图,§2)。小 $\sigma$ 一头($c_{skip}\approx1$):旁路抄过去的是整张 $x$、大头就是干净图,目标是 $\dfrac{y-x}{c_{out}}$,代 $x=y+n$ 得 $y-x=-n$,网络学的是把混在输入里的噪声挑出来。**网络的学习目标随 $\sigma$ 连续换挡:大 $\sigma$ 学画整张干净图,小 $\sigma$ 学挑出输入里的噪声**,这就是 §5.1 说的「在预测干净图和预测噪声之间取舍」。这条目标式正是 §5.3 论文式(8) 的有效训练目标,下一节连同损失权重一起正式推。 > [!example] 接 §5.1:旧办法是这套结构的「系数锁死版」 > §5.1 的旧还原式 $D=x-\sigma F_\theta$ 对着论文式(7) 逐项对号:$x$ 前系数是 1,即 $c_{skip}=1$,旁路永远全开;$F_\theta$ 前系数是 $-\sigma$,即 $c_{out}=-\sigma$,随 $\sigma$ 一路涨,误差就是这么被放大的。旧办法不是没有这套结构,是把系数锁死在坏挡位上;EDM 把系数放开成 $\sigma$ 的函数,按档位换挡。 ## §5.3 用 $F_\theta$ 写损失,看清网络到底在学什么 这一步:§5.2 定了网络的形式(论文式(7)),但损失还挂在成品 $D_\theta$ 头上,看不见裸网络 $F_\theta$ 被逼着学什么。这一节把论文式(7) 代进损失、整理成 $F_\theta$ 的形式(论文式(8)),让两样东西露出来:网络的有效训练目标(它实际在拟合什么)、每档的有效权重(每个 $\sigma$ 在总账里实际占多重)。§5.4 定缩放、§6 定权重,都从这条式子出发。 先把整体训练损失立起来。论文式(2)(§1.2 去噪器的定义)管的是单个 $\sigma$ 档位上的 L2 误差;训练要跑遍所有档位,于是多出两个新符号:$p_{train}(\sigma)$ 是训练时抽噪声档位用的分布(哪些 $\sigma$ 常被抽到),$\lambda(\sigma)$(读「拉姆达」)是每档误差配的权重(这一档的误差在总账里算多重)。两个旋钮的具体取值到 §6 才定,这里先当未知数摆着。整体损失就是把论文式(2) 的单档误差按档位加权取期望: $L=\mathbb E_{\sigma,y,n}\Big[\lambda(\sigma)\,\big\lVert D_\theta(y+n;\sigma)-y\big\rVert_2^2\Big]$ ($\sigma\sim p_{train}$,$y\sim p_{data}$,$n\sim\mathcal N(0,\sigma^2 I)$。范数右下角的小 2 是型号标签,标明用的是 L2 范数:各分量平方求和再开根的长度;右上角的 2 才是平方。全篇范数都是 L2,论文式(8) 也写着这个下标;本文后文书写从简、省略下标。) 这一步:把论文式(7) 代进 $D_\theta$ 的位置,论文式(7) 里的 $x$ 就是这里的带噪图 $y+n$。范数外的 $\lambda$ 和期望原样带着,下面几行只写范数里那坨: $c_{skip}(y+n)+c_{out}F_\theta\big(c_{in}(y+n);c_{noise}\big)-y$ 这一步:整理形状,目的是摆成「$F_\theta$ 减某个目标」的样子,网络在学什么才看得见。含 $F_\theta$ 的项留在头里,剩下两项 $c_{skip}(y+n)-y$ 归拢成一坨、提个负号写成减法: $c_{out}F_\theta\big(c_{in}(y+n);c_{noise}\big)-\big(y-c_{skip}(y+n)\big)$ 这一步:给后一项凑公因子。乘一个 $c_{out}$ 再除一个 $c_{out}$(乘除同一个数,值不变),两项就都带上 $c_{out}$,提到最外面: $c_{out}\Big(F_\theta\big(c_{in}(y+n);c_{noise}\big)-\frac{1}{c_{out}}\big(y-c_{skip}(y+n)\big)\Big)$ 这一步:套回范数,把 $c_{out}$ 提出去。范数的平方让提出的系数变成二次方($\lVert c_{out}\,v\rVert^2=c_{out}^2\lVert v\rVert^2$:范数是长度,乘系数长度跟着翻倍,平方后系数也平方),再把范数外一直带着的 $\lambda$ 写回来: $\lambda\,c_{out}^2\,\Big\lVert F_\theta\big(c_{in}(y+n);c_{noise}\big)-\frac{1}{c_{out}}\big(y-c_{skip}(y+n)\big)\Big\rVert^2$ 最后套上开头那层期望 $\mathbb E_{\sigma,y,n}$,就是论文式(8): > [!danger] EDM 论文式(8) · 用 $F_\theta$ 写的损失 > $\mathbb E_{\sigma,y,n}\Big[\underbrace{\lambda(\sigma)c_{out}(\sigma)^2}_{\text{有效权重}}\big\lVert\underbrace{F_\theta\big(c_{in}(\sigma)(y+n);c_{noise}(\sigma)\big)}_{\text{网络输出}}-\underbrace{\frac{1}{c_{out}(\sigma)}\big(y-c_{skip}(\sigma)(y+n)\big)}_{\text{有效训练目标}}\big\rVert_2^2\Big]$ 三块逐个读。有效权重 $\lambda c_{out}^2$:这一档在总损失里实际占的分量,$\lambda$ 是明面上配的权重,$c_{out}^2$ 是论文式(7) 的结构在提出系数时附赠的,两个相乘才是真实分量。网络输出:$F_\theta$ 拿到的就是 §5.2 流程第 3 步喂进去的东西。有效训练目标 $\dfrac{1}{c_{out}}\big(y-c_{skip}(y+n)\big)$:网络真正被逼着拟合的东西。分子念作「从答案全量里减掉旁路」:$y$ 是完整答案,$c_{skip}(y+n)$ 是旁路在当前档位已经白送到出口的部分,相减剩下的缺口才归网络补;再除以 $c_{out}$,把这个缺口削成幅度 1(§5.4 原则二)。 把 $x=y+n$ 代回,有效目标就是 §5.2 末尾那条 $\dfrac{y-c_{skip}\,x}{c_{out}}$。§5.2 是从「理想时输出该等于 $y$」倒推的,这里是从损失里正面整理出来的,同一个东西、两条来路,「大 $\sigma$ 学画整张干净图、小 $\sigma$ 学挑噪声」的结论原样成立。**选缩放函数,就是让这个目标好学**(§5.4 干这个);有效权重那块,则是 §6 调 $\lambda$ 的出发点。 ## §5.4 四个缩放怎么定 这一步:论文式(8) 已经把网络输入和有效目标摆上明面,这一节把四个缩放逐个定下来。前三个是推出来的,靠三条原则:原则一「输入单位方差」、原则二「目标单位方差」、原则三「$c_{out}$ 尽量小(少放大)」;$c_{noise}$ 没有推导,纯经验。先给结果,再逐个推。 > [!danger] EDM 论文 Table 1 · EDM 的 preconditioning > $c_{in}(\sigma)=\frac{1}{\sqrt{\sigma^2+\sigma_{data}^2}},\qquad c_{skip}(\sigma)=\frac{\sigma_{data}^2}{\sigma^2+\sigma_{data}^2}$ > $c_{out}(\sigma)=\frac{\sigma\cdot\sigma_{data}}{\sqrt{\sigma^2+\sigma_{data}^2}},\qquad c_{noise}(\sigma)=\frac14\ln(\sigma)$ 推导前先摆齐用到的量:$\sigma_{data}$ 是数据本身的标准差(从数据集测出来的常数,CIFAR-10 上取 0.5),所以干净图 $y$ 方差是 $\sigma_{data}^2$;噪声 $n$ 方差是 $\sigma^2$;$y$ 和 $n$ 互相独立,独立的两块相加时方差直接相加:$\mathrm{Var}(y+n)=\sigma_{data}^2+\sigma^2$。 定 $c_{in}$。原则一:网络输入要单位方差(论文式114–117)。§5.1 说过输入端的毛病是 $y+n$ 的幅度随 $\sigma$ 一路涨,网络吃幅度乱变的输入不好训。网络实际吃的是 $c_{in}(y+n)$(§5.2 流程第 3 步)。先算它的方差,常数提出方差时带平方: $\mathrm{Var}\big[c_{in}(y+n)\big]=c_{in}^2\,(\sigma_{data}^2+\sigma^2)$ 要求它等于 1: $c_{in}^2\,(\sigma_{data}^2+\sigma^2)=1$ 解出: $c_{in}=\frac{1}{\sqrt{\sigma^2+\sigma_{data}^2}}$ 念成人话:分母 $\sqrt{\sigma^2+\sigma_{data}^2}$ 正是带噪输入 $x$ 自己的标准差(数据方差加噪声方差再开方),所以 $c_{in}$ 就是「$x$ 的标准差的倒数」。任何东西乘上自己标准差的倒数,幅度都变成 1;$\sigma$ 变,$x$ 的标准差跟着变,$c_{in}$ 也跟着变,乘积恒为 1。 验两头:$\sigma$ 小时约等于 $\dfrac{1}{\sigma_{data}}$,一个温和的固定缩放;$\sigma$ 大时约等于 $\dfrac{1}{\sigma}$,正好把爆掉的输入压回单位大小。 定 $c_{out}$ 和 $c_{skip}$ 的关系。原则二:有效目标也要单位方差(论文式118–123)。输入端调平了,输出端同理:论文式(8) 的有效目标是网络被逼着拟合的东西,它的幅度也不能随 $\sigma$ 乱变。先整理目标的分子,把 $c_{skip}(y+n)$ 拆开、按 $y$ 和 $n$ 归拢: $y-c_{skip}(y+n)=(1-c_{skip})\,y-c_{skip}\,n$ 右边两块独立,方差相加、各自的系数提出来带平方: $\mathrm{Var}\big[(1-c_{skip})\,y-c_{skip}\,n\big]=(1-c_{skip})^2\sigma_{data}^2+c_{skip}^2\sigma^2$ 有效目标是这坨再除以 $c_{out}$,除以常数、方差除它的平方,要求结果为 1,整理过来就是: $c_{out}^2=(1-c_{skip})^2\sigma_{data}^2+c_{skip}^2\sigma^2$ 这条关系念成人话:$c_{out}(\sigma)$ 就是「答案原料 $y-c_{skip}x$ 在档位 $\sigma$ 下的标准差」,而任何东西除以自己的标准差,幅度就变成 1。于是每个档位的标准答案被削成同一个大小:大 $\sigma$ 时原料是整张 $y$、小 $\sigma$ 时原料只是那点 $-n$,除完全都幅度 1,答案大小一致,一套权重才学得动,这就是原则二的目的。幅度也没有丢:论文式(7) 里网络输出会再乘回 $c_{out}$(训练时除小了教,使用时乘大了还原)。 注意到这只是一条方程、两个未知数:$c_{out}$ 和 $c_{skip}$ 被绑在一起,但谁都还没定死,差一个条件。 定 $c_{skip}$。原则三:在上面的关系成立的前提下,挑让 $c_{out}$ 最小的那个 $c_{skip}$(论文式124–131)。为什么要它最小:论文式(7) 里网络输出乘 $c_{out}$ 送到出口,网络的误差也跟着乘 $c_{out}$ 传出去(§5.1 整节都在说这个放大),所以 $c_{out}$ 越小、误差被放大得越少。把上式当成 $c_{skip}$ 的函数,先求导: $\frac{d\,(c_{out}^2)}{d\,c_{skip}}=-2\,(1-c_{skip})\,\sigma_{data}^2+2\,c_{skip}\,\sigma^2$ 最小值处导数为零,令它等于零: $-2\,(1-c_{skip})\,\sigma_{data}^2+2\,c_{skip}\,\sigma^2=0$ 解出: $c_{skip}=\frac{\sigma_{data}^2}{\sigma^2+\sigma_{data}^2}$ 正是 §5.2 预览的那条拨杆公式。回代关系式定 $c_{out}$,代入 $1-c_{skip}=\dfrac{\sigma^2}{\sigma^2+\sigma_{data}^2}$: $c_{out}^2=\frac{\sigma^4\sigma_{data}^2+\sigma_{data}^4\sigma^2}{(\sigma^2+\sigma_{data}^2)^2}$ 分子提出公因子 $\sigma^2\sigma_{data}^2$ 后剩 $(\sigma^2+\sigma_{data}^2)$,和分母约掉一层: $c_{out}^2=\frac{\sigma^2\,\sigma_{data}^2}{\sigma^2+\sigma_{data}^2}$ 开根: $c_{out}=\frac{\sigma\,\sigma_{data}}{\sqrt{\sigma^2+\sigma_{data}^2}}$ 验两头:$\sigma$ 小时 $c_{out}\approx\sigma$,代回 §5.2 末尾的有效目标 $\dfrac{-n}{c_{out}}\approx\dfrac{-n}{\sigma}$,正是单位幅度的标准噪声,和旧办法「预测归一化噪声」在小 $\sigma$ 处不谋而合;$\sigma$ 大时 $c_{out}\approx\sigma_{data}$,放大系数封顶在数据标准差、不再随 $\sigma$ 涨,§5.1 ③ 说的「封顶」就是这条。 用占比说最直观:$c_{out}$ 就是网络路在成品里的占比。论文式(7) 出口两路相加,网络路的分量是 $c_{out}F_\theta$($F_\theta$ 幅度恒为 1,所以这路的大小就由 $c_{out}$ 定),旁路的分量是 $c_{skip}x$。大 $\sigma$ 时 $c_{out}$ 顶到 $\sigma_{data}$、旁路关死,成品几乎全是网络画的,网络路占比大;小 $\sigma$ 时 $c_{out}\approx\sigma$ 很小、旁路全开,成品大头是旁路抄来的输入,网络路只占一点零头修正。缩完的有效目标本身恒为 1、不随 $\sigma$ 变,所有随 $\sigma$ 的此消彼长,全由 $c_{out}$(配着 $c_{skip}$)在成品里表达。 定 $c_{noise}$。它没有原则可推:前面三条都是方差账,而 $c_{noise}$ 不乘在任何信号上(§5.2 流程第 3 步里它是喂给网络的条件数,不是乘数),方差账轮不到它。它的活只是把 $\sigma$ 换算成一个数值范围合适的数报给网络,而直接喂 $\sigma$ 本身不合适:0.002 到 80 跨了四个多量级。取对数把量级压平、再乘四分之一缩一缩: $c_{noise}(\sigma)=\frac{1}{4}\ln\sigma$ 为什么偏偏是四分之一,论文没有解释,就是试出来效果好的经验值(Table 1 直接给结果)。 到此四条全齐,它们就是 §5.2 流程第 2 步里「把 $\sigma$ 代进去就出数」的那四条写死的公式。 ## §5.5 意义 这一步:四个缩放定完了,看它到底买来什么。论文做了逐项消融实验(Table 2:从基线出发,把各项改进一项项叠上去,每叠一项测一次 FID。FID 是生成质量分数,越低越好;全表在 §7.3)。单独换上这套 preconditioning 的那一格是配置 D:FID 从 2.08 到 2.09,基本没动。 看着白忙,其实买来的是「稳」:输入和有效目标的幅度被钉在单位方差、误差放大被压到最小,训练全程不飘。有了这个底子,§6 才敢大改损失加权和噪声分布(配置 E,FID 降到 1.88)而不出乱子。**所以 preconditioning 是「地基」,真正把 FID 顶上去的是 §6 的损失加权和噪声分布。** ## 本节一条线 带噪输入幅度随 $\sigma$ 剧变,一套权重要通吃所有档位,直接训 $D$ 不好训;EDM 在网络外面套一条旁路,输入兵分两路、出口相加,$D_\theta=c_{skip}x+c_{out}F_\theta(c_{in}x;c_{noise})$(论文式(7)),网络的学习目标随 $\sigma$ 在「挑噪声」和「画整张干净图」之间连续换挡;用论文式(8) 看清网络的有效目标和每档的有效权重 $\lambda c_{out}^2$,再由「输入单位方差 → $c_{in}$、目标单位方差 → $c_{out}$ 含 $c_{skip}$、$c_{out}$ 最小 → $c_{skip}$」推出四个缩放($c_{noise}$ 经验)。作用是让训练稳,为 §6 铺路。