ddpm加噪前向过程公式推导
ddpm加噪前向过程公式推导
前向过程\(q(x_t|x_{t-1})\)在论文中公式如下(见附件中的(2))
\[q(x_t|x_{t-1}):=\mathcal N(x_t;\sqrt{1-\beta_t}x_{t-1},\beta_tI)
\]
根据前置知识中的重采样技巧,\(q\)的采样可以通过如下公式,\(\epsilon\)是我们要学习的数值
\[\begin{aligned}
x_t=\sqrt{1-\beta_t}x_{t-1}+\sqrt{\beta_t}\epsilon_t, &&\epsilon_t\in\mathcal N(0,I)
\end{aligned}
\]
公式中我们通过\(x_{t-1}\)采样可以得到\(x_t\),但是这种一步一步计算效率太低了,我们希望\(x_0\rightarrow x_1 \rightarrow....\rightarrow x_T\)一步到位,从\(x_0\)直接得到\(x_T\),我们定义
\[\begin{aligned}
\alpha_t=1-\beta_t, && \bar \alpha_t=\alpha_t\alpha_{t-1}...\alpha_1
\end{aligned}
\]
由于加噪是一个有限步骤\(T\),所以我们可以通过推导3项推广到\(T\)项,我们以\(x_3\)为例:
\[\begin{aligned}
x_3 &= \sqrt{1-\beta_3}x_{2}+\sqrt{\beta_3}\epsilon_3 \\
&= \sqrt{\alpha_3}(\sqrt{\alpha_2}x_1+\sqrt{\beta_2}\epsilon_2)+\sqrt{\beta_3}\epsilon_3 \\
&=\sqrt{\alpha_3\alpha_2}x_1+\sqrt{\alpha_3\beta_2}\epsilon_2+\sqrt{\beta_3}\epsilon_3 \\
&=\sqrt{\alpha_3\alpha_2}(\sqrt{\alpha_1}x_0+\sqrt{\beta_1}\epsilon_1)+\sqrt{\alpha_3\beta_2}\epsilon_2+\sqrt{\beta_3}\epsilon_3 \\
&= \sqrt{\alpha_3\alpha_2\alpha_1}x_0+\sqrt{\alpha_3\alpha_2\beta_1}\epsilon_1+\sqrt{\alpha_3\beta_2}\epsilon_2+\sqrt{\beta_3}\epsilon_3 \\
&=\sqrt{\bar{\alpha_3}}x_0+\sqrt{\alpha_3\alpha_2\beta_1}\epsilon_1+\sqrt{\alpha_3\beta_2}\epsilon_2+\sqrt{\beta_3}\epsilon_3
\end{aligned} \tag{1}
\]
由于\(\epsilon_t\in\mathcal N(0,I)\)是正态分布,根据前置知识中正态分布的性质,后面三项的正太分布符合如下
\[\sqrt{\alpha_3\alpha_2\beta_1}\epsilon_1+\sqrt{\alpha_3\beta_2}\epsilon_2+\sqrt{\beta_3}\epsilon_3 \sim\mathcal N(0,\alpha_3\alpha_2\beta_1+\alpha_3\beta_2+\beta_3)
\tag{2}
\]
ddpm重采样技巧
公式(2)中的分布看着并不简洁,为此我们引入一个额外项\(\bar\alpha_3=\alpha_3\alpha_2\alpha_1\),则公式(2)的方差为:
\[\begin{aligned}
&\alpha_3\alpha_2\beta_1+\alpha_3\beta_2+\beta_3+\alpha_3\alpha_2\alpha_1 \\
&=\alpha_3\alpha_2(\beta_1+\alpha_1)+\alpha_3\beta_2+\beta_3 &&(由于\alpha_t+\beta_t=1) \\
&=\alpha_3\alpha_2+\alpha_3\beta_2+\beta_3 \\
&=\alpha_3+\beta_3 \\
&=1
\end{aligned}
\tag{3}
\]
则我们可以将公式(2)中的方差重写为\(1-\bar\alpha_3\)
则我们可以将公式(1)重写为:
\[x_3 =\sqrt{\bar{\alpha_3}}x_0+\sqrt{1-\bar \alpha_3}\epsilon_3
\tag{4}
\]
我们将结果推广到\(T\)项:
\[x_t=\sqrt{\bar \alpha_t}x_0+\sqrt{1-\bar\alpha_t}\epsilon_t
\tag{5}
\]
至此我们得到了从\(0\rightarrow T\)一步到位的前向公式。综上我们将原本的分布:
\[q(x_t|x_{t-1}):=\mathcal N(x_t;\sqrt{1-\beta_t}x_{t-1},\beta_tI)
\tag{6}
\]
正式变成了一步到位从\(0\rightarrow T\)的分布,和附件中的公式(4)结果一致
\[q(x_t|x_0) = \mathcal N(x_t;\sqrt{\bar\alpha_t}x_0,(1-\bar\alpha_t)I)
\tag{7}
\]
附件(原文background)


浙公网安备 33010602011771号