【阅读】Diffusion Models - Introduction

Diffusion Models


实验效果

说明 生成图
MNIST,小模型,普通采样
MNIST,加速采样,觉得好看就用 2 的幂,后来知道可以用 DDIM 解释(;生成种类单一
Cifar10,UNet 比较小,所以学习能力不是很强(
跑着玩~

DDPM

参考如下,调整了一下叙述逻辑
苏剑林. (Jun. 13, 2022). 《生成扩散模型漫谈(一):DDPM = 拆楼 + 建楼 》
苏剑林. (Jul. 19, 2022). 《生成扩散模型漫谈(三):DDPM = 贝叶斯 + 去噪 》
Weng, Lilian. (Jul 2021). What are diffusion models? Lil'Log.

给定图像 \(\boldsymbol{x}_0\),定义 \(T\) 步的马尔可夫过程

\[q(\boldsymbol{x} _t \vert \boldsymbol{x} _{t-1}) = \mathcal{N}(\boldsymbol{x} _t; \sqrt{1 - \beta^2 _t} \boldsymbol{x} _{t-1}, \beta_t^2\boldsymbol{I}) \tag{1} \]

其中每一步的 \(\beta_t>0\) 且很接近 \(0\),即单步添加的噪声都不大。对均值设计为 \(\sqrt{1 - \beta_t^2}\),可以使最终推导的式子为关于 \(\boldsymbol{x}_0\) 的正态分布
\(\alpha_t = \sqrt{1-\beta^2 _t},\bar{\alpha}_t = \alpha_1\cdots\alpha_t, \bar{\beta}_t = \sqrt{1-\bar{\alpha}_t^2}\)
The reparameterization trick,改写正态分布为 \(z=μ+σϵ,\ ϵ∼N(0,1)\) 形式

\[\begin{aligned} \boldsymbol{x}_t &= \alpha_t\boldsymbol{x}_{t-1} + \sqrt{1 - \alpha_t^2}\boldsymbol{\epsilon}_{t-1} & \text{ ;where } \boldsymbol{\epsilon}_{t-1}, \boldsymbol{\epsilon}_{t-2}, \dots \sim \mathcal{N}(\boldsymbol{0}, \boldsymbol{I}) \\ &= \alpha_t \alpha_{t-1} \boldsymbol{x}_{t-2} + \sqrt{1 - (\alpha_t \alpha_{t-1})^2} \bar{\boldsymbol{\epsilon}}_{t-2} & \text{ ;where $\bar{\boldsymbol{\epsilon}}_{t-2}$ merges two Gaussians (*).} \\ &= \dots \\ &= \bar{\alpha}_t\boldsymbol{x}_0 + \bar{\beta}_t\boldsymbol{\epsilon} & \text{ ; $\boldsymbol{ϵ}\sim\mathcal{N}(\boldsymbol{0}, \boldsymbol{I})$} \\ \end{aligned} \]

(*) Merging \(\mathcal{N}(\boldsymbol{0}, \sigma_1^2\boldsymbol{I})\) and \(\mathcal{N}(\boldsymbol{0}, \sigma_2^2\boldsymbol{I})\) leads to \(\mathcal{N}(\boldsymbol{0}, (\sigma_1^2 + \sigma_2^2)\boldsymbol{I})\)

\[q(\boldsymbol{x} _t|\boldsymbol{x} _0)=\mathcal{N}(\boldsymbol{x} _t;\bar{\alpha} _t \boldsymbol{x} _0,\bar{\beta} _t^2 \boldsymbol{I}) \tag{2} \]

在合适的参数下,我们会做到令 \(\bar{\alpha}_t\approx 0\),使得 \(\boldsymbol{x}_T\) 大约服从标准正态分布
训练神经网络 \(\boldsymbol{\epsilon} _{\boldsymbol{\theta}}(\boldsymbol{x} _t, t)\) 直接估计式 \((2)\) 意义下扩散过程施加于图像的噪声,反得对 \(\boldsymbol{x} _0\) 的估计值 \(\bar{\boldsymbol{\mu}}(\boldsymbol{x} _t)\) 为:

\[\boldsymbol{x} _0\approx\bar{\boldsymbol{\mu}}(\boldsymbol{x} _t) = \frac{1}{\bar{\alpha} _t}\left(\boldsymbol{x} _t - \bar{\beta} _t \boldsymbol{\epsilon} _{\boldsymbol{\theta}}(\boldsymbol{x} _t, t)\right) \tag{3} \]

现在依据 \(p(\boldsymbol{x} _{t-1} \vert \boldsymbol{x} _t)\) 做逆向过程,先引入条件 \(\boldsymbol{x} _{0}\)

\[\begin{aligned} p(\boldsymbol{x} _{t-1}|\boldsymbol{x} _t, \boldsymbol{x} _0) &= \frac{p(\boldsymbol{x} _{t}|\boldsymbol{x} _{t-1})p(\boldsymbol{x} _{t-1}|\boldsymbol{x} _{0})}{p(\boldsymbol{x} _{t}|\boldsymbol{x} _{0})} \\ &= \mathcal{N}\left(\boldsymbol{x} _{t-1};\frac{\alpha_t\bar{\beta} _{t-1}^2}{\bar{\beta} _t^2}\boldsymbol{x} _t + \frac{\bar{\alpha} _{t-1}\beta_t^2}{\bar{\beta} _t^2}\boldsymbol{x} _0,\frac{\bar{\beta} _{t-1}^2\beta_t^2}{\bar{\beta} _t^2} \boldsymbol{I}\right) \end{aligned} \tag{4} \]

生成

\((3)\) 代入式 \((4)\),得逆向扩散过程为:

\[\begin{aligned} p(\boldsymbol{x} _{t-1}|\boldsymbol{x} _t) &\approx p(\boldsymbol{x} _{t-1}|\boldsymbol{x} _t, \boldsymbol{x} _0=\bar{\boldsymbol{\mu}}(\boldsymbol{x} _t)) \\ &= \mathcal{N}\left(\boldsymbol{x} _{t-1}; \frac{\alpha_t\bar{\beta} _{t-1}^2}{\bar{\beta} _t^2}\boldsymbol{x} _t + \frac{\bar{\alpha} _{t-1}\beta_t^2}{\bar{\beta} _t^2}\bar{\boldsymbol{\mu}}(\boldsymbol{x} _t),\frac{\bar{\beta} _{t-1}^2\beta_t^2}{\bar{\beta} _t^2} \boldsymbol{I}\right) \\ &= \mathcal{N}\left(\boldsymbol{x} _{t-1}; \frac{1}{\alpha_t}\left(\boldsymbol{x} _t - \frac{\beta_t^2}{\bar{\beta} _t}\boldsymbol{\epsilon} _{\boldsymbol{\theta}}(\boldsymbol{x}_t, t)\right),\frac{\bar{\beta} _{t-1}^2\beta_t^2}{\bar{\beta} _t^2} \boldsymbol{I}\right) \end{aligned} \tag{5} \]

由此,我们可以从标准正态分布中采样 \(\boldsymbol{x}_T\),进行逆向扩散过程后得到图像

训练

由式 \((3)\),定义损失函数为 \(\Vert \boldsymbol{x} _0 - \bar{\boldsymbol{\mu}}(\boldsymbol{x} _t)\Vert^2 = \Vert \boldsymbol{\varepsilon} - \boldsymbol{\epsilon} _{\boldsymbol{\theta}}(\boldsymbol{x} _t, t)\Vert^2\),即:

\[\mathbb{E} _{\boldsymbol{x} _0,\boldsymbol{\varepsilon}\sim\mathcal{N}(\boldsymbol{0}, \boldsymbol{I}),t}\left[\left\Vert\boldsymbol{\varepsilon} - \boldsymbol{\epsilon} _{\boldsymbol{\theta}}(\bar{\alpha} _t \boldsymbol{x} _0 + \bar{\beta} _t \boldsymbol{\varepsilon}, t)\right\Vert^2\right] \tag{6} \]

补充说明

超参数
在 DDPM 中,\(T=1000\),且对于 \(\alpha_t\) 的选择,论文中使用的是 \(\alpha_t = \sqrt{1 - 0.02t/T}\)
一方面感性理解,欧氏距离用于度量图片有点粗糙了,除非两个图片很相近时效果会比较好;
另一方面,选择单调递减的 \(\alpha_t\),即当 \(t\) 越大,相邻图片差距越大:\(t\) 比较小时我们尽量令 \(\alpha_t\) 大一点,以便更适合用欧氏距离;当 \(t\) 比较大时,对于更接近噪声的东西我们可以适当增大 \(\boldsymbol{x}_{t-1}\)\(\boldsymbol{x}_t\) 的差距,对应的 \(\alpha_t\) 就会小一点。
上式代入 \(T=1000\)\(\bar{\alpha}_T\approx e^{-5}\),符合我们之前提到的 \(\bar{\alpha}_t\approx 0\) 的假设
“预估修正”
其实或许会对用 \(\bar{\boldsymbol{\mu}}(\boldsymbol{x}_t)\) 估计 \(\boldsymbol{x}_0\) 这一个想法感觉很超前,它看起来直接做了我们想做的全部事
实际上,这个估计模型一开始的表现肯定不咋地,但是它起到一个“前瞻性的预估作用”,大概感觉就是这个估计的框架设下了,接下来就是步步逼近就行了

VAE 观点

参考 苏剑林. (Jul. 06, 2022). 《生成扩散模型漫谈(二):DDPM = 自回归式VAE 》

简单的说,DDPM 相等于将 VAE 的编码和生成分解成 \(T\) 步:

\[\begin{aligned} &\boldsymbol{x} = \boldsymbol{x}_0 \to \boldsymbol{x}_1 \to \boldsymbol{x}_2 \to \cdots \to \boldsymbol{x}_{T-1} \to \boldsymbol{x}_T = \boldsymbol{z} \\ &\boldsymbol{z} = \boldsymbol{x}_T \to \boldsymbol{x}_{T-1} \to \boldsymbol{x}_{T-2} \to \cdots \to \boldsymbol{x}_1 \to \boldsymbol{x}_0 = \boldsymbol{x} \end{aligned} \]

DDIM

参考 苏剑林. (Jul. 27, 2022). 《生成扩散模型漫谈(四):DDIM = 高观点DDPM 》

个人另一种理解:

思考:DDPM 描述的是一个链状的贝叶斯网络,如果我们将其改为以 \(\boldsymbol{x} _0\) 为根、\(\{\boldsymbol{x} _{t}\} _{t=1}^{T}\) 为儿子的树形结构呢?
另一方面,只要你能保证生成的每一步没有太大的方差,生成精细程度就能有所保证(点名相对效果更模糊的 VAE
这大概就是为什么 DDPM 这种引入 \(t=1\sim T\) 以更多的步数换取每一步更小的方差,效果会优于 VAE 那种一步生成的原因

我们沿用已经训练好的模型,模型的训练实质上只依赖 \(q(\boldsymbol{x} _t|\boldsymbol{x} _0)=\mathcal{N}(\boldsymbol{x} _t;\bar{\alpha} _t \boldsymbol{x} _0,\bar{\beta} _t^2 \boldsymbol{I})\),将其作为我们的唯一条件,而不是马尔可夫链的推导结果(似乎也没法倒推,两个正态分布相减整不来)
直接考虑采样,推导 \(p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t, \boldsymbol{x}_0)\),只需满足

\[\int p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t, \boldsymbol{x}_0) p(\boldsymbol{x}_t|\boldsymbol{x}_0) {\rm d}\boldsymbol{x}_t = p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_0) \tag{7} \]

