Skip to content

Commit 16ae803

Browse files
committed
notes update
1 parent 69a598e commit 16ae803

File tree

2 files changed

+73
-46
lines changed

2 files changed

+73
-46
lines changed

Notes/DDPM.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ D_{KL}(q(x_0)\|p_\theta(x_0))=\mathbb{E}_{q(x_0)}[-\log p_\theta(x_0)]+C,
5757
$$
5858
其中$C=\mathbb{E}_{q(x_0)}[\log q(x_0)]$与$\theta$无关。
5959

60-
> Recall:$p(x)$和$q(x)$的KL散度定义为$D_{KL}(p||q)=\mathbb{E}_q\left[-\dfrac{\log p(x)}{\log q(x)}\right]$测量了两个概率分布之间的距离
60+
> Recall:$p(x)$和$q(x)$的KL散度定义为$D_{KL}(q\|p)=\mathbb{E}_q\left[-\log \dfrac{p(x)}{q(x)}\right]$测量了在真实分布$q$时使用近似分布$p$带来的额外惊喜
6161
6262
对$\log$函数使用Jenson不等式,因为
6363
$$
@@ -75,7 +75,7 @@ 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
7575
$$
7676
为了方便,记$L_t=\mathbb{E}_q[D_{KL}(q(x_t|x_{t+1},x_0)||p_\theta(x_t|x_{t+1}))]$,我们有表达式
7777
$$
78-
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)
78+
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)
7979
$$
8080

8181
> $t$越大,受到$x_{t+1}$影响越大;反之,$x_0$.
@@ -107,5 +107,17 @@ $$
107107
$$
108108
即可。此时,Loss化简为
109109
$$
110-
L_{t-1}=\mathbb{E}_{x_0,\epsilon}\left[\|\epsilon - \epsilon_\theta(\sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon, t)\|^2\right].
110+
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].
111111
$$
112+
113+
### Score
114+
115+
和直观相符,这个$-\epsilon$正好就是概率分布$q(x_t|x_0)$的Score(差一个常数倍)。
116+
117+
> Recall:一个概率分布$p(x)$的Score定义为$\nabla_x p(x)$.
118+
119+
**定理:**在Loss的表达式中,
120+
$$
121+
\nabla_{x_t}q(x_t|x_0)=-\frac{\epsilon}{\sqrt{1-\bar{\alpha}_t}}
122+
$$
123+
这是一个直接的Gauss变量密度函数的计算。所以训练每个$L_{t-1}$的过程实际上就是一个梯度下降。

Notes/Score-based SDE.md

Lines changed: 58 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
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

33
Author: 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

2543
Markov链,每一步转移概率为$q(x_t|x_{t-1})\sim N(\sqrt{1-\beta_t}x_{t-1},\beta_t I)$. 这等价于:
2644
$$
@@ -43,22 +61,22 @@ $$
4361
## 反向过程
4462

4563
### 形态假设
46-
4764
我们要求反向过程也是一个Markov链,但需要学习:
4865

4966
$$
5067
p_\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},
@@ -71,44 +89,41 @@ $$
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

Comments
 (0)