目录

DDPM中的重参数化

目录

Denoising Diffusion Probabilistic Models (DDPM)这篇文章的3.2小节有一段看起来很绕的变量替换,作者在$x_t$,$x_0$和$\epsilon$之间反复地来回变换,最后推导出一个看起来很简洁的损失项,也就是原文式(12)。我一开始看到这里,感觉是有一点点乱的,所以就按照重参数化的计算过程,把原文式(8)-(12)重新梳理一下。

  1. 让我们从原文的损失项开始,也就是原文式(8)-(9): \begin{align} L_{t-1} & = \mathbb{E}_{q(x_t,x_0)}\left[ \dfrac{1}{2\sigma_t^2} \Vert \tilde{\mu}_t(x_t,x_0) - \mu_\theta(?) \Vert^2 \right] + C \\ \Rightarrow L_{t-1} - C & = \mathbb{E}_{q(x_t,x_0)}\left[ \dfrac{1}{2\sigma_t^2} \left\Vert \dfrac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1-\bar{\alpha}_t}x_0 + \dfrac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}x_t- \mu_\theta(?) \right\Vert^2 \right] \end{align} 这里和原文不一样的是,原文是直接给出$\mu_\theta(?)=\mu_\theta(x_t,t)$,但是我们先不假设$\mu_\theta$的输入是什么,暂时用个小问号代替,因为计算的前半段和$\mu_\theta$的形式并没有直接关系。

  2. 重参数化可以让我们改变积分的“主角”,原文式(9)-(10)就是使用了重参数化,他把关于$x_t$的期望变成关于$\epsilon$的期望。要做这种变换,我们首先写出$x_t$和$\epsilon$的关系: \begin{align} x_t = \sqrt{1-\bar{\alpha}_t}\epsilon_t + \sqrt{\bar{\alpha}_t}x_0 \end{align} 这是一种正相关的线性关系,那么就有 \begin{align} q(x_t)dx_t = q(\epsilon)d\epsilon \end{align} 于是我们根据这个等式,可以直接把(2)中的$x_t$用(3)替换掉,得到: \begin{align} L_{t-1} - C = \mathbb{E}_{q(\epsilon,x_0)}\left[\dfrac{1}{2\sigma_t^2}\left\Vert \sqrt{\bar{\alpha}_{t-1}}x_0 + \dfrac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{\sqrt{1-\bar{\alpha}_t}}\epsilon- \mu_\theta(?) \right\Vert^2 \right] \end{align} 然后,我们在这个式子的范数的里面加一项$\dfrac{\sqrt{1-\bar{\alpha}_t}}{\sqrt{\alpha_t}}\epsilon_t$再减一项$\dfrac{\sqrt{1-\bar{\alpha}_t}}{\sqrt{\alpha_t}}\epsilon_t$,得到:

$L_{t-1} - C $ \begin{align} & = \mathbb{E}_{q(\epsilon,x_0)}\left[\dfrac{1}{2\sigma_t^2} \left\Vert \dfrac{1}{\sqrt{\alpha_t}}[\sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon] - \dfrac{\sqrt{1-\bar{\alpha}_t}}{\sqrt{\alpha_t}}\epsilon + \dfrac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{\sqrt{1-\bar{\alpha}_t}}\epsilon - \mu_\theta(?)\right\Vert^2 \right] \\ & = \mathbb{E}_{q(\epsilon,x_0)}\left[\dfrac{1}{2\sigma_t^2} \left\Vert \dfrac{1}{\sqrt{\alpha_t}} \left[ \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon - \dfrac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon \right] - \mu_\theta(?) \right\Vert^2 \right] \end{align}

  1. 接下来,我们开始分析$\mu_\theta$的形式。根据原文式(11): \begin{align} \mu_\theta(?)=\mu_\theta(x_t,t)=\dfrac{1}{\sqrt{\alpha_t}}\left[ x_t - \dfrac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_\theta(x_t,t)\right] \end{align} 注意到(7)中出现了$\sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon$,它和$x_t$(扩散中的隐变量)是同分布的。于是,原文式(11),也就是这里的(8),中会出现$x_t$,但是这个$x_t$应该和(1)中取期望的$x_t$(扩散中的隐变量)的含义是不同的。这里的$x_t$的本义是指和$\sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon$同分布的随机变量,只是它恰好和$x_t$(扩散中的隐变量)的分布相同。
    (7)中还有一项$\dfrac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon$,而$\mu_\theta(x_t,t)$中的$\dfrac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_\theta(x_t,t)$就是参考这一项设置的。我们可以看出来,(7)中的$\epsilon$被拆成了两项,实际上$\epsilon_\theta(x_t,t)$表示的是$\epsilon$的一部分。

  2. 最后,我们把 \begin{align} \mu_\theta(x_t,t)=\dfrac{1}{\sqrt{\alpha_t}}\left[ \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon - \dfrac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_\theta(x_t,t) \right] \end{align} 带入到(7)中,就可以得到原文式(12)的最终损失项形式了: \begin{align} \mathbb{E}_{q(\epsilon,x_0)} \left[ \dfrac{(1-\alpha_t)^2}{2\sigma_t^2\alpha_t(1-\bar{\alpha}_t)} \left\Vert \epsilon - \epsilon_\theta(x_t,t) \right\Vert^2 \right] \end{align}

  3. 我们从(7)中也可以看出来,只要能计算,方便采样,$\mu_\theta$的输入也完全可以换成其他的,它的形式也可以换成其他的。