\(p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t, \boldsymbol{x}_0) = \mathcal{N}(\boldsymbol{x}_{t-1}; \kappa_t \boldsymbol{x}_t + \lambda_t \boldsymbol{x}_0, \sigma_t^2 \boldsymbol{I})\),待定系数解方程,以 \(\sigma_t\) 为参数,解 \(\kappa_t, \lambda_t\),代入式 \((3)\),得

\[p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t) \approx\mathcal{N}\left(\boldsymbol{x}_{t-1}; \frac{1}{\alpha_t}\left(\boldsymbol{x}_t - \left(\bar{\beta}_t - \alpha_t\sqrt{\bar{\beta}_{t-1}^2 - \sigma_t^2}\right) \boldsymbol{\epsilon}_{\boldsymbol{\theta}}(\boldsymbol{x}_t, t)\right), \sigma_t^2 \boldsymbol{I}\right) \tag{8} \]

观察:其中 \(\alpha_t=\frac{\bar{\alpha}_t}{\bar{\alpha}_{t-1}}\) 只是 \(\bar{\alpha}_t\) 序列的差商;引入了可变参数 \(\sigma_t\)
前者提醒我们,模型训练实质上只依赖 \(\bar{\alpha}\) 为参数的 \(q(\boldsymbol{x} _t|\boldsymbol{x} _0)\),意味着我们可以选择 \([1,2,\dotsb,T]\) 的任意子序列 \(\boldsymbol{\tau} = [\tau_1,\tau_2,\dots,\tau_{\dim(\boldsymbol{\tau})}]\) 做生成!推导:
现有 \(\bar{\alpha}_{\tau_1},\bar{\alpha}_{\tau_2},\cdots,\bar{\alpha}_{\dim(\boldsymbol{\tau})}\)

