这一步:先把 EDM 的三个基本对象立起来(噪声水平 $\sigma$、加噪分布 $p(x;\sigma)$、去噪器 $D$),再把去噪器接回 score。本节是全单元最浅的入口,多是已学内容换个说法。 ## §1.1 噪声水平 $\sigma$ 与加噪分布 $p(x;\sigma)$ **$\sigma$ 是噪声水平,一个标量,本单元一切都沿着它排。** $p(x;\sigma)$ 是干净数据加上标准差 $\sigma$ 的高斯噪声之后的分布(论文叫 mollified distribution)。这就是 DDPM / Score-SDE 里那个「加噪后的边缘分布」,只是这里用噪声水平 $\sigma$ 来标记,而不是用时间 $t$。 「加噪」本身就是一行式子,全单元的第一块砖: $x=y+\sigma\,\varepsilon,\qquad \varepsilon\sim\mathcal N(0,I)$ $y$ 是干净图,$\varepsilon$ 是标准高斯噪声(每个像素独立抽一个,均值 0、标准差 1),$\sigma$ 把噪声撑大到想要的水平。另一种等价写法是 $x=y+n$,其中 $n=\sigma\varepsilon$ 就是方差 $\sigma^2$ 的高斯噪声(§1.2 论文式(2) 用这种写法,§5 用 $\sigma\varepsilon$ 的写法,混用不换意思)。这样加出来的带噪图 $x$,服从的分布就是上面的 $p(x;\sigma)$。 两头:$\sigma$ 很大时($\sigma_{max}$,EDM 取 80),噪声盖过一切,$p(x;\sigma_{max})$ 基本就是纯高斯噪声;$\sigma=0$ 时就是干净数据 $p_{data}$。数据本身的标准差记 $\sigma_{data}$:像素按惯例线性缩放到 $[-1,1]$ 后,实测数据的整体标准差约 0.5,所以 EDM 取 $\sigma_{data}=0.5$,当已知常数用。 生成的思路就是:从 $\sigma_{max}$ 的纯噪声 $x_0\sim\mathcal N(0,\sigma_{max}^2 I)$ 出发,沿着 $\sigma_0=\sigma_{max}>\sigma_1>\dots>\sigma_N=0$ 一路降噪声,走到 $\sigma=0$ 就得到一张数据。 ## §1.2 去噪器 $D(x;\sigma)$ 给一张噪声水平为 $\sigma$ 的带噪图 $x$,去噪器 $D(x;\sigma)$ 输出**这个水平下最该长成的干净图**。 严格说,$D$ 是让「L2 去噪误差」最小的那个函数:拿干净图 $y$、给它加噪声 $n$,让 $D$ 去还原 $y$,误差平方最小。 > [!danger] EDM 论文式(2) · 去噪器的定义 > $\mathbb E_{y\sim p_{data}}\,\mathbb E_{n\sim\mathcal N(0,\sigma^2 I)}\big\lVert D(y+n;\sigma)-y\big\rVert_2^2$ > $y$ 是干净训练图,$n$ 是噪声,$x=y+n$ 是带噪输入。让这个误差最小的 $D$,就是理想去噪器。 对照你训过的 CelebA DDPM:那时网络预测的是噪声 $\varepsilon$,**$D$ 是「直接预测干净图」的等价版本**。两者只差一步换算,后面 §5 的 preconditioning 会让网络在「预测噪声」和「预测干净图」之间灵活取舍。 ## §1.3 关键桥:去噪器就是 score 的化身 这是 §1 的核心,把去噪器接回 score。 > [!danger] EDM 论文式(3) · 去噪器与 score 的关系 > $\nabla_x\log p(x;\sigma)=\frac{D(x;\sigma)-x}{\sigma^2}$ 怎么读:score 等于「去噪后的干净估计 $D(x;\sigma)$」减去「当前带噪点 $x$」,再除以 $\sigma^2$。也就是**从 $x$ 指向 $D(x;\sigma)$ 的那个方向**(除以 $\sigma^2$ 定大小)。 接高斯 score:单个高斯 $\mathcal N(\mu,\sigma^2)$ 的 score 是 $\dfrac{\mu-x}{\sigma^2}$(指向均值 $\mu$)。这条式子长得一模一样,只是把「均值 $\mu$」换成了「去噪器的最佳猜测 $D(x;\sigma)$」。所以 score 指的就是「往哪走更像干净数据」,那个方向正是 $x\to D(x;\sigma)$。 反过来看也顺:把式子解出 $D$,得 $D(x;\sigma)=x+\sigma^2\,\nabla_x\log p(x;\sigma)$。去噪器 = 带噪点 + $\sigma^2\times$ score:score 指方向,$\sigma^2$ 定倍数,往数据方向推的量是「$\sigma^2$ 乘 score」那么多。 为什么这对 EDM 重要:后面的 ODE 和采样全都要用 score,而 score 可以直接用去噪器算出来(上式)。好处是 $D$ 比 score 好训(有明确的 L2 目标,就是上面的论文式(2))、幅度也好控。所以 EDM 的做法是**训一个去噪器 $D$,用的时候按论文式(3) 换成 score**。 顺带点破一个读到后面容易犯嘀咕的问题:DDPM 全程明着围绕分布转,EDM 却好像天天只在调系数、对方差。分布没有消失,账提前结在两条定理里: ① 本节这条:论文式(2) 的 L2 冠军是条件期望 $\mathbb E[y\mid x]$(所有可能原图的后验平均),「围绕分布找中心」被整个压缩进「做好 L2 回归」一个动作;再按论文式(3) 一移项,score 到手。 ② §2 那条:概率流 ODE 是照着「每个时刻的边缘分布恰好等于 $p(x;\sigma)$」反解出来的,沿它走,分布被自动押运到 $p_{data}$。 所以 §5 那些方差、缩放全是工程层的活,不找分布、只让 $D$ 学得动。一句收束:方差伺候回归,回归伺候 score,score 是分布的化身。 > [!note]- 论文式(3) 的推导:从高斯密度两步推到 Tweedie > **第一步:只有一张干净图的情形。** 设全世界只有一张干净图 $y$,加噪后 $x$ 的密度就是一个高斯($Z$ 是归一化常数,不含 $x$): > > $p(x)=\frac{1}{Z}\,e^{-\frac{(x-y)^2}{2\sigma^2}}$ > > 取 log,指数掉下来、乘法变减法: > > $\log p(x)=-\frac{(x-y)^2}{2\sigma^2}-\log Z$ > > 对 $x$ 求导:$\log Z$ 是常数,求导为零消失;平方项掉下来一个 $2(x-y)$,和分母里的 2 约掉;前面的负号乘进括号,把 $x-y$ 翻成 $y-x$: > > $\nabla_x\log p(x)=\frac{y-x}{\sigma^2}$ > > 分母的 $\sigma^2$ 就是这么来的:高斯指数里本来是 $2\sigma^2$,被求导掉下来的 2 约成 $\sigma^2$。这个情形下最优去噪就是直接报出 $y$,即 $D=y$,上式已经是论文式(3) 的形状。 > > **第二步:许多干净图的情形。** 真实的 $p(x;\sigma)$ 是每张干净图各自的高斯按 $p_{data}$ 加权平均: > > $p(x;\sigma)=\int p_{data}(y)\,\mathcal N(x;y,\sigma^2 I)\,\mathrm dy$ > > 用对数求导规则($\log u$ 的导数是 $\frac{u'}{u}$): > > $\nabla_x\log p(x;\sigma)=\frac{\nabla_x\,p(x;\sigma)}{p(x;\sigma)}$ > > 先算分子 $\nabla_x\,p$。$p$ 是一堆项加起来(积分 = 加法),导数对加法逐项进行、穿过积分号;$p_{data}(y)$ 不含 $x$,当常数系数跳过: > > $\nabla_x\,p(x;\sigma)=\int p_{data}(y)\,\nabla_x\mathcal N(x;y,\sigma^2 I)\,\mathrm dy$ > > 于是要算高斯本身的导数 $\nabla_x\mathcal N$(注意:第一步算的是「log 高斯」的导数,这里要的是「高斯本身」的导数,不是一回事)。高斯是个 $e$ 指数:$\mathcal N=\frac{1}{Z}e^{f}$,$f=-\frac{(x-y)^2}{2\sigma^2}$。$e^f$ 求导 = 复制自己一份,再乘指数的导数 $f'$,而 $f'$ 正是第一步算过的 $\frac{y-x}{\sigma^2}$: > > $\nabla_x\mathcal N=\mathcal N\cdot\frac{y-x}{\sigma^2}$ > > 代回积分: > > $\nabla_x\,p(x;\sigma)=\int p_{data}(y)\,\mathcal N(x;y,\sigma^2 I)\,\frac{y-x}{\sigma^2}\,\mathrm dy$ > > 再除以分母 $p(x;\sigma)$,分三小步。 > > 第一小步:除法搬进积分。积分变量是 $y$,$p(x;\sigma)$ 里没有 $y$,对这个积分它是常数;常数除进加法可以逐项除,所以 $\frac{1}{p(x;\sigma)}$ 搬进积分号、贴到每一项上。注意每一项内部是几个因子的乘积,除法在一项里只挂一次(除进乘法不是每个因子都除),挂在哪个因子上都行,这里故意挂在前两个因子上,为下一步拼出贝叶斯的形状: > > $\nabla_x\log p(x;\sigma)=\int \frac{p_{data}(y)\,\mathcal N(x;y,\sigma^2 I)}{p(x;\sigma)}\cdot\frac{y-x}{\sigma^2}\,\mathrm dy$ > > 第二小步:认出贝叶斯。贝叶斯公式本体是 $p(y\mid x)=\frac{p(y)\,p(x\mid y)}{p(x)}$。逐个对号:$p(y)$ 是抽到原图 $y$ 的概率,即 $p_{data}(y)$;$p(x\mid y)$ 是「给定原图 $y$,带噪图长成 $x$ 的概率」,加噪就是往 $y$ 上套高斯,即 $\mathcal N(x;y,\sigma^2 I)$;$p(x)$ 是带噪图自己的密度,即 $p(x;\sigma)$。三个位置全对上,积分里那坨分数就是后验 $p(y\mid x)$,「看到带噪图 $x$,反推原图是 $y$ 的概率」: > > $\nabla_x\log p(x;\sigma)=\int p(y\mid x)\,\frac{y-x}{\sigma^2}\,\mathrm dy$ > > 第三小步:拆积分。常数 $\frac{1}{\sigma^2}$ 提到积分外,$(y-x)$ 按减法拆成两个积分: > > $\nabla_x\log p(x;\sigma)=\frac{1}{\sigma^2}\left[\int y\,p(y\mid x)\,\mathrm dy-\int x\,p(y\mid x)\,\mathrm dy\right]$ > > 左半个是「值乘权重加起来」,正是期望的定义(微分方程 07_期望),权重为 $p(y\mid x)$,等于 $\mathbb E[y\mid x]$。右半个里 $x$ 不含 $y$、提到积分外,剩下的 $\int p(y\mid x)\,\mathrm dy$ 是概率密度全加起来,等于 1,所以右半个等于 $x$。合起来: > > $\nabla_x\log p(x;\sigma)=\frac{\mathbb E[y\mid x]-x}{\sigma^2}$ > > 最后:让 L2 误差最小的解就是条件期望(微分方程 11_条件期望与条件方差),即 $D(x;\sigma)=\mathbb E[y\mid x]$。代入上式就是论文式(3),论文自己的推导在附录 B.3。这条结论统计里叫 Tweedie 公式,是统计学的叫法,论文没用这个名字。 > [!note]- 另一条来路:从 Tweedie 1956 移项到论文式(3) > 统计学里有一条古老的公式:Tweedie 公式。Tweedie 是人名(读「特威迪」,英国统计学家 Maurice Tweedie),公式 1956 年由 Robbins 发表时冠了他的名,讲的是怎么从高斯加噪的观测里估计原值: > > $\mathbb E[y\mid x]=x+\sigma^2\,\nabla_x\log p(x;\sigma)$ > > 读法:对高斯加噪的观测 $x$,原值 $y$ 的最优估计(后验均值)= 观测本身 + 方差乘 score 的修正。统计学家当年关心的就是去噪。 > > 从它到论文式(3) 只差移项:左边 $\mathbb E[y\mid x]$ 就是 $D(x;\sigma)$(L2 冠军是条件期望,上一折叠末已认出),代入后两边减 $x$、除以 $\sigma^2$、左右对调,就落回论文式(3)(这两步在上一折叠已走过,不重推)。所以论文式(3) 不是 EDM 的新发明:这条古老的去噪公式移个项,就是扩散模型的桥。上面折叠里的混合密度推导,推的正是 Tweedie 公式本身。 > > 当年的 score 从哪来:1956 年统计处理的是一维数据,一堆带噪观测的密度直接画得出来(平滑直方图),取 log 求导,score 就算出来了,不需要学。公式本身不挑维度,从 1956 年到今天一直成立;变的只是 score 怎么弄到手:图像这种高维数据密度画不出来、score 算不出来,于是换成神经网络去学(NCSN/Score-SDE),学到手后照样代进这条公式用。 ## §1.4 用网络实现:$D_\theta$ 真正落地时,$D$ 用神经网络实现,记 $D_\theta(x;\sigma)$。网络外面还套了一层 preconditioning(缩放输入输出,§5 专讲),这里先把 $D_\theta$ 当成一个训好的去噪器。 ## 本节一条线 $\sigma$ 是噪声水平、$p(x;\sigma)$ 是加噪后的分布、$D(x;\sigma)$ 是该水平下的最优去噪器(论文式(2));一条桥 $\nabla_x\log p=\big(D-x\big)/\sigma^2$(论文式(3))把去噪器变成 score,形状就是高斯 score 把均值换成去噪输出。EDM 训 $D$、用时换成 score。