DL——DDPM

文本介绍DDPM(Denoising Diffusion Probabilistic Models)的理论介绍

推导过程

训练和推理

代码实现

  • 待更新

一些问题和解答

  • 关于\(\epsilon_{\theta}(x_t, t)\)的含义
    • 训练时预估的\(\epsilon_{\theta}(x_t, t)\)的含义是什么?学到的是从\(x_0\)到\(x_t\)加的噪音,还是从\(x_{t-1}\)到\(x_t\)加的噪音?
      • 回答:是从\(x_0\)到\(x_t\)加的噪音,因为从训练流程的公式就可以看出,\(\epsilon_{\theta}(x_t, t)\)中的\(x_t=\sqrt{\bar{\alpha}_{t}}x_0 + \sqrt{1-\bar{\alpha}_{t}}\epsilon\),其中\(\epsilon\)就是从\(x_0\)到\(x_t\)加的噪音,而损失函数的目标就是让\(\epsilon_{\theta}->\epsilon\)。
    • 在推理时,既然\(\epsilon_{\theta}(x_t, t)\)是从\(x_0\)到\(x_t\)加的累计噪音,为什么可以使用\(\epsilon_{\theta}(x_t, t)\)来完成从\(x_{t}\)到\(x_{t-1}\)的过程?
      • 回答:因为这里从\(x_{t}\)到\(x_{t-1}\)的本质也是分两步的,第一步是从\(x_{t}\)到\(x_{0}\)(由\(x_t=\sqrt{\bar{\alpha}_{t}}x_0 + \sqrt{1-\bar{\alpha}_{t}}\epsilon_{\theta}\)反推即可得到\(x_0 = \frac{1}{\sqrt{\bar{\alpha}_{t}}}(x_t-\sqrt{1-\bar{\alpha}_{t}}\epsilon_{\theta})\),注意这里得到的\(x_0\)可能质量不太好,不能直接作为最终结果);第二步是已知从\(x_{t}\)和\(x_{0}\)后,可以得到\(x_{t-1}\)的分布\(p(x_{t-1}|x_t,x_0)\),进一步对分布进行采样,就能得到一个\(x_{t-1}\)的实例。两步合并以后就是DDPM的采样伪代码中的公式
    • 既然为什么不能一步到位得到\(x_0 = \frac{1}{\sqrt{\bar{\alpha}_{t}}}(x_t-\sqrt{1-\bar{\alpha}_{t}}\epsilon_{\theta})\)?
      • 回答:这样做是不可以的,在整个推导过程中,我们有\(q(x_t|x_0) = N(x_t;\sqrt{\bar{\alpha}_{t}}x_0, (1-\bar{\alpha}_{t})\mathbf{I})\)(这里是通过高斯过程的叠加实现的,整个过程遵循马尔科夫过程),所以才有公式\(x_t=\sqrt{\bar{\alpha}_{t}}x_0 + \sqrt{1-\bar{\alpha}_{t}}\epsilon\),这不代表我们可以通过\(x_0 = \frac{1}{\sqrt{\bar{\alpha}_{t}}}(x_t-\sqrt{1-\bar{\alpha}_{t}}\epsilon_{\theta})\)来得到\(x_0\),因为此时的\(x_0\)是无法一步导出的(即\(q(x_0|x_t)\)是未知的,未知的原因是不遵循马尔科夫过程,训练时使用的损失函数是在满足马尔科夫过程假设的情况下推导出来的,推理时也不能违背该假设),必须遵循马尔科夫过程(即\(q(x_{t-1}|x_t)\))
        • \(q(x_t|x_0)\)已知但是\(q(x_0|x_t)\)未知的原因是因为采样是不可逆的
        • 既然\(x_0 = \frac{1}{\sqrt{\bar{\alpha}_{t}}}(x_t-\sqrt{1-\bar{\alpha}_{t}}\epsilon_{\theta})\)不准确(不遵循马尔科夫过程),为什么按照\(x_0 = \frac{1}{\sqrt{\bar{\alpha}_{t}}}(x_t-\sqrt{1-\bar{\alpha}_{t}}\epsilon_{\theta})\)的到的\(x_0\)可以作为中间变量来帮助生成\(x_{t-1}\)呢?公式推导带入的时候使用了这个式子,本质上也说明推导过程不遵循马尔科夫过程了吧?
  • DDPM可以不加入噪声吗?
    • 实践:不可以,图片生成质量会特别差
    • 回答:因为如果不加入噪声,原因未知,猜测是采样次数多导致中间步骤的偏差被放大?(来源:一个视频看懂DDIM凭什么加速采样|扩散模型相关)【这个观点无法解释DDIM为什么可以直接生成,DDIM(DDIM生成时不加入噪声)生成1000步效果也不会太差】