\[\begin{aligned} p(\boldsymbol{x}_{\tau_{i-1}}|\boldsymbol{x}_{\tau_i}) \approx \mathcal{N}\left(\boldsymbol{x}_{\tau_{i-1}}; \frac{\bar{\alpha}_{\tau_{i-1}}}{\bar{\alpha}_{\tau_i}}\left(\boldsymbol{x}_{\tau_i} - \left(\bar{\beta}_{\tau_i} - \frac{\bar{\alpha}_{\tau_i}}{\bar{\alpha}_{\tau_{i-1}}}\sqrt{\bar{\beta}_{\tau_{i-1}}^2 - {\sigma}_{\tau_i}^2}\right) \boldsymbol{\epsilon}_{\boldsymbol{\theta}}(\boldsymbol{x}_{\tau_i}, \tau_i)\right), {\sigma}_{\tau_i}^2 \boldsymbol{I}\right) \end{aligned} \tag{9} \]

然后是关于 \(\sigma\),当取 \(\sigma = 0\) 时,生成过程也就成了确定性生成,只与 \(\boldsymbol{x}_T = \boldsymbol{z}\) 和子序列有关
这就是 ddim 论文采用的生成方法

\[\begin{aligned}\boldsymbol{x}_{\tau_{i-1}} = \frac{\bar{\alpha}_{\tau_{i-1}}}{\bar{\alpha}_{\tau_i}}\left(\boldsymbol{x}_{\tau_{i}} - \left(\bar{\beta}_{\tau_{i}} - \frac{\bar{\alpha}_{\tau_i}}{\bar{\alpha}_{\tau_{i-1}}} \bar{\beta}_{\tau_{i-1}}\right) \boldsymbol{\epsilon}_{\boldsymbol{\theta}}(\boldsymbol{x}_{\tau_{i}}, \tau_{i})\right) \end{aligned} \tag{10} \]

