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)

posted @ 2025-03-11 09:40  PowerZZJ  阅读(95)  评论(0)    收藏  举报