文章目录
- Diffusion Model回顾
- Diffusion Model算法
- Training
- Inference
- 图像生成模型的本质目标
- MLE vs KL
- VAE
- DDPM
部分截图来自原课程视频《2023李宏毅最新生成式AI教程》,B站自行搜索。
Diffusion Model回顾
前情回顾[07.Diffusion Model概述](https://blog.csdn.net/oldmao_2001/article/details/1341964 78)
VAE和Diffusion Model在构架上比较相似:
Diffusion Model算法
Training
第一行的repeat代表循环,执行2~5行,直到收敛停止。
第二行的
x
0
∼
q
(
x
0
)
x_0\sim q(x_0)
x0∼q(x0)中的
x
0
x_0
x0表示清晰的图片,整个语句表示采样一张图片。
第三行表示从
{
1
,
⋯
,
T
}
\{1,\cdots,T\}
{1,⋯,T}中采样一个整数
t
t
t,
T
T
T是一个很大的数字。
第四行表示从Normal Distribution中采样一个噪音
ϵ
\epsilon
ϵ
第五行比较复杂,先看:
α
ˉ
t
x
0
+
1
−
α
ˉ
t
ϵ
\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon
αˉtx0+1−αˉtϵ
这里表示将清晰的图片与噪音按权重进行相加得到的结果:
这里的权重:
α
ˉ
t
∈
→
s
m
a
l
l
e
r
{
α
ˉ
1
,
α
ˉ
2
,
⋯
,
α
ˉ
T
}
\bar{\alpha}_t \in \xrightarrow[smaller]{\{\bar{\alpha}_1,\bar{\alpha}_2,\cdots,\bar{\alpha}_T\}}
αˉt∈{αˉ1,αˉ2,⋯,αˉT}smaller
这里的
α
ˉ
1
\bar{\alpha}_1
αˉ1到
α
ˉ
T
\bar{\alpha}_T
αˉT是从大到小的关系。若从
T
T
T中采样到的
t
t
t越大,则
α
ˉ
t
\sqrt{\bar{\alpha}_t}
αˉt越小,
1
−
α
ˉ
t
\sqrt{1-\bar{\alpha}_t}
1−αˉt越大,表示二者相加时噪音占的权重就越大。
然后将权重相加结果丢进Noise predictor:
ϵ
θ
\epsilon_\theta
ϵθ
ϵ
θ
(
α
ˉ
t
x
0
+
1
−
α
ˉ
t
ϵ
,
t
)
\epsilon_\theta(\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon,t)
ϵθ(αˉtx0+1−αˉtϵ,t)
然后计算预测结果与真实噪音的差异,并更新Noise predictor参数,使其预测结果越接近真实噪音越好。
需要注意的是,和上节课程中讲的有亿点点不一样,之前原理课中介绍Diffusion模型加噪音是逐步加的,在论文的具体实作上却是一步到位的,后面有推导为什么可以这样做:
Inference
第一步,先从Normal Distribution中采样一个噪音
x
T
x_T
xT:
第二步,循环执行3,4步,共
T
T
T次
第三步,再从Normal Distribution中采样一个噪音
z
z
z
第四步中:
x
t
x_t
xt是第
t
t
t个步骤得到的结果:
第四步
x
t
−
1
x_{t-1}
xt−1的公式可用下图表示,黄色部分忘记标上
δ
t
\delta_t
δt,此外还有两组权重:
{
α
ˉ
1
,
α
ˉ
2
,
⋯
,
α
ˉ
T
}
\{\bar{\alpha}_1,\bar{\alpha}_2,\cdots,\bar{\alpha}_T\}
{αˉ1,αˉ2,⋯,αˉT}和
{
α
1
,
α
2
,
⋯
,
α
T
}
\{{\alpha}_1,{\alpha}_2,\cdots,{\alpha}_T\}
{α1,α2,⋯,αT}
在开始数学推导之前,先简单回顾图像生成模型的本质(上节课其实有讲)。
图像生成模型的本质目标
从一个已知的简单分布,例如:mean是0,每个维度的variance是1的高斯分布,采样出一个向量
z
z
z,丢进网络
G
G
G,得到一张图片:
我们希望找到一个网络
G
G
G,使其生成的x与实际图片的分布越接近越好
对于文字生成图片任务也类似,只不过是多加了一个文字输入作为限制条件:
这里一段文字对应的图片可以有无数种答案,因此也是一个分布,比较上面两种模型,有没有其实差异并不大,因此后面的数学推导为了简便,先不考虑文字的输入。
MLE vs KL
上面考虑两个分布越接近越好,在数学上求解一种思路就是使用MLE(Maximum Likelihood Estimation),将网络
G
G
G的参数记为
θ
\theta
θ,则生成图片的结果记为:
P
θ
(
x
)
P_\theta(x)
Pθ(x),而实际图片(训练数据)记为:
P
d
a
t
a
(
x
)
P_{data}(x)
Pdata(x)
则任务可以描述为:
从训练数据
P
d
a
t
a
(
x
)
P_{data}(x)
Pdata(x)采样得到:
{
x
1
,
x
2
,
⋯
,
x
m
}
\{x^1,x^2,\cdots,x^m\}
{x1,x2,⋯,xm},若可计算
P
θ
(
x
i
)
P_\theta(x^i)
Pθ(xi),则根据MLE可知,我们要找到一组参数
θ
∗
\theta^*
θ∗,使得:
θ
∗
=
a
r
g
max
θ
∏
i
=
1
m
P
θ
(
x
i
)
\theta^*=arg\max_\theta \prod_{i=1}^m P_\theta(x^i)
θ∗=argθmaxi=1∏mPθ(xi)
也就是参数
θ
∗
\theta^*
θ∗让网络产生这些真实图片
{
x
1
,
x
2
,
⋯
,
x
m
}
\{x^1,x^2,\cdots,x^m\}
{x1,x2,⋯,xm}的几率最大。
注:这里的
P
θ
(
x
i
)
P_\theta(x^i)
Pθ(xi)实际上无法计算,因为它不是简单几个高斯叠加的GMM,而非常复杂。
证明:最大化MLE与最小化KL等价。
θ
∗
=
a
r
g
max
θ
∏
i
=
1
m
P
θ
(
x
i
)
=
a
r
g
max
θ
log
∏
i
=
1
m
P
θ
(
x
i
)
=
a
r
g
max
θ
∑
i
=
1
m
log
P
θ
(
x
i
)
≈
a
r
g
max
θ
E
x
∼
P
d
a
t
a
[
log
P
θ
(
x
)
]
=
a
r
g
max
θ
∫
x
P
d
a
t
a
(
x
)
log
P
θ
(
x
)
d
x
\begin{aligned}\theta^*&=arg\max_\theta \prod_{i=1}^m P_\theta(x^i)\\ &=arg\max_\theta \log\prod_{i=1}^m P_\theta(x^i)\\ &=arg\max_\theta \sum_{i=1}^m \log P_\theta(x^i)\\ &\approx arg\max_\theta E_{x\sim P_{data}}[\log P_\theta(x)]\\ &= arg\max_\theta \int_x P_{data}(x)\log P_\theta(x)dx \end{aligned}
θ∗=argθmaxi=1∏mPθ(xi)=argθmaxlogi=1∏mPθ(xi)=argθmaxi=1∑mlogPθ(xi)≈argθmaxEx∼Pdata[logPθ(x)]=argθmax∫xPdata(x)logPθ(x)dx
先取对数,然后连乘变累加,结果与求期望值相近似,再根据期望的定义写成积分形式。这里将积分项减去一个与
θ
\theta
θ无关的项,不影响求最大值:
∫
x
P
d
a
t
a
(
x
)
log
P
d
a
t
a
(
x
)
d
x
\int_x P_{data}(x)\log P_{data}(x)dx
∫xPdata(x)logPdata(x)dx
这里
P
d
a
t
a
(
x
)
P_{data}(x)
Pdata(x)只和训练数据有关,与
θ
\theta
θ无关,减去积分项后就可以合并,然后就写成了最小化两个分布KL散度的形式。
=
a
r
g
max
θ
∫
x
P
d
a
t
a
(
x
)
log
P
θ
(
x
)
d
x
=
a
r
g
max
θ
(
∫
x
P
d
a
t
a
(
x
)
log
P
θ
(
x
)
d
x
−
∫
x
P
d
a
t
a
(
x
)
log
P
d
a
t
a
(
x
)
d
x
)
=
a
r
g
max
θ
∫
x
P
d
a
t
a
(
x
)
log
P
θ
(
x
)
P
d
a
t
a
(
x
)
d
x
=
a
r
g
min
θ
K
L
(
P
d
a
t
a
(
x
)
∣
∣
P
θ
(
x
)
)
\begin{aligned} &= arg\max_\theta \int_x P_{data}(x)\log P_\theta(x)dx\\ &=arg\max_\theta \left(\int_x P_{data}(x)\log P_\theta(x)dx\ - \int_x P_{data}(x)\log P_{data}(x)dx\right)\\ &=arg\max_\theta \int_x P_{data}(x)\log \cfrac{P_\theta(x)}{P_{data}(x)}dx\\ &=arg\min_\theta KL\left(P_{data}(x)||P_\theta(x)\right) \end{aligned}
=argθmax∫xPdata(x)logPθ(x)dx=argθmax(∫xPdata(x)logPθ(x)dx −∫xPdata(x)logPdata(x)dx)=argθmax∫xPdata(x)logPdata(x)Pθ(x)dx=argθminKL(Pdata(x)∣∣Pθ(x))
VAE
先回顾 VAE的计算,因为VAE和Diffusion很像,有些推导的过程也可以借鉴。
计算 P θ ( x ) P_\theta(x) Pθ(x)
VAE的
P
θ
(
x
)
P_\theta(x)
Pθ(x)可以写成:
P
θ
(
x
)
=
∫
z
P
(
z
)
P
θ
(
x
∣
z
)
d
z
P_\theta(x)=\int_z P(z)P_\theta(x|z)dz
Pθ(x)=∫zP(z)Pθ(x∣z)dz
先求
z
z
z产生的概率,然后求在
z
z
z条件下产生
x
x
x的概率,然后是针对所有
z
z
z进行积分,就得到了
P
θ
(
x
)
P_\theta(x)
Pθ(x)
其中
P
(
z
)
P(z)
P(z)是已知的简单分布,对应上图中的粉红色圈圈。
P
θ
(
x
∣
z
)
P_\theta(x|z)
Pθ(x∣z)如果采用如下定义:
P
θ
(
x
∣
z
)
=
{
1
,
G
(
z
)
=
x
0
,
G
(
z
)
≠
x
P_\theta(x|z)=\begin{cases} 1,\quad G(z)=x \\ 0,\quad G(z)\neq x \end{cases}
Pθ(x∣z)={1,G(z)=x0,G(z)=x
表示
z
z
z通过网络刚好与我们要的图片完全相同,那么就记为1,否则记为0。在图像生成任务这样做会使得上面的表达大概率是0,因为图片即使有1个像素不同也会使得
P
θ
(
x
∣
z
)
=
0
P_\theta(x|z)=0
Pθ(x∣z)=0
解决的方法就是用一个范围来表示网络的输出,如下图所示,
G
(
z
)
G(z)
G(z)表示一个高斯分布的Mean:
P
θ
(
x
∣
z
)
P_\theta(x|z)
Pθ(x∣z)的定义就变成:
P
θ
(
x
∣
z
)
∝
exp
(
−
∣
∣
G
(
z
)
−
x
∣
∣
2
)
P_\theta(x|z)\propto \exp(-||G(z)-x||_2)
Pθ(x∣z)∝exp(−∣∣G(z)−x∣∣2)
表示
x
x
x与高斯分布中心越近,产生它的概率越大。
Lower bound of log P ( x ) \log P(x) logP(x)
这里讲得比较简略,详细可以看这里:李宏毅学习笔记27.Unsupervised Learning.05: Deep Generative Model (Part II)
需要说明的是:概率
P
θ
(
x
)
P_\theta(x)
Pθ(x)需要网络的参数
θ
\theta
θ才能计算出来,因此把其作为下标,后面很多地方都把下标
θ
\theta
θ进行了省略。
上来直接从损失函数那里往后推:
log
P
θ
(
x
)
=
∫
z
q
(
z
∣
x
)
log
P
(
x
)
d
z
\log P_\theta(x)=\int_zq(z|x)\log P(x)dz
logPθ(x)=∫zq(z∣x)logP(x)dz
由于
log
P
(
x
)
\log P(x)
logP(x)和z无关,由于
∫
z
q
(
z
∣
x
)
d
z
=
1
\int_zq(z|x)dz=1
∫zq(z∣x)dz=1(这里的
q
(
z
∣
x
)
q(z|x)
q(z∣x)是任意一个分布,积分起来就是1),所以等式成立。
=
∫
z
q
(
z
∣
x
)
log
(
P
(
z
,
x
)
P
(
z
∣
x
)
)
d
z
=
∫
z
q
(
z
∣
x
)
log
(
P
(
z
,
x
)
q
(
z
∣
x
)
q
(
z
∣
x
)
P
(
z
∣
x
)
)
d
z
=
∫
z
q
(
z
∣
x
)
log
(
P
(
z
,
x
)
q
(
z
∣
x
)
)
d
z
+
∫
z
q
(
z
∣
x
)
log
(
q
(
z
∣
x
)
P
(
z
∣
x
)
)
d
z
≥
∫
z
q
(
z
∣
x
)
log
(
P
(
z
,
x
)
q
(
z
∣
x
)
)
d
z
=
E
q
(
z
∣
x
)
[
log
(
P
(
x
,
z
)
q
(
z
∣
x
)
)
]
\begin{aligned}&=\int_zq(z|x)\log\left(\frac{P(z,x)}{P(z|x)}\right)dz\\ &=\int_zq(z|x)\log\left(\frac{P(z,x)}{{\color{Blue} q(z|x)}}\frac{{\color{Blue} q(z|x)} }{P(z|x)}\right)dz\\ &=\int_zq(z|x)\log\left(\frac{P(z,x)}{q(z|x)}\right)dz+\int_zq(z|x)\log\left(\frac{q(z|x)}{P(z|x)}\right)dz\\ &\ge \int_zq(z|x)\log\left(\frac{P(z,x)}{q(z|x)}\right)dz=E_{q(z|x)}\left[\log\left(\frac{P(x,z)}{q(z|x)}\right)\right] \end{aligned}
=∫zq(z∣x)log(P(z∣x)P(z,x))dz=∫zq(z∣x)log(q(z∣x)P(z,x)P(z∣x)q(z∣x))dz=∫zq(z∣x)log(q(z∣x)P(z,x))dz+∫zq(z∣x)log(P(z∣x)q(z∣x))dz≥∫zq(z∣x)log(q(z∣x)P(z,x))dz=Eq(z∣x)[log(q(z∣x)P(x,z))]
上面倒数第二行中的最后一项可以看成是两个分布的KL散度,两个分布由于不可能相似,所以该项大于0,所以就写成:
K
L
(
q
(
z
∣
x
)
∣
∣
P
(
z
∣
x
)
)
≥
0
KL(q(z|x)||P(z|x))\geq0
KL(q(z∣x)∣∣P(z∣x))≥0
所以才推导出整个式子的下限,最后可以写成期望的形式,其中的
q
(
z
∣
x
)
q(z|x)
q(z∣x)就是VAE中的Encoder。
DDPM
计算 P θ ( x ) P_\theta(x) Pθ(x)
Diffusion模型生成图片理论上是从一张噪音图片
x
T
x_T
xT开始,不断经过Denoise模块后得到最终结果。
中间第
t
t
t个单步的输入输出可以表示为:
数学上可以写为:
P
θ
(
x
t
−
1
∣
x
t
)
∝
exp
(
−
∣
∣
G
(
x
t
)
−
x
t
−
1
∣
∣
2
)
P_\theta(x_{t-1}|x_t)\propto \exp(-||G(x_t)-x_{t-1}||_2)
Pθ(xt−1∣xt)∝exp(−∣∣G(xt)−xt−1∣∣2)
那么某张图片
x
0
x_0
x0产生的概率可以写为:
P
θ
(
x
0
)
=
∫
x
1
:
x
T
P
(
x
t
)
P
θ
(
x
T
−
1
∣
x
T
)
⋯
P
θ
(
x
t
−
1
∣
x
t
)
⋯
P
θ
(
x
0
∣
x
1
)
d
x
1
:
x
T
P_\theta(x_0)=\int_{x_1:x_T}P(x_t)P_\theta(x_{T-1}|x_T)\cdots P_\theta(x_{t-1}|x_t)\cdots P_\theta(x_{0}|x_1)dx_1:x_T
Pθ(x0)=∫x1:xTP(xt)Pθ(xT−1∣xT)⋯Pθ(xt−1∣xt)⋯Pθ(x0∣x1)dx1:xT
积分号下面的
x
1
:
x
T
x_1:x_T
x1:xT表示从
x
1
x_1
x1到
x
T
x_T
xT逐个计算,上式中的第一个
P
P
P没有下标
θ
\theta
θ,因为噪音
x
T
x_T
xT产生是从简单的高斯分布从采样的,没有经过Denoise模块,与参数
θ
\theta
θ无关。
Lower bound of log P ( x ) \log P(x) logP(x)
原理
DDPM中
log
P
(
x
)
\log P(x)
logP(x)的下界与VAE的推导一样,VAE的推导已省略,要想
Maximize
log
P
θ
(
x
0
)
\text{Maximize} \log P_\theta(x_0)
MaximizelogPθ(x0)
则要提高
log
P
(
x
)
\log P(x)
logP(x)的下界:
Maximize
E
q
(
x
1
:
x
T
∣
x
0
)
[
log
(
P
(
x
0
:
x
T
)
q
(
x
1
:
x
T
∣
x
0
)
)
]
\text{Maximize} E_{q(x_1:x_T|x_0)}\left[\log\left(\frac{P(x_0:x_T)}{q(x_1:x_T|x_0)}\right)\right]
MaximizeEq(x1:xT∣x0)[log(q(x1:xT∣x0)P(x0:xT))]
其中,表示Forward Process的
q
(
x
1
:
x
T
∣
x
0
)
q(x_1:x_T|x_0)
q(x1:xT∣x0)可以写为:
q
(
x
1
:
x
T
∣
x
0
)
=
q
(
x
1
∣
x
0
)
q
(
x
2
∣
x
1
)
⋯
q
(
x
T
∣
x
T
−
1
)
q(x_1:x_T|x_0)=q(x_1|x_0)q(x_2|x_1)\cdots q(x_T|x_{T-1})
q(x1:xT∣x0)=q(x1∣x0)q(x2∣x1)⋯q(xT∣xT−1)
VAE与DDPM二者的下界对比如下图,就不画表格了。
下面来看上面公式中Forward Process中的通项
q
(
x
t
∣
x
t
−
1
)
q(x_t|x_{t-1})
q(xt∣xt−1)如何计算,在DDPM中,
x
t
x_t
xt与
x
t
−
1
x_{t-1}
xt−1的关系如下图所示:
β
1
,
β
2
⋯
,
β
T
\beta_1,\beta_2\cdots,\beta_T
β1,β2⋯,βT是预先定义好的权重值(超参数),用来调整noise的占比,最右边的noise是从
N
(
0
,
I
)
\mathcal{N}(0,I)
N(0,I)中采样得来。
整个
q
(
x
t
∣
x
t
−
1
)
q(x_t|x_{t-1})
q(xt∣xt−1)是一个高斯分布,其Mean为:
1
−
β
t
x
t
\sqrt{1-\beta_t}x_t
1−βtxt,各个维度的Variance都一样,是:
β
t
\sqrt{\beta_t}
βt
Reverse Process的通项
q
(
x
t
∣
x
0
)
q(x_t|x_0)
q(xt∣x0)在理论上应该是一步步计算的:
注:
q
(
x
t
∣
x
0
)
q(x_t|x_0)
q(xt∣x0)的意思是给定清晰图片
x
0
x_0
x0的情况下,得到
x
t
x_t
xt的分布概率。
但是实际上可以选择一步到位,看下图:
第一行是
x
0
x_0
x0到
x
1
x_1
x1的过程,第二行是
x
1
x_1
x1到
x
2
x_2
x2的过程,两次加的噪音都是从同一个高斯分布中采样出来的,但是是两次独立的采样(红色箭头),然后可以把第一行红框处的部分带入第二行的
x
1
x_1
x1,得到:
由于两次采样是从同一个高斯分布而来,虽然乘了不同的系数,我们还是可以将两次采样合并为一个采样(如下图的红框合并为黄色采样结果):
这样一来,本来两次的采样就合并为一次了,同理,如果有多次采样,也可以用相同的方法合并为一步到位,只不过前面的系数有变化而已。
如上图所示,第
t
t
t步的
q
(
x
t
∣
x
0
)
q(x_t|x_0)
q(xt∣x0)系数分别为:
1
−
β
1
⋯
1
−
β
t
\sqrt{1-\beta_1}\cdots\sqrt{1-\beta_t}
1−β1⋯1−βt和
1
−
(
1
−
β
1
)
⋯
(
1
−
β
t
)
\sqrt{1-(1-\beta_1)\cdots(1-\beta_t)}
1−(1−β1)⋯(1−βt)
为了简化表达,令:
α
t
=
1
−
β
t
α
ˉ
t
=
α
1
α
2
⋯
α
t
\alpha_t=1-\beta_t\\ \bar\alpha_t=\alpha_1\alpha_2\cdots\alpha_t
αt=1−βtαˉt=α1α2⋯αt
上面的系数就可写成:
α
ˉ
t
1
−
α
ˉ
t
\sqrt{\bar\alpha_t}\\ \sqrt{1-\bar\alpha_t}
αˉt1−αˉt
数学推导
然后就是从论文Understanding Diffusion Models: A Unified Perspective中摘抄过来的下限的推导:
log
P
(
x
)
≥
E
q
(
x
1
:
T
∣
x
0
)
[
log
p
(
x
0
:
T
)
q
(
x
1
:
T
∣
x
0
)
]
=
E
q
(
x
1
:
T
∣
x
0
)
[
log
p
(
x
T
)
∏
t
=
1
T
p
θ
(
x
t
−
1
∣
x
t
)
∏
t
=
1
T
q
(
x
t
∣
x
t
−
1
)
]
=
E
q
(
x
1
:
T
∣
x
0
)
[
log
p
(
x
T
)
p
θ
(
x
0
∣
x
1
)
∏
t
=
2
T
p
θ
(
x
t
−
1
∣
x
t
)
q
(
x
1
∣
x
0
)
∏
t
=
2
T
q
(
x
t
∣
x
t
−
1
)
]
=
E
q
(
x
1
:
T
∣
x
0
)
[
log
p
(
x
T
)
p
θ
(
x
0
∣
x
1
)
∏
t
=
2
T
p
θ
(
x
t
−
1
∣
x
t
)
q
(
x
1
∣
x
0
)
∏
t
=
2
T
q
(
x
t
∣
x
t
−
1
,
x
0
)
]
=
E
q
(
x
1
:
T
∣
x
0
)
[
log
p
(
x
T
)
p
θ
(
x
0
∣
x
1
)
q
(
x
1
∣
x
0
)
+
log
∏
t
=
2
T
p
θ
(
x
t
−
1
∣
x
t
)
q
(
x
t
∣
x
t
−
1
,
x
0
)
]
=
E
q
(
x
1
:
T
∣
x
0
)
[
log
p
(
x
T
)
p
θ
(
x
0
∣
x
1
)
q
(
x
1
∣
x
0
)
+
log
∏
t
=
2
T
p
θ
(
x
t
−
1
∣
x
t
)
q
(
x
t
−
1
∣
x
t
,
x
0
)
q
(
x
t
∣
x
0
)
q
(
x
t
−
1
∣
x
0
)
]
=
E
q
(
x
1
:
T
∣
x
0
)
[
log
p
(
x
T
)
p
θ
(
x
0
∣
x
1
)
q
(
x
1
∣
x
0
)
+
log
∏
t
=
2
T
p
θ
(
x
t
−
1
∣
x
t
)
q
(
x
t
−
1
∣
x
t
,
x
0
)
q
(
x
t
∣
x
0
)
q
(
x
t
−
1
∣
x
0
)
]
=
E
q
(
x
1
:
T
∣
x
0
)
[
log
p
(
x
T
)
p
θ
(
x
0
∣
x
1
)
q
(
x
1
∣
x
0
)
+
log
q
(
x
1
∣
x
0
)
q
(
x
T
∣
x
0
)
+
log
∏
t
=
2
T
p
θ
(
x
t
−
1
∣
x
t
)
q
(
x
t
−
1
∣
x
t
,
x
0
)
]
=
E
q
(
x
1
:
T
∣
x
0
)
[
log
p
(
x
T
)
p
θ
(
x
0
∣
x
1
)
q
(
x
T
∣
x
0
)
+
∑
t
=
2
T
log
p
θ
(
x
t
−
1
∣
x
t
)
q
(
x
t
−
1
∣
x
t
,
x
0
)
]
=
E
q
(
x
1
:
T
∣
x
0
)
[
log
p
θ
(
x
0
∣
x
1
)
]
+
E
q
(
x
1
:
T
∣
x
0
)
[
log
p
(
x
T
)
q
(
x
T
∣
x
0
)
]
+
∑
t
=
2
T
E
q
(
x
1
:
T
∣
x
0
)
[
log
p
θ
(
x
t
−
1
∣
x
t
)
q
(
x
t
−
1
∣
x
t
,
x
0
)
]
=
E
q
(
x
1
∣
x
0
)
[
log
p
θ
(
x
0
∣
x
1
)
]
+
E
q
(
x
T
∣
x
0
)
[
log
p
(
x
T
)
q
(
x
T
∣
x
0
)
]
+
∑
t
=
2
T
E
q
(
x
t
,
x
t
−
1
∣
x
0
)
[
log
p
θ
(
x
t
−
1
∣
x
t
)
q
(
x
t
−
1
∣
x
t
,
x
0
)
]
=
E
q
(
x
1
∣
x
0
)
[
log
p
θ
(
x
0
∣
x
1
)
]
⏟
reconstruction term
−
D
K
L
(
q
(
x
T
∣
x
0
)
∣
∣
p
(
x
T
)
)
⏟
prior matching term
−
∑
t
=
2
T
E
q
(
x
t
∣
x
0
)
[
D
K
L
(
q
(
x
t
−
1
∣
x
t
,
x
0
)
∣
∣
p
θ
(
x
t
−
1
∣
x
t
)
)
]
⏟
denoising matching term
\begin{align*} \log P(x)&\ge E_{q(x_{1:T}|x_0)}\left[\log\frac{p(x_{0:T})}{q(x_{1:T}|x_0)}\right]\\ &=E_{q(x_{1:T}|x_0)}\left[\log\frac{p(x_T)\prod_{t=1}^Tp_\theta(x_{t-1}|x_t)}{\prod_{t=1}^Tq(x_t|x_{t-1})}\right]\\ &=E_{q(x_{1:T}|x_0)}\left[\log\frac{p(x_T)p_\theta(x_0|x_1)\prod_{t=2}^Tp_\theta(x_{t-1}|x_t)}{q(x_1|x_0)\prod_{t=2}^Tq(x_t|x_{t-1})}\right]\\ &=E_{q(x_{1:T}|x_0)}\left[\log\frac{p(x_T)p_\theta(x_0|x_1)\prod_{t=2}^Tp_\theta(x_{t-1}|x_t)}{q(x_1|x_0)\prod_{t=2}^Tq(x_t|x_{t-1},x_0)}\right]\\ &=E_{q(x_{1:T}|x_0)}\left[\log\frac{p(x_T)p_\theta(x_0|x_1)}{q(x_1|x_0)}+\log\prod_{t=2}^T\cfrac{p_\theta(x_{t-1}|x_t)}{q(x_t|x_{t-1},x_0)}\right]\\ &=E_{q(x_{1:T}|x_0)}\left[\log\frac{p(x_T)p_\theta(x_0|x_1)}{q(x_1|x_0)}+\log\prod_{t=2}^T\cfrac{p_\theta(x_{t-1}|x_t)}{\cfrac{q(x_{t-1}|x_t,x_0)q(x_t|x_0)}{q(x_{t-1}|x_0)}}\right]\\ &=E_{q(x_{1:T}|x_0)}\left[\log\frac{p(x_T)p_\theta(x_0|x_1)}{q(x_1|x_0)}+\log\prod_{t=2}^T\cfrac{p_\theta(x_{t-1}|x_t)}{\cfrac{q(x_{t-1}|x_t,x_0)\cancel{q(x_t|x_0)}}{\cancel{q(x_{t-1}|x_0)}}}\right]\\ &=E_{q(x_{1:T}|x_0)}\left[\log\frac{p(x_T)p_\theta(x_0|x_1)}{\cancel{q(x_1|x_0)}}+\log\cfrac{\cancel{q(x_1|x_0)}}{q(x_T|x_0)}+\log\prod_{t=2}^T\cfrac{p_\theta(x_{t-1}|x_t)}{q(x_{t-1}|x_t,x_0)}\right]\\ &=E_{q(x_{1:T}|x_0)}\left[\log\frac{p(x_T)p_\theta(x_0|x_1)}{q(x_T|x_0)}+\sum_{t=2}^T\log\cfrac{p_\theta(x_{t-1}|x_t)}{q(x_{t-1}|x_t,x_0)}\right]\\ &=E_{q(x_{1:T}|x_0)}\left[\log p_\theta(x_0|x_1)\right] +E_{q(x_{1:T}|x_0)}\left[\log\frac{p(x_T)}{q(x_T|x_0)}\right] +\sum_{t=2}^TE_{q(x_{1:T}|x_0)}\left[\log\cfrac{p_\theta(x_{t-1}|x_t)}{q(x_{t-1}|x_t,x_0)}\right]\\ &=E_{q(x_1|x_0)}\left[\log p_\theta(x_0|x_1)\right] +E_{q(x_T|x_0)}\left[\log\frac{p(x_T)}{q(x_T|x_0)}\right] +\sum_{t=2}^TE_{q(x_t,x_{t-1}|x_0)}\left[\log\cfrac{p_\theta(x_{t-1}|x_t)}{q(x_{t-1}|x_t,x_0)}\right]\\ &=\underset{\text{reconstruction term}}{\underbrace{E_{q(x_1|x_0)}\left[\log p_\theta(x_0|x_1)\right]}} -\underset{\text{prior matching term}}{\underbrace{D_{KL}(q(x_T|x_0)||p(x_T))}} -\sum_{t=2}^T\underset{\text{denoising matching term}}{\underbrace{E_{q(x_t|x_0)}\left[D_{KL}(q(x_{t-1}|x_t,x_0)||p_\theta(x_{t-1}|x_t)) \right]}} \end{align*}
logP(x)≥Eq(x1:T∣x0)[logq(x1:T∣x0)p(x0:T)]=Eq(x1:T∣x0)[log∏t=1Tq(xt∣xt−1)p(xT)∏t=1Tpθ(xt−1∣xt)]=Eq(x1:T∣x0)[logq(x1∣x0)∏t=2Tq(xt∣xt−1)p(xT)pθ(x0∣x1)∏t=2Tpθ(xt−1∣xt)]=Eq(x1:T∣x0)[logq(x1∣x0)∏t=2Tq(xt∣xt−1,x0)p(xT)pθ(x0∣x1)∏t=2Tpθ(xt−1∣xt)]=Eq(x1:T∣x0)[logq(x1∣x0)p(xT)pθ(x0∣x1)+logt=2∏Tq(xt∣xt−1,x0)pθ(xt−1∣xt)]=Eq(x1:T∣x0)
logq(x1∣x0)p(xT)pθ(x0∣x1)+logt=2∏Tq(xt−1∣x0)q(xt−1∣xt,x0)q(xt∣x0)pθ(xt−1∣xt)
=Eq(x1:T∣x0)
logq(x1∣x0)p(xT)pθ(x0∣x1)+logt=2∏Tq(xt−1∣x0)
q(xt−1∣xt,x0)q(xt∣x0)
pθ(xt−1∣xt)
=Eq(x1:T∣x0)[logq(x1∣x0)
p(xT)pθ(x0∣x1)+logq(xT∣x0)q(x1∣x0)
+logt=2∏Tq(xt−1∣xt,x0)pθ(xt−1∣xt)]=Eq(x1:T∣x0)[logq(xT∣x0)p(xT)pθ(x0∣x1)+t=2∑Tlogq(xt−1∣xt,x0)pθ(xt−1∣xt)]=Eq(x1:T∣x0)[logpθ(x0∣x1)]+Eq(x1:T∣x0)[logq(xT∣x0)p(xT)]+t=2∑TEq(x1:T∣x0)[logq(xt−1∣xt,x0)pθ(xt−1∣xt)]=Eq(x1∣x0)[logpθ(x0∣x1)]+Eq(xT∣x0)[logq(xT∣x0)p(xT)]+t=2∑TEq(xt,xt−1∣x0)[logq(xt−1∣xt,x0)pθ(xt−1∣xt)]=reconstruction term
Eq(x1∣x0)[logpθ(x0∣x1)]−prior matching term
DKL(q(xT∣x0)∣∣p(xT))−t=2∑Tdenoising matching term
Eq(xt∣x0)[DKL(q(xt−1∣xt,x0)∣∣pθ(xt−1∣xt))]
原文公式51的第一个
p
p
p多了一个
θ
\theta
θ
上面的结果中的第二项prior matching term可以忽略,原文中直接给0值,这项是衡量两个分布的相似度,一个分布是从搞屎采样出来的噪音
x
T
x_T
xT,另外是给定清晰图片
x
0
x_0
x0进行diffusion process得到
x
T
x_T
xT的过程,该过程由我们自己操控,两个分布毫无相似度,因此为0。李老师在这里的解释是因为该表达式中没有包含网络参数
θ
\theta
θ,因此与要最大化的下限无关,可以忽略。
现在的下限等于第一项(reconstruction term)减去第三项(denoising matching term),要使得整体最大化,就是要第一项越大越好,第三项越接近0越好,这里推导第一项的过程与第三项相似,因此只推导第三项。
写到这里由于字数太多,需要令开一篇。