条件控制生成

参考 苏剑林. (Aug. 30, 2022). 《生成扩散模型漫谈(九):条件控制生成结果 》

Classifier-Guidance

\(\boldsymbol{y}\) 为输入条件,考虑换成 \(p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t, \boldsymbol{y})\),由贝叶斯:

\[p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t, \boldsymbol{y}) = \frac{p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t)p(\boldsymbol{y}|\boldsymbol{x}_{t-1}, \boldsymbol{x}_t)}{p(\boldsymbol{y}|\boldsymbol{x}_t)} \]

注意到 \(p(\boldsymbol{y}|\boldsymbol{x}_{t-1}, \boldsymbol{x}_t)\)\(\boldsymbol{x}_t\) 本身就是 \(\boldsymbol{x}_{t-1}\) 生成的,直接扔掉,则有:

\[p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t, \boldsymbol{y}) = \frac{p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t)p(\boldsymbol{y}|\boldsymbol{x}_{t-1})}{p(\boldsymbol{y}|\boldsymbol{x}_t)} = p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t) \exp\Big({\log p(\boldsymbol{y}|\boldsymbol{x}_{t-1}) - \log p(\boldsymbol{y}|\boldsymbol{x}_t)}\Big) \tag{11} \]

\(p(\boldsymbol{y}|\boldsymbol{x}_t), p(\boldsymbol{y}|\boldsymbol{x}_{t-1})\) 就是分类,由之前的设计实际上 \(p(\boldsymbol{x}_t|\boldsymbol{x}_{t-1})\) 的方差足够小,意味着两者分到同类的概率比较大,即 \(p(\boldsymbol{y}|\boldsymbol{x}_t), p(\boldsymbol{y}|\boldsymbol{x}_{t-1})\) 比较接近,故考虑对 \(\exp\) 内用泰勒展开:\(f(\mathbf{x})=f\left(\mathbf{x}_{k}\right)+\left[\nabla f\left(\mathbf{x}_{k}\right)\right]^{T}\left(\mathbf{x}-\mathbf{x}_{k}\right)+o^{n}\)
有:

