生成式AI之DDIM

DDPM为了公式推导简单,定义了前向过程是马尔科夫链,因此使得反向过程也是一个马尔可夫过程,即每个状态都只受前一个状态的影响。所以如果训练的时候有$T$步,后续采样的时候也需要有$T$步,速度很慢。

公式推导如下:

在DDPM中,由贝叶斯公式可知:

$p(x_{t-1}|x_{t},x_{0})=\frac{p(x_{t}|x_{t-1}, x_{0})p(x_{t-1}|x_{0})}{p(x_{t}|x_{0})} $

其中,已知$p(x_{t-1}|x_{0})$和$p(x_{t}|x_{0})$,$p(x_{t}|x_{t-1},x_{0})$未知。

在DDPM中,假设是前向过程是马尔科夫链。但是在DDIM中,做了一个假设,即$p(x_{t}|x_{t-1},x_{0})$为任意分布,只需满足等式即可。DDIM不符合马尔可夫性质,只是在前向过程中,符合DDPM一样的公式,即:$x_{t}=\sqrt{\bar{\alpha_{t}}}x_{0}+\sqrt{1-\bar{\alpha}} \varepsilon_{t}$即可。

可以由待定系数法求$p(x_{t}|x_{t-1},x_{0})$,过程如下:

设:$p(x_{t}|x_{t-1},x_{0})\sim N(kx_{0}+mx_{t}, \sigma^{2}I)$,则:

$x_{t-1}=kx_{0}+mx_{t}+\sigma\epsilon$,其中$\epsilon\sim N(0,I)$,

因为$x_{t}=\sqrt{\bar{\alpha_{t}}}x_{0}+\sqrt{1-\bar{\alpha_{t}}}\epsilon_{t}$

所以:$x_{t-1}=kx_{0}+m(\sqrt{\bar{\alpha}}x_{0}+\sqrt{1-\bar{\alpha}}\epsilon_{t})+\sigma\epsilon$

合并同类相,可得:

$x_{t-1}=(k+m\sqrt{\bar{\alpha}})x_{0}+m\sqrt{1-\bar{\alpha}}\epsilon_{t}+\epsilon$

$x_{t-1}=(k+m\sqrt{\bar{\alpha}})x_{0}+{\epsilon}' $,其中${\epsilon}'\sim N(0,m^2(1-\bar{\alpha})+\sigma ^2)$

因为:$x_{t-1}=\sqrt{\bar{\alpha_{t-1}}}x_{0}+\sqrt{1-\bar{\alpha_{t-1}}}\epsilon_{t-1}$

所以:$k+m\sqrt{\bar{\alpha_{t}}}=\sqrt{\bar{\alpha_{t-1}}}$,$m^2(1-\bar{\alpha_{t}})+\sigma^2=1-\bar{\alpha_{t-1}}$,

求得:$m=\frac{\sqrt{1-\bar{\alpha_{t-1}}-\sigma^2}}{\sqrt{1-\bar{\alpha_{t}}}}$和$k=\sqrt{\alpha_{t-1}}-\sqrt{1-\bar{\alpha_{t-1}}-\sigma^2}\frac{\sqrt{\bar{\alpha_{t}}}}{\sqrt{1-\bar{\alpha_{t}}}}$。

 所以:$p(x_{t-1}|x_{t},x_{0}) \sim N((\sqrt{\bar{\alpha_{t-1}}}-\sqrt{1-\bar{\alpha_{t-1}}-\sigma ^2}\frac{\sqrt{\bar{\alpha_{t}}}}{\sqrt{1-\bar{\alpha_{t}}}})x_{0}+\frac{\sqrt{1-\bar{\alpha_{t-1}}-\sigma^2}}{\sqrt{1-\bar{\alpha_{t}}}}x_{t},\sigma^2I)\sim N(\sqrt{\bar{\alpha_{t-1}}}x_{0}+\sqrt{1-\bar{\alpha_{t-1}}-\sigma^2}\frac{x_{t}-\sqrt{\bar{\alpha_{t}}}x_{0}}{\sqrt{1-\bar{\alpha_{t}}}},\sigma^2I)$

最后由如下关系式得:

$x_{0}=\frac{1}{\sqrt{\bar{\alpha_{t}}}}(x_{t}-\sqrt{1-\bar{\alpha_{t}}}\epsilon_{\theta})$

$\epsilon_{\theta}=\frac{x_{t}-\sqrt{\bar{\alpha_{t}}}x_{0}}{\sqrt{1-\bar{\alpha_{t}}}}$

将$\epsilon_{\theta}$代入可得:

$x_{t-1}=\sqrt{\bar{\alpha_{t-1}}}(\frac{x_{t}-\sqrt{1-\bar{\alpha_{t}}}\epsilon_{\theta}}{\sqrt{\bar{\alpha_{t}}}}+\sqrt{1-\bar{\alpha_{t-1}}-\sigma^2}\epsilon_{\theta})+\sigma^2\epsilon$

这里,DDIM的反向过程不是马尔可夫过程,所以不需要像DDPM那样遵守$x_{t}\longrightarrow x_{t-1}$。因此使用如下更加通用的表达式:

$x_{s}=\sqrt{\bar{\alpha_{s}}}(\frac{x_{z}-\sqrt{1-\bar{\alpha_{z}}}\epsilon_{\theta}}{\sqrt{\bar{\alpha_{z}}}}+\sqrt{1-\bar{\alpha_{s}}-\sigma^2}\epsilon_{\theta})+\sigma^2\epsilon$

其中,$s<z, z \le T$,$s$和$z$不需要连续。推导过程发现和$\sigma$无关,因此其取任何值等式都成立。

DDIM的训练代码和DDPM一样,只是在采样的时候不同,符合上述公式即可。

DDIM代码见https://github.com/shixiaojia/ddpm.git

posted @ 2024-07-10 20:48  指间的执着  阅读(10)  评论(0编辑  收藏  举报