1- # Score-Based Generative Modeling through Stochastic Diffusion Equations(Score-Based SDE)
1+ # Score-Based Generative Modeling through Stochastic Diffusion Equations (Score-Based SDE)
22
33Author: Zichang Wang
44
@@ -8,19 +8,37 @@ Author: Zichang Wang
88
99样本分布函数$q(x_0)$,是我们还原的目标。
1010
11- $T$为前向过程(以及反向过程)的总步数。
11+ 模型对Score作出的近似记为$s_ \theta(x_t,t)$,和DDPM文章中的$\epsilon_ \theta(x_t,t)$的关系为
12+ $$
13+ s_\theta(x_t,t)=-\frac{\epsilon_\theta(x_t,t)}{\sqrt{1-\bar{\alpha}_t}}.
14+ $$
15+ 参数(这里继承DDPM文章中的参数定义):
1216
13- 前向过程$q(x_t|x_ {t-1})$.
17+ - $\alpha_t$为一列略小于$1$的参数(并非本篇文章中的$\alpha_t$)
18+ - $\beta_t = 1 - \alpha_t$为一列略大于$0$的参数
19+ - $\bar{\alpha}_ t = \prod_ {i=1}^t \alpha_i$为累计衰减,希望$t=T$时接近$0$(是本篇文章中的$\alpha_t$)
1420
15- 反向过程$p _ \theta(x _ {t-1}|x_t)$,其中$\theta$为模型参数。
21+ ## SDE
1622
17- 参数:
23+ 这篇文章陈述的第一件事是:无论是SMLD还是DDPM都是如下SDE框架的离散化。
24+
25+ 正向过程是一个$\mathbb{R}^n$中的Markov过程$X=\{ X_t\} _ {t=0}^{T}$,初始分布为$X_0\sim q(x_0)$,且满足扩散方程
26+ $$
27+ {\rm d}X_t=f(X_t,t){\rm d}t+g(t){\rm d}W_t,
28+ $$
29+ 其中$W_t$是 $n$维标准布朗运动,$f,g$为正则性足够好的函数。
30+
31+ 所有形如这样的过程,被称为扩散过程。
32+
33+ ** 定理(Anderson,扩散过程的可逆性):** 对于上述扩散过程$X$,如下定义的扩散过程$Y=\{ Y_t\} _ {t=0}^{T}$和$X$同分布:
34+
35+ 取初始分布为$Y_T\sim X_T$,扩散方程为
36+ $$
37+ {\rm d}Y_t=\left[f(X_t,t)-g(t)^2\nabla_x \log p_t(x)\right]{\rm d}t+g(t){\rm d}\bar{W}_t,
38+ $$
39+ 其中$p_t(x)$是$X_t$的密度函数,$\bar{W}_ t$是反向时间布朗运动。
1840
19- - $\alpha_t$为一列略小于$1$的参数
20- - $\beta_t = 1 - \alpha_t$为一列略大于$0$的参数
21- - $\bar{\alpha}_ t = \prod_ {i=1}^t \alpha_i$为累计衰减,希望$t=T$时接近$0$
2241
23- ## 前向过程
2442
2543Markov链,每一步转移概率为$q(x_t|x_ {t-1})\sim N(\sqrt{1-\beta_t}x_ {t-1},\beta_t I)$. 这等价于:
2644$$
4361## 反向过程
4462
4563### 形态假设
46-
4764我们要求反向过程也是一个Markov链,但需要学习:
4865
4966$$
5067p_\theta(x_{t-1}|x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t)).
5168$$
5269
5370### Loss
54-
5571我们希望minimize最终的输出分布$p_ \theta(x_0)$和真实分布$q(x_0)$之间的KL散度:
5672
5773$$
58- D_{KL}(p_\theta (x_0)||q (x_0))=\mathbb{E}_{q(x_0)}[-\log p_\theta(x_0)]+C,
74+ D_{KL}(q (x_0)\|p_\theta (x_0))=\mathbb{E}_{q(x_0)}[-\log p_\theta(x_0)]+C,
5975$$
6076其中$C=\mathbb{E}_ {q(x_0)}[ \log q(x_0)] $与$\theta$无关。
6177
78+ > Recall:$p(x)$和$q(x)$的KL散度定义为$D_ {KL}(q\| p)=\mathbb{E}_ q\left[ -\log \dfrac{p(x)}{q(x)}\right] $测量了在真实分布$q$时使用近似分布$p$带来的额外惊喜。
79+
6280对$\log$函数使用Jenson不等式,因为
6381$$
6482\log p_\theta(x_0)=\log \int q(x_{1:T}|x_0)\frac{p_\theta(x_{0:T})}{q(x_{1:T}|x_0)}{\rm d}x_{1:T},
7189
7290事实上,$L$可以化简为
7391$$
74- L=\mathbb{E}_q\left[D_{KL}(q(x_T|x_0)||p(x_T))+\sum_{t=1}^{T-1}D_{KL}(q(x_t|x_{t+1},x_0)||p_\theta(x_t|x_{t+1}))-\log p_\theta(x_0|x_1)\right],
92+ L=\mathbb{E}_q\left[D_{KL}(q(x_T|x_0)\|p(x_T))+\sum_{t=1}^{T-1}D_{KL}(q(x_t|x_{t+1},x_0)\|p_\theta(x_t|x_{t+1}))-\log p_\theta(x_0|x_1)\right],
93+ $$
94+ 为了方便,记$L_t=\mathbb{E}_ q[ D_ {KL}(q(x_t|x_ {t+1},x_0)||p_ \theta(x_t|x_ {t+1}))] $,我们有表达式
95+ $$
96+ q(x_t\|x_{t+1},x_0)\sim N\left(\dfrac{\sqrt{\bar{\alpha}_t}\beta_{t+1}}{1-\bar{\alpha}_{t+1}}x_0+\dfrac{\sqrt{\alpha_{t+1}}(1-\bar{\alpha}_t)}{1-\bar{\alpha}_{t+1}}x_{t+1},\dfrac{1-\bar{\alpha}_t}{1-\bar{\alpha}_{t+1}}\beta_{t+1}I\right)
7597$$
76- 为了方便我们
77-
78- ## 实际训练Loss
79-
80- ### 训练目标推导
81-
82- 从$L_t$的表达式出发,其中真实后验均值为:
83-
84- $$ \tilde{\mu}_t(x_t, x_0) = \frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1-\bar{\alpha}_t}x_0 + \frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}x_t $$
85-
86- 将$x_t = \sqrt{\bar{\alpha}_ t}x_0 + \sqrt{1-\bar{\alpha}_ t}\epsilon$代入,可以重写为:
87-
88- $$ \tilde{\mu}_t = \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon\right) $$
89-
90- 因此,如果我们让模型预测噪声$\epsilon$,可以设定:
91-
92- $$ \mu_\theta(x_t, t) = \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_\theta(x_t, t)\right) $$
93-
94- 最终训练目标简化为:
95-
96- $$ L_{simple} = \mathbb{E}_{t,x_0,\epsilon}\left[\|\epsilon - \epsilon_\theta(\sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon, t)\|^2\right] $$
9798
98- ** 核心思想 ** :模型$\epsilon _ \theta$学习预测添加到数据中的噪声$\epsilon$。
99+ > $t$越大,受到$x _ {t+1}$影响越大;反之,$x_0$.
99100
101+ ** 定理:** 两个高斯分布$Q\sim N(\mu_1,\sigma_1)$, $P\sim N(\mu_2,\sigma_2)$的KL散度为
102+ $$
103+ D_{KL}(Q \| P) = \frac{1}{2} \left[ \log \left( \frac{\sigma_2^2}{\sigma_1^2} \right) + \frac{\sigma_1^2}{\sigma_2^2} + \frac{(\mu_1 - \mu_2)^2}{\sigma_2^2} - 1 \right]
104+ $$
100105
106+ 这个表达式告诉我们,如果我们不控制模型方差,那么取一个非常大的方差$\sigma_2$对模型来说是一个Loss很小的退化解,我们不希望这种事情发生。所以我们需要归一化模型方差进行训练。
101107
108+ ### 实际训练Loss
102109
103- ### 速度
110+ 于是我们取定,$\Sigma _ \theta(x_t, t)=\sigma_t^2I$,$\sigma_t\sim\beta_t$为同量级固定常数。
104111
105- 使用Numpy,大约每秒可以生成$10^6$量级的一维正态随机变量。则使用DDPM生成一张$32\times 32$的图片大约需要
112+ 则
106113$$
107- 32\times 32\times 1000\div 10^6 = 1
114+ L_{t-1}=\mathbb{E}_q\left[\frac{1}{2\sigma_t^2}\left\|\tilde{\mu}_t(x_t,x_0)-\mu_\theta(x_t,t)\right\|^2\right]+C,
108115$$
109- 秒(不加声明,等号指左右两侧具有相同数量级)。
110-
111- ???
112-
113- 关键:所有的步骤需要迭代处理而非并行,所以时间较慢。
116+ 其中$\tilde{\mu}_ t(x_t, x_0) = \frac{\sqrt{\bar{\alpha}_ {t-1}}\beta_t}{1-\bar{\alpha}_ t}x_0 + \frac{\sqrt{\alpha_t}(1-\bar{\alpha}_ {t-1})}{1-\bar{\alpha}_ t}x_t$为后验均值。
114117
118+ 为了摆脱期望的复杂下标$q$,我们做恒等变形
119+ $$
120+ x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon,
121+ $$
122+ 其中$\epsilon\sim N(0,1)$为独立正态变量,我们改为让模型预测$\epsilon_ \theta(x_t,t)$,最后取
123+ $$
124+ \mu_\theta(x_t, t) = \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_\theta(x_t, t)\right)
125+ $$
126+ 即可。此时,Loss化简为
127+ $$
128+ L_{t-1}=\mathbb{E}_{q(x_0),\epsilon}\left[\|\epsilon - \epsilon_\theta(\sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon, t)\|^2\right].
129+ $$
0 commit comments