\[\log p(\boldsymbol{y}|\boldsymbol{x}_{t-1}) - \log p(\boldsymbol{y}|\boldsymbol{x}_t)\approx (\boldsymbol{x}_{t-1} - \boldsymbol{x}_t)\cdot\nabla_{\boldsymbol{x}_t} \log p(\boldsymbol{y}|\boldsymbol{x}_t) \]

实际上根据之前提到不同 \(t\) 共用同一套参数,所以展开项中应当有包含 \(t\) 的项,但是是不影响 \(\boldsymbol{x}_{t-1}\) 概率的常数项,就没写出

假设原来有:\(p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t)=\mathcal{N}(\boldsymbol{x}_{t-1};\boldsymbol{\mu}(\boldsymbol{x}_t),\sigma_t^2\boldsymbol{I})\propto \exp\Big(-\Vert \boldsymbol{x}_{t-1} - \boldsymbol{\mu}(\boldsymbol{x}_t)\Vert^2/2\sigma_t^2\Big)\),这里的 \(\boldsymbol{\mu}\) 只是关于 \(\boldsymbol{x} _t\) 的函数,不是之前提到的对 \(\boldsymbol{x} _0\) 的估计值

分别代入 \((11)\) 得到:

\[\begin{aligned} & p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t, \boldsymbol{y}) \propto \exp\Big(-\Vert \boldsymbol{x}_{t-1} - \boldsymbol{\mu}(\boldsymbol{x}_t) - \sigma_t^2 \nabla_{\boldsymbol{x}_t} \log p(\boldsymbol{y}|\boldsymbol{x}_t)\Vert^2/2\sigma_t^2\Big) \\ \overset{近似有}{\implies} & p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t, \boldsymbol{y}) \sim \mathcal{N}(\boldsymbol{x}_{t-1};\boldsymbol{\mu}(\boldsymbol{x}_t) + \sigma_t^2 \nabla_{\boldsymbol{x}_t} \log p(\boldsymbol{y}|\boldsymbol{x}_t),\sigma_t^2\boldsymbol{I}) \end{aligned} \]

从而将生成过程新增一项,变为:

