前言

本博客收集整理近年来一些常用的DDPM衍生模型,其特点是:

  1. 大多不需要重新训练,仅使用DDPM训练的UNet作噪声估计器;
  2. 聚焦于某个领域(如算法提速、图像恢复等);
  3. 大多不满足DDPM要求的马尔可夫性质;
  4. 数学推导过程依然是严格的,(区别于LDM)。

这些衍生模型拓展了扩散模型的应用领域,成为事实上的扩散模型大厦的基础。

Denoising Diffusion Implicit Model

本文主要参考自论文[1]。简单地说,DDIM不限制模型一定是马尔可夫的,去噪过程中下一步的样本直接来自于上一步的样本,因此原理上可以实现对随机过程的去随机化,即扩散过程将成为某个固定取值的确定性过程,保证使用相同输入得到的生成结果是相同的,这一性质有助于提高生成式模型的结果稳健性和效率。

DDIM是DDPM的一个极常用的变体,取消了DDPM所要求的扩散过程马尔可夫性质,直接对路径函数采样,极大地减少了扩散过程的采样步数,从原理上提高了扩散模型的实用性,与LDM相比,DDIM的数学过程更加严格。

优化目标

DDIM与DDPM共享同一个目标函数,即最大化对数似然函数,其形式如下:

arg minθEq[logpθ(x0)]arg minθEx0:Tqσ(x0:T)[logpθ(x0:T)+logqσ(x1:Tx0)]\argmin_{\boldsymbol{\theta}}\mathbb{E}_q[-\log p_{\boldsymbol{\theta}}(\mathbf{x}_0)]\geq\argmin_{\boldsymbol{\theta}}\mathbb{E}_{\mathbf{x}_{0:T}\sim q_\sigma(\mathbf{x}_{0:T})}[-\log p_{\boldsymbol{\theta}}(\mathbf{x}_{0:T})+\log q_\sigma(\mathbf{x}_{1:T}|\mathbf{x}_0)]

使用条件概率公式展开以上两项,可得:

{qσ(x1:Tx0)Z=qσ(xTx0)t=2Tqσ(xt1xt,x0)pθ(x0:T)=pθ(xT)t=1Tpθ(t)(xt1xt)\left\{\begin{aligned} q_\sigma(\mathbf{x}_{1:T}|\mathbf{x}_0)Z&=q_\sigma(\mathbf{x}_T|\mathbf{x}_0)\prod_{t=2}^Tq_\sigma(\mathbf{x}_{t-1}|\mathbf{x}_{t},\mathbf{x}_0)\\ p_{\boldsymbol{\theta}}(\mathbf{x}_{0:T})&=p_{\boldsymbol{\theta}}(\mathbf{x}_T)\prod_{t=1}^Tp_{\boldsymbol{\theta}}^{(t)}(\mathbf{x}_{t-1}|\mathbf{x}_{t}) \end{aligned}\right.

代入即可得到DDIM的优化目标函数:

arg minθEx0:Tqσ(x0:T)[logpθ(xT)+t=1Tlogpθ(t)(xt1xt)logqσ(xTx0)t=1Tlogqσ(xt1xt,x0)]\argmin_{\boldsymbol{\theta}}\mathbb{E}_{\mathbf{x}_{0:T}\sim q_\sigma(\mathbf{x}_{0:T})}[\log p_{\boldsymbol{\theta}}(\mathbf{x}_{T})+\sum_{t=1}^T\log p_{\bm{\theta}}^{(t)}(\mathbf{x}_{t-1}|\mathbf{x}_t)-\log q_\sigma(\mathbf{x}_T|\mathbf{x}_0)-\sum_{t=1}^T\log q_\sigma(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)]

化简

优化目标函数共有四项,其中第一项是热平衡图像即高斯噪声的对数概率;第三项是已知的噪声分布对数概率,满足:

{pθ(xT)=N(0,I)qσ(xTx0)=N(αTx0,(1αT)I)\left\{\begin{aligned} p_{\bm{\theta}}(\mathbf{x}_T)&=\mathcal{N}(0,\mathbf{I})\\ q_\sigma(\mathbf{x}_T|\mathbf{x}_0)&=\mathcal{N}(\sqrt{\alpha_T}\mathbf{x}_0,(1-\alpha_T)\mathbf{I}) \end{aligned}\right.

第二项与第四项分别对应了去噪过程(文中称为生成过程)和扩散过程,代入对应的条件概率公式后,即可得到DDIM的优化目标函数。

扩散过程

DDPM的论文中,推导扩散过程对图像施加高斯白噪声过程时,有一个重要的公式形式,即每一步的扩散条件概率都满足:

qσ(xtx0)=N(αtxt,(1αt)I)(*)q_\sigma(\mathbf{x}_{t}|\mathbf{x}_0)=\mathcal{N}(\sqrt{\alpha_t}\mathbf{x}_t,(1-\alpha_t)\mathbf{I})\tag{*}

利用条件概率公式,可写出:

qσ(xt1x0)=xtqσ(xtx0)qσ(xt1xt,x0)dxtq_\sigma(\mathbf{x}_{t-1}|\mathbf{x}_0)=\int_{\mathbf{x}_t}q_\sigma(\mathbf{x}_t|\mathbf{x}_0)q_\sigma(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)\mathrm{d}\mathbf{x}_t

为了保证对t{0,1,...,T}\forall t\in\{0,1,...,T\}都有公式(*)成立,需要满足:

qσ(xt1xt,x0)=N(αt1xt1+1αt1σt2xtαtx01αt,σt2I)(2)q_\sigma(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)=\mathcal{N}(\sqrt{\alpha_{t-1}}\mathbf{x}_{t-1}+\sqrt{1-\alpha_{t-1}-\sigma^2_t}\frac{\mathbf{x}_t-\sqrt{\alpha_t}\mathbf{x}_0}{\sqrt{1-\alpha_t}},\sigma^2_t\mathbf{I})\tag{2}

其中σt2\sigma^2_t是一个待定的参数,该参数在DDIM模型中发挥了较为重要的作用,具体的作用将在后续章节叙述。

生成过程

参考DDPM的逆过程,在利用去噪UNet网络完成对前一个时刻的噪声图像推断时,有:

x^0=1αˉt[xt1αˉtϵθ(xt,t)]x^0(xt,t)\mathbf{\hat{x}}_0=\frac{1}{\sqrt{\bar{\alpha}_t}}\left[\mathbf{x}_t-\sqrt{1-\bar{\alpha}_t}\bm{\epsilon_\theta}(\mathbf{x}_t,t)\right]\triangleq \mathbf{\hat{x}}_0(\mathbf{x}_t,t)

DDIM采用与扩散过程完全相同的噪声分布,只在第一步加入额外的高斯随机噪声,即有:

pθ(t)(xtx0)={N(x^0(xt,t),σ12I),t=1qσ(xt1xt,x^0(xt,t)),t>1p_{\bm{\theta}}^{(t)}(\mathbf{x}_t|\mathbf{x}_0)=\left\{\begin{aligned} &\mathcal{N}(\mathbf{\hat{x}}_0(\mathbf{x}_t,t),\sigma^2_1\mathbf{I})&,\quad t=1\\ &q_\sigma(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{\hat{x}}_0(\mathbf{x}_t,t))&,\quad t>1 \end{aligned}\right.

本步决定了DDIM的生成过程与扩散过程能够保持互为逆运算的关系,从而保证DDIM能够舍去概率模型退化为确定性模型,本步技巧将带来一个非常有用的性质,即DDIM不需要如同DDPM那样多的采样步骤(如T=1000T=1000),就可以生成质量相当的图像。

训练过程

与DDPM类似,DDIM仍然是仅在已知上一个时刻的噪声图像xt\mathbf{x}_t的前提下计算前一个时刻的噪声图像,有:

xt1=αt1α[xt1αtϵθ(xt,t)]+1αt1σt2ϵθ(xt,t)+σtz,zN(0,I)\mathbf{x}_{t-1}=\sqrt{\frac{\alpha_{t-1}}{\alpha}}\left[\mathbf{x}_t-\sqrt{1-\alpha_t}\bm{\epsilon_\theta}(\mathbf{x}_t,t)\right]+\sqrt{1-\alpha_{t-1}-\sigma^2_t}\bm{\epsilon_\theta}(\mathbf{x}_t,t)+\sigma_t\mathbf{z},\quad\mathbf{z}\sim\mathcal{N}(\mathbf{0,I})

其余计算过程与DDPM相同。

注意,这里的σt\sigma_t是一个可以设定的超参数

如果取定:

σt=(αt1αt)(1αt1αt)\sigma_t=\sqrt{\left(\frac{\alpha_{t-1}}{\alpha_t}\right)\left(1-\frac{\alpha_{t-1}}{\alpha_t}\right)}

上式将化简为:

xt1=1αt[xtβt1αˉtϵθ(xt,t)]+σtz,zN(0,I)(2)\mathbf{x}_{t-1}=\frac{1}{\sqrt{\alpha_t}}\left[\mathbf{x}_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\bm{\epsilon_\theta}(\mathbf{x}_t,t)\right]+\sigma_t\mathbf{z},\quad\mathbf{z}\sim\mathcal{N}(\mathbf{0,I})\tag{2}

与DDPM的生成过程完全相同,即DDIM退化为DDPM,生成过程是马尔可夫的,从本式也可以看到,DDIM并没有对DDPM训练得到的去噪UNet作任何改动,因此DDPM预训练得到的UNet权重可以直接用于DDIM的训练,而在训练过程中,也完全可以选取T=100T=100甚至更低的数值,极大减少了扩散模型的训练时间和推理时间。

去噪自编码器

与DDPM相同,DDIM也具有对图像在同维度空间下的描述提取能力,而因为DDIM可以退化为确定性模型,其描述提取能力更加强大。DDIM能够保证经扩散编码得到的隐空间图像能够被还原为原始图像,这一性质使得基于扩散模型的高层次任务成为可能。

建议译名

DDIM:去噪扩散推断模型

Denoising Diffusion Restoration Model

本文主要参考自文献[2],主要解决的问题是,如何让扩散模型像VAE一样,能够实现相同图像的复原输出,可以抽象为一个矩阵求逆的问题。

前情提要

图像恢复问题,可用拉直的方式表示为(式中的上箭头表示将图像按行列的某种方式展开为列向量),要从带有噪声n\mathbf{\vec{n}}的观测图像y\mathbf{\vec{y}}中恢复为理想的信号图像x\mathbf{\vec{x}}

y=Ax+n    x^=A1(yn)\mathbf{\vec{y}}=\mathbf{A}\mathbf{\vec{x}}+\mathbf{\vec{n}}\implies\mathbf{\vec{\hat{x}}}=\mathbf{A}^{-1}(\mathbf{\vec{y}}-\mathbf{\vec{n}})

因此,图像恢复可以表示为一个线性逆问题,
之所以要引入DDRM,是因为DDPM系列的模型都是从数据集的分布中不断采样、噪声估计,实现一个去噪样本的输出,该样本服从于数据集p(x0)p(\mathbf{x}_0)相同的分布,如公式(1)(2)所示,即对输入图像编码(加噪)后,再解码(去噪),得到的图像将不是输入图像。因此直接使用DDPM和DDIM不能解决图像恢复的问题,因此DDRM得以提出,主要就是解决线性逆运算的问题。

该模型事实上仍然沿用的逆问题的一般思路,即将图像拉直后,逐个像素求逆

生成过程

本模型不需要单独训练或者微调,直接在现有的DDPM基础上即可完成使用。图像恢复问题可以看作是条件引导的概率生成模型,此时条件是观测图像y\mathbf{y},生成图像x0\mathbf{x}_0的概率分布应当满足:

q(xtx0)=N(x0,σt2I)q(\mathbf{x}_t|\mathbf{x}_0)=\mathcal{N}(\mathbf{x}_0,\sigma^2_t\mathbf{I})

条件扩散过程应当与无条件的扩散过程结果相同(中间的步骤可以不同)。由此,作者构造了两个非常精妙的生成公式:

q(T)(xT(i)x0,y)={N[y(i),(σT2σy2si2)I],if si>0N[x0(i),σT2I],if si=0q(t)(xt(i)xt+1,x0,y)={N[x0(i)+1η2σtxt+1(i)x0(i)σt+1,η2σT2I],if si=0N[x0(i)+1η2σty(i)x0(i)σy/si,η2σT2I],if σt<σysiN[(1ηb)x0(i)+ηby(i),(σt2σy2si2)I],if σtσysi(3)\begin{aligned} q^{(T)}(\mathbf{\vec{x}}_T^{(i)}|\mathbf{x_0,y})=\left\{\begin{aligned} &\mathcal{N}\left[\mathbf{\vec{y}}^{(i)},\left(\sigma^2_T-\frac{\sigma^2_y}{s^2_i}\right)\mathbf{I}\right]&,\text{if }s_i>0\\ &\mathcal{N}\left[\mathbf{\vec{x}}^{(i)}_0,\sigma^2_T\mathbf{I}\right]&,\text{if }s_i=0 \end{aligned}\right.\\ q^{(t)}(\mathbf{\vec{x}}_t^{(i)}|\mathbf{x}_{t+1},\mathbf{x}_0,\mathbf{y})=\left\{\begin{aligned} &\mathcal{N}\left[\mathbf{\vec{x}}^{(i)}_0+\sqrt{1-\eta^2}\sigma_t\frac{\mathbf{\vec{x}}_{t+1}^{(i)}-\mathbf{\vec{x}}_0^{(i)}}{\sigma_{t+1}},\eta^2\sigma^2_T\mathbf{I}\right]&,\text{if }s_i=0\\ &\mathcal{N}\left[\mathbf{\vec{x}}^{(i)}_0+\sqrt{1-\eta^2}\sigma_t\frac{\mathbf{\vec{y}}^{(i)}-\mathbf{\vec{x}}_0^{(i)}}{\sigma_y/s_i},\eta^2\sigma^2_T\mathbf{I}\right]&,\text{if }\sigma_t<\frac{\sigma_y}{s_i}\\ &\mathcal{N}\left[(1-\eta_b)\mathbf{\vec{x}}_0^{(i)}+\eta_b\mathbf{\vec{y}}^{(i)},\left(\sigma^2_t-\frac{\sigma^2_y}{s^2_i}\right)\mathbf{I}\right]&,\text{if }\sigma_t\geq\frac{\sigma_y}{s_i} \end{aligned}\right. \end{aligned}\tag{3}

其中最需要说明的是,上标代表的是拉平后的逆图像VTx0\mathbf{V^\mathrm{T}x}_0向量第ii个元素,如x0(i)\mathbf{\vec{x}}^{(i)}_0,式子实质上给出了基于观测图像逐步去噪的理想公式,而条件量x0\mathbf{x}_0并不已知,可采用DDPM模型预训练得到的结果去噪UNet作噪声估计器,即有:

x^0=fθ(xt+1,t+1)xθ,t+1    x^θ,t+1=VTxθ,t+1\mathbf{\hat{x}}_0=f_{\bm{\theta}}(\mathbf{x}_{t+1},t+1)\triangleq\mathbf{x}_{\theta,t+1}\implies\mathbf{\vec{\hat{x}}}_{\theta,t+1}=\mathbf{V}^T\mathbf{x}_{\theta,t+1}

然后用x^θ,t\mathbf{\vec{\hat{x}}}_{\theta,t}代替公式(3)中的x0\mathbf{\vec{x}}_0,即可得到图像恢复的逐步生成过程,如下式:

q(T)(xT(i)x0,y)={N[y(i),(σT2σy2si2)I],if si>0N[x^θ,t,σT2I],if si=0q(t)(xt(i)xt+1,x0,y)={N[x^θ,t+1η2σtxt+1(i)x0(i)σt+1,η2σT2I],if si=0N[x^θ,t+1η2σty(i)x0(i)σy/si,η2σT2I],if σt<σysiN[(1ηb)x^θ,t(i)+ηby(i),(σt2σy2si2)I],if σtσysi\begin{aligned} q^{(T)}(\mathbf{\vec{x}}_T^{(i)}|\mathbf{x_0,y})=\left\{\begin{aligned} &\mathcal{N}\left[\mathbf{\vec{y}}^{(i)},\left(\sigma^2_T-\frac{\sigma^2_y}{s^2_i}\right)\mathbf{I}\right]&,\text{if }s_i>0\\ &\mathcal{N}\left[\mathbf{\vec{\hat{x}}}_{\theta,t},\sigma^2_T\mathbf{I}\right]&,\text{if }s_i=0 \end{aligned}\right.\\ q^{(t)}(\mathbf{\vec{x}}_t^{(i)}|\mathbf{x}_{t+1},\mathbf{x}_0,\mathbf{y})=\left\{\begin{aligned} &\mathcal{N}\left[\mathbf{\vec{\hat{x}}}_{\theta,t}+\sqrt{1-\eta^2}\sigma_t\frac{\mathbf{\vec{x}}_{t+1}^{(i)}-\mathbf{\vec{x}}_0^{(i)}}{\sigma_{t+1}},\eta^2\sigma^2_T\mathbf{I}\right]&,\text{if }s_i=0\\ &\mathcal{N}\left[\mathbf{\vec{\hat{x}}}_{\theta,t}+\sqrt{1-\eta^2}\sigma_t\frac{\mathbf{\vec{y}}^{(i)}-\mathbf{\vec{x}}_0^{(i)}}{\sigma_y/s_i},\eta^2\sigma^2_T\mathbf{I}\right]&,\text{if }\sigma_t<\frac{\sigma_y}{s_i}\\ &\mathcal{N}\left[(1-\eta_b)\mathbf{\vec{\hat{x}}}_{\theta,t}^{(i)}+\eta_b\mathbf{\vec{y}}^{(i)},\left(\sigma^2_t-\frac{\sigma^2_y}{s^2_i}\right)\mathbf{I}\right]&,\text{if }\sigma_t\geq\frac{\sigma_y}{s_i} \end{aligned}\right. \end{aligned}

DDRM方法事实上可以完成输入至输出的恒等变换,解决了扩散模型生成不受控制的问题

该方法事实上将生成式方法应用至Low-level问题上了,当然也似乎存在一个可以改进的地方,本文的恢复方式事实上是逐像素的,像素与像素之间的关联信息被完全丢失(或者说仅仅在依靠DDPM的噪声估计器),查看从本文衍生的其他模型如DDNM等,都没有提到这一点(或者说他们都不屑于研究这一点?),想办法保留一点关联信息可能对伪逆求解过程有帮助。

建议译名

DDRM:去噪扩散恢复模型

参考文献


[1] Song J. , Meng C. , Ermon S. .Denoising Diffusion Implicit Models[M/OL].arXiv,2022


[2] Kawar B. , Ermon S. , Elad M. , et al.Denoising Diffusion Restoration Models[A].Advances in Neural Information Processing Systems[C].2022:23593–23606