\[\boldsymbol{x}_{t-1} = \boldsymbol{\mu}(\boldsymbol{x}_t) + {\color{skyblue}{\sigma_t^2 \nabla_{\boldsymbol{x}_t} \log p(\boldsymbol{y}|\boldsymbol{x}_t)}} + \sigma_t\boldsymbol{\varepsilon},\quad \boldsymbol{\varepsilon}\sim \mathcal{N}(\boldsymbol{0},\boldsymbol{I}) \tag{12.1} \]

而在论文 《Diffusion Models Beat GANs on Image Synthesis》 中,提到往上式梯度项引入缩放参数 \(\gamma\),可以更好地调节生成结果

\[\boldsymbol{x}_{t-1} = \boldsymbol{\mu}(\boldsymbol{x}_t) + {\color{skyblue}{\sigma_t^2 {\color{red}{\gamma}}\nabla_{\boldsymbol{x}_t} \log p(\boldsymbol{y}|\boldsymbol{x}_t)}} + \sigma_t\boldsymbol{\varepsilon},\quad \boldsymbol{\varepsilon}\sim \mathcal{N}(\boldsymbol{0},\boldsymbol{I}) \tag{12.2} \]

具体来说,当 \(γ>1\) 时,生成过程将使用更多的分类器信号,结果将会提高生成结果与输入信号 \(\boldsymbol{y}\) 的相关性,但是会相应地降低生成结果的多样性;反之,则会降低生成结果与输入信号之间的相关性,但增加了多样性。

我的想法:

朗之万方程可化为形式:\({X_{t+dt}} = X_t+\frac{dt}{\gamma} \frac{\partial E}{\partial X}+\frac{dt}{\gamma} \epsilon\)
对应到图像生成过程为 \(\boldsymbol{x}_{t-1} = \boldsymbol{x}_{t} + \frac{\epsilon}{2}\nabla_{\boldsymbol{x}} \log q(\boldsymbol{x}_t) + \sqrt{\epsilon}\boldsymbol{z}_t,\quad \boldsymbol{z}_t\sim {\cal N}(0,I)\),其中 \(q(\boldsymbol{x})\)\(\R^{\dim \boldsymbol{x}}\) 的概率分布,将其视作势能函数取负
可以发现它和 Classifier-Guidance 的生成式 \((12.1)\) 有点相似,甚至连系数的平方关系都是对的上的
大胆点想象,如果我们假设图像 \(\boldsymbol{x}\) 被限制在 \(\R^{\dim \boldsymbol{x}}\) 里运动,某个高维“条件空间”里的随机变量 \(\boldsymbol{y}\)\(\boldsymbol{x}\) 有引力作用,那么 \(p(\boldsymbol{y}|\boldsymbol{x})\) 是不是就刻画了这种势能呢?

Classifier-Free

DALL·E 2Imagen 一类的基础之一

还是考虑 \(p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t, \boldsymbol{y})\),对于 Classifier-Free 方案,由之前导出的形式直接定义:

\[\begin{aligned} p(\boldsymbol{x}_{t-1}|\boldsymbol{x}_t, \boldsymbol{y}) &= \mathcal{N}(\boldsymbol{x}_{t-1}; \boldsymbol{\mu}(\boldsymbol{x}_t, \boldsymbol{y}),\sigma_t^2\boldsymbol{I}) \\ \boldsymbol{\mu}(\boldsymbol{x}_t, \boldsymbol{y}) &= \frac{1}{\alpha_t}\left(\boldsymbol{x}_t - \frac{\beta_t^2}{\bar{\beta}_t}\boldsymbol{\epsilon}_{\boldsymbol{\theta}}(\boldsymbol{x}_t, \boldsymbol{y}, t)\right) \end{aligned} \]

样本集采样 \(\tilde{p}(\boldsymbol{x}_0,\boldsymbol{y})\),代价函数是:

\[\mathbb{E}_{\boldsymbol{x}_0,\boldsymbol{y}\sim\tilde{p}(\boldsymbol{x}_0,\boldsymbol{y}), \boldsymbol{\varepsilon}\sim\mathcal{N}(\boldsymbol{0}, \boldsymbol{I})}\left[\left\Vert\boldsymbol{\varepsilon} - \boldsymbol{\epsilon}_{\boldsymbol{\theta}}(\bar{\alpha}_t \boldsymbol{x}_0 + \bar{\beta}_t \boldsymbol{\varepsilon}, \boldsymbol{y}, t)\right\Vert^2\right] \]

优点是训练过程中加入更多参数,理论上输入信息越多越容易训练
它的缺点也是在训练过程中就引入了额外的输入 \(\boldsymbol{y}\),意味着每做一组信号控制,就要重新训练整个扩散模型

此外,Classifier-Free 方案也模仿 Classifier-Guidance 方案加入了 \(γ\) 参数的缩放机制来平衡相关性与多样性

考虑 Classifier-Guidance 原本的生成式:

\[\boldsymbol{x}_{t-1} \sim \mathcal{N}(\boldsymbol{x}_{t-1}; {\color{skyblue}{\boldsymbol{\mu}(\boldsymbol{x}_t) + \sigma_t^2 \nabla_{\boldsymbol{x}_t} \log p(\boldsymbol{y}|\boldsymbol{x}_t)}}, \sigma_t^2\boldsymbol{I}) \]

现在对其加入参数缩放,可看作分成了带 \(\boldsymbol{y}\) 和不带 \(\boldsymbol{y}\)、系数之和为 \(1\) 的两部分:

\[\boldsymbol{\mu}(\boldsymbol{x}_t) + \sigma_t^2 \gamma \nabla_{\boldsymbol{x}_t} \log p(\boldsymbol{y}|\boldsymbol{x}_t) = \gamma\left[\boldsymbol{\mu}(\boldsymbol{x}_t) + \sigma_t^2 \nabla_{\boldsymbol{x}_t} \log p(\boldsymbol{y}|\boldsymbol{x}_t)\right] - (\gamma - 1) \boldsymbol{\mu}(\boldsymbol{x}_t) \]

再看 Classifier-Free 的生成式:

\[\boldsymbol{x}_{t-1} \sim \mathcal{N}(\boldsymbol{x}_{t-1}; {\color{skyblue}{\boldsymbol{\mu}(\boldsymbol{x}_t, \boldsymbol{y})}} ,\sigma_t^2\boldsymbol{I}) \]

类比地,我们对 Classifier-Free 式的 \(\boldsymbol{\mu}(\boldsymbol{x}_t, \boldsymbol{y})\) 中的 \(\boldsymbol{\epsilon}_{\boldsymbol{\theta}}(\boldsymbol{x}_t, \boldsymbol{y}, t)\) 项,替换成:

\[\tilde{\boldsymbol{\epsilon}}_{\boldsymbol{\theta}}(\boldsymbol{x}_t, \boldsymbol{y}, t) = \gamma\boldsymbol{\epsilon}_{\boldsymbol{\theta}}(\boldsymbol{x}_t, \boldsymbol{y}, t) - (\gamma - 1) \boldsymbol{\epsilon}_{\boldsymbol{\theta}}(\boldsymbol{x}_t, t) \]

那不带条件 \(\boldsymbol{y}\),或者说,条件是全集的 \(\boldsymbol{\epsilon}_{\boldsymbol{\theta}}(\boldsymbol{x}_t, t)\) 是怎么得到的呢?我们可以新引入一个特定的输入 \(\boldsymbol{\phi}\),它对应的目标图像为全体图像,加到了模型的训练中,这样我们就可以认为 \(\boldsymbol{\epsilon}_{\boldsymbol{\theta}}(\boldsymbol{x}_t, t)=\boldsymbol{\epsilon}_{\boldsymbol{\theta}}(\boldsymbol{x}_t, \boldsymbol{\phi}, t)\)

posted @ 2023-01-04 18:29  zrkc  阅读(87)  评论(0编辑  收藏  举报