机器学习课程学习周报十八
文章目录
- 机器学习课程学习周报十八
- 摘要
- Abstract
- 一、机器学习部分
- 1. 再探Diffusion的数学原理
- 1.1 回顾生成模型的任务
- 1.2 DDPM (Denoising Diffusion Probabilistic Models)
- 1.3 DDPM的证据下界
- 总结
摘要
本周周报深入探讨了Diffusion模型的数学原理,重点分析了生成模型如何通过正向和逆向过程实现从简单分布到复杂分布的映射。详细介绍了DDPM(去噪扩散概率模型)的工作机制,包括正向加噪过程和反向去噪过程。通过对ELBO证据下界的推导,解释了模型的优化目标和实现方法。
Abstract
This weekly report delves into the mathematical principles of Diffusion models, focusing on how generative models achieve mapping from simple distributions to complex ones through forward and reverse processes. The report provides an in-depth explanation of the workings of DDPM (Denoising Diffusion Probabilistic Models), including the forward noise addition and reverse denoising processes. By deriving the ELBO evidence lower bound, the report elucidates the optimization objectives and implementation methods of the model.
一、机器学习部分
1. 再探Diffusion的数学原理
1.1 回顾生成模型的任务
生成模型是我们希望一个能随机生成与训练数据一致的模型。关键问题是我们如何对复杂训练数据的分布进行建模,以及如何从这个复杂分布中进行采样。但我们已知,从一个简单分布进行采样是容易的,从简单分布到观测数据分布(训练数据)是可以拟合的。
那么生成模型的解题思路为:将观测数据分布映射到简单分布,即:Encoder的作用,而在Diffusion模型中这一步称为Forward Process(正向过程或者加噪过程);再从简单分布中映射到生成数据分布,即:Decoder的作用,而在Diffusion模型中这一步称为Reverse Process(逆向过程或者去噪过程)。在训练的过程中,我们需要完整地进行正向和逆向的过程(Encoder到Decoder的过程),而在推理的过程中,我们只需要进行逆向的过程(Decoder的过程)。
而这个简单的分布,我们一般使用的都是高斯分布。选用高斯分布的原因是,利用高斯混合模型,一个复杂分布可以用多个高斯分布来表示,假设有K个高斯分布,这K个高斯分布称为混合模型的隐变量,则复杂分布的概率分布是:
P θ ( x ) = ∑ i = 1 K P ( z i ) ∗ P θ ( x ∣ z i ) {P_\theta }(x) = \sum\limits_{i = 1}^K {P({z_i}) * {P_\theta }(x|{z_i})} Pθ(x)=i=1∑KP(zi)∗Pθ(x∣zi)
这里 P ( z i ) {P({z_i})} P(zi)表示第 i i i个高斯分布在观测数据中占所占的概率,是我们以前学习高斯混合模型时提到的 α \alpha α, P θ ( x ∣ z i ) {{P_\theta }(x|{z_i})} Pθ(x∣zi)表示第 i i i个高斯分布的概率分布函数。
K并非是一个超参数,而是可以由离散转为连续。由上可知, ∫ P ( z ) = 1 \int {P(z) = 1} ∫P(z)=1,所以我们用一个连续的标准高斯分布来表示, P ( z ) ∼ N ( 0 , 1 ) P(z) \sim N(0,1) P(z)∼N(0,1),则上面离散的转为连续的,这里并不一定非要是高斯分布,只不过是高斯分布比较简单:
P θ ( x ) = ∫ P ( z ) ∗ P θ ( x ∣ z ) d z {P_\theta }(x) = \int {P(z)} * {P_\theta }(x|z)dz Pθ(x)=∫P(z)∗Pθ(x∣z)dz
根据上一次周报,我们对VAE的学习可知,我们要拟合这个生成数据的分布 P θ ( x ) {P_\theta }(x) Pθ(x),使用的是极大似然估计,而为了最大化 log ( P θ ( x ) ) \log ({P_\theta }(x)) log(Pθ(x)),引入了观测数据分布到简单分布( q ( x ) q(x) q(x)到 N ( z ) N(z) N(z))的映射 q ( z ∣ x ) q(z|x) q(z∣x)来辅助解决问题,最后问题可以转化为求ELBO证据下界:
上图是VAE和Diffusion模型分别要最大化的ELBO证据下界。
1.2 DDPM (Denoising Diffusion Probabilistic Models)
Forward Process:向观测数据 X 0 {X_0} X0中逐步加入噪声,直到观测数据变成高斯分布 X T {X_T} XT。
Reverse Process:从一个高斯分布 X T {X_T} XT中采样,逐步消除噪声,直到变成清晰的数据 X 0 {X_0} X0。
正向添加噪声的过程:
x t = 1 − β t ∗ x t − 1 + β t ∗ ε t − 1 {x_t} = \sqrt {1 - {\beta _t}} * {x_{t - 1}} + \sqrt {{\beta _t}} * {\varepsilon _{t - 1}} xt=1−βt∗xt−1+βt∗εt−1
x t {x_t} xt是加过噪声的图片, x t − 1 {x_{t - 1}} xt−1是这次还未加上新噪声的图片, ε t − 1 {\varepsilon _{t - 1}} εt−1是随机生成的一个高斯噪声,在DDPM中一共加了1000次噪声。
重参数采样:
若y是一个高斯分布 y ∼ N ( μ , σ 2 ) y \sim N(\mu ,{\sigma ^2}) y∼N(μ,σ2),则:
y − μ σ ∼ N ( 0 , 1 ) \frac{{y - \mu }}{\sigma } \sim N(0,1) σy−μ∼N(0,1)
设 ε \varepsilon ε为一个标准高斯分布,则:
y = σ ∗ ε + μ ∼ N ( μ , σ 2 ) y = \sigma * \varepsilon + \mu \sim N(\mu ,{\sigma ^2}) y=σ∗ε+μ∼N(μ,σ2)
对比加噪公式: x t = 1 − β t ∗ x t − 1 + β t ∗ ε t − 1 {x_t} = \sqrt {1 - {\beta _t}} * {x_{t - 1}} + \sqrt {{\beta _t}} * {\varepsilon _{t - 1}} xt=1−βt∗xt−1+βt∗εt−1,在DDPM论文中 ε t − 1 {\varepsilon _{t - 1}} εt−1服从标准高斯分布,所以 x t {x_t} xt满足高斯分布,且:
x t ∼ N ( 1 − β t ∗ x t − 1 , β t ) {x_t} \sim N(\sqrt {1 - {\beta _t}} * {x_{t - 1}},{\beta _t}) xt∼N(1−βt∗xt−1,βt)
DDPM中的定义:
一个真实分布的数据(观测数据/训练数据),其分布满足 x 0 ∼ q ( x ) {x_0} \sim q(x) x0∼q(x)。一共加了T次噪声,得到 x 1 , x 2 , … , x T {x_1},{x_2}, \ldots ,{x_T} x1,x2,…,xT。每次加噪声操作是对前一次加完噪声的结果进行操作(这是一个马尔可夫链Markov chain):
q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t ∗ x t − 1 , β t I ) q({x_t}|{x_{t - 1}}) = N({x_t};\sqrt {1 - {\beta _t}} * {x_{t - 1}},{\beta _t}I) q(xt∣xt−1)=N(xt;1−βt∗xt−1,βtI)
β t {{\beta _t}} βt是超参数,在DDPM中, β t {{\beta _t}} βt是随着t线性增长的(随着t的增大, x t {x_t} xt趋近于标准高斯分布, 1 − β t ∗ x t − 1 \sqrt {1 - {\beta _t}} * {x_{t - 1}} 1−βt∗xt−1接近于0, β t I {\beta _t}I βtI接近于 I I I)。
上图表明 x t {x_t} xt可以根据 x 0 {x_0} x0和 t t t直接推导出来,根据推导得到的 x t = α ˉ t ∗ x 0 + 1 − α ˉ t ∗ ε {x_t} = \sqrt {{{\bar \alpha }_t}} * {x_0} + \sqrt {1 - {{\bar \alpha }_t}} * \varepsilon xt=αˉt∗x0+1−αˉt∗ε,可以得到:
q ( x t ∣ x 0 ) = N ( x t ; α ˉ t ∗ x 0 , ( 1 − α ˉ t ) I ) q({x_t}|{x_0}) = N({x_t};\sqrt {{{\bar \alpha }_t}} * {x_0},(1 - {{\bar \alpha }_t})I) q(xt∣x0)=N(xt;αˉt∗x0,(1−αˉt)I)
反向去除噪声的过程:
从一个高斯分布采样,通过反向过程生成观测图像, P θ ( ∗ ) {P_\theta }(*) Pθ(∗)表示是需要模型预测的部分。
P θ ( x 0 ) = ∫ p θ ( x 0 : T ) d x 1 : T {P_\theta }({x_0}) = \int {{p_\theta }({x_{0:T}})d{x_{1:T}}} Pθ(x0)=∫pθ(x0:T)dx1:T
p θ ( x 0 : T ) = p ( x T ) ∗ p θ ( x T − 1 ∣ x T ) ∗ p θ ( x T − 2 ∣ x T − 1 ) ∗ ⋯ ∗ p θ ( x 1 ∣ x 0 ) {p_\theta }({x_{0:T}}) = p({x_T}) * {p_\theta }({x_{T - 1}}|{x_T}) * {p_\theta }({x_{T - 2}}|{x_{T - 1}}) * \cdots * {p_\theta }({x_1}|{x_0}) pθ(x0:T)=p(xT)∗pθ(xT−1∣xT)∗pθ(xT−2∣xT−1)∗⋯∗pθ(x1∣x0)
其中以 x T {x_T} xT,一张高斯噪声图为起点, p θ ( x t − 1 ∣ x t ) {p_\theta }({x_{t - 1}}|{x_t}) pθ(xt−1∣xt)定义为高斯分布,即 p ( x T ) p({x_T}) p(xT)乘上 p θ ( x t − 1 ∣ x t ) {p_\theta }({x_{t - 1}}|{x_t}) pθ(xt−1∣xt)模型预测得到的高斯分布,可得到去噪第一步得的图片,不断重复去噪过程即可得到
模型预测的高斯分布可写为:
p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) {p_\theta }({x_{t - 1}}|{x_t}) = N({x_{t - 1}};{\mu _\theta }({x_t},t),{\Sigma _\theta }({x_t},t)) pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))
1.3 DDPM的证据下界
通过1.1节,我们知道DDPM中要最大化的证据下界是:
E q ( x 1 : x T ∣ x 0 ) [ log ( P ( x 0 : x T ) q ( x 1 : x T ∣ x 0 ) ) ] {E_{q({x_1}:{x_T}|{x_0})}}[\log \left( {\frac{{P({x_0}:{x_T})}}{{q({x_1}:{x_T}|{x_0})}}} \right)] Eq(x1:xT∣x0)[log(q(x1:xT∣x0)P(x0:xT))]
化简这个式子有些复杂,这里直接引用Understanding Diffusion Models: A Unified Perspective中的结果:
结果就是这个式子:
E q ( x 1 ∣ x 0 ) [ log p θ ( x 0 ∣ x 1 ) ] − D K L ( q ( x T ∣ x 0 ) ∣ ∣ p ( x T ) ) − ∑ 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 ) ) ] {E_{q({x_1}|{x_0})}}\left[ {\log {p_\theta }({x_0}|{x_1})} \right] - {D_{KL}}(q({x_T}|{x_0})||p({x_T})) - \sum\limits_{t = 2}^T {{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]} Eq(x1∣x0)[logpθ(x0∣x1)]−DKL(q(xT∣x0)∣∣p(xT))−t=2∑TEq(xt∣x0)[DKL(q(xt−1∣xt,x0)∣∣pθ(xt−1∣xt))]
其中 − D K L ( q ( x T ∣ x 0 ) ∣ ∣ p ( x T ) ) -{D_{KL}}(q({x_T}|{x_0})||p({x_T})) −DKL(q(xT∣x0)∣∣p(xT))与模型的参数毫无关系,因为在前向的扩散过程中,我们在1.2节中已经推导过 q ( x t ∣ x 0 ) = N ( x t ; α ˉ t ∗ x 0 , ( 1 − α ˉ t ) I ) q({x_t}|{x_0}) = N({x_t};\sqrt {{{\bar \alpha }_t}} * {x_0},(1 - {{\bar \alpha }_t})I) q(xt∣x0)=N(xt;αˉt∗x0,(1−αˉt)I),而 p ( x T ) p({x_T}) p(xT)则是个服从标准正态分布的噪声图,因此这一项与模型无关,都是事先规定好的。
而 − ∑ 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 ) ) ] - \sum\limits_{t = 2}^T {{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]} −t=2∑TEq(xt∣x0)[DKL(q(xt−1∣xt,x0)∣∣pθ(xt−1∣xt))]中, q ( x t − 1 ∣ x t , x 0 ) {q({x_{t - 1}}|{x_t},{x_0})} q(xt−1∣xt,x0)已经在1.2中的推导过了, p θ ( x t − 1 ∣ x t ) {{p_\theta }({x_{t - 1}}|{x_t})} pθ(xt−1∣xt)在1.2中提过。
E q ( x 1 ∣ x 0 ) [ log p θ ( x 0 ∣ x 1 ) ] {E_{q({x_1}|{x_0})}}\left[ {\log {p_\theta }({x_0}|{x_1})} \right] Eq(x1∣x0)[logpθ(x0∣x1)]这一项与上面一项的推导过程类似。
我们主要来看 − ∑ 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 ) ) ] - \sum\limits_{t = 2}^T {{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]} −t=2∑TEq(xt∣x0)[DKL(q(xt−1∣xt,x0)∣∣pθ(xt−1∣xt))]的计算:
KL散度中的第一项 q ( x t − 1 ∣ x t , x 0 ) q({x_{t - 1}}|{x_t},{x_0}) q(xt−1∣xt,x0)的意思是给定干净的图片 x 0 {x_0} x0和加过 t t t次噪声的图片 x t {x_t} xt,如何求 x t {x_t} xt前一步 x t − 1 {x_{t - 1}} xt−1的问题,
补充一个 q ( x t − 1 ∣ x t , x 0 ) q({x_{t - 1}}|{x_t},{x_0}) q(xt−1∣xt,x0)化简的过程:
回到 − ∑ 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 ) ) ] - \sum\limits_{t = 2}^T {{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]} −t=2∑TEq(xt∣x0)[DKL(q(xt−1∣xt,x0)∣∣pθ(xt−1∣xt))]的计算:
我们知道了 q ( x t − 1 ∣ x t , x 0 ) {q({x_{t - 1}}|{x_t},{x_0})} q(xt−1∣xt,x0)的分布,我们在1.2节中也知道了 p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) {p_\theta }({x_{t - 1}}|{x_t}) = N({x_{t - 1}};{\mu _\theta }({x_t},t),{\Sigma _\theta }({x_t},t)) pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))这个分布。
两个高斯分布的KL散度的计算是有解析解的,如下:
但是有更简单的方法来解决:
根据上述推导,我们知道
q
(
x
t
−
1
∣
x
t
,
x
0
)
{q({x_{t - 1}}|{x_t},{x_0})}
q(xt−1∣xt,x0)的高斯分布是个确定的分布,其参数
μ
~
(
x
t
,
x
0
)
\tilde \mu ({x_t},{x_0})
μ~(xt,x0)和
σ
~
t
{{\tilde \sigma }_t}
σ~t是确定的,
p
θ
(
x
t
−
1
∣
x
t
)
=
N
(
x
t
−
1
;
μ
θ
(
x
t
,
t
)
,
Σ
θ
(
x
t
,
t
)
)
{p_\theta }({x_{t - 1}}|{x_t}) = N({x_{t - 1}};{\mu _\theta }({x_t},t),{\Sigma _\theta }({x_t},t))
pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))这个高斯分布的两个参数都是由模型确定的,在DDPM中我们设定固定住了
p
θ
(
x
t
−
1
∣
x
t
)
{p_\theta }({x_{t - 1}}|{x_t})
pθ(xt−1∣xt)中
Σ
θ
(
x
t
,
t
)
{\Sigma _\theta }({x_t},t)
Σθ(xt,t),并保证其与
q
(
x
t
−
1
∣
x
t
,
x
0
)
{q({x_{t - 1}}|{x_t},{x_0})}
q(xt−1∣xt,x0)这个高斯分布的方差是一致的。因此,我们只考虑
p
θ
(
x
t
−
1
∣
x
t
)
{p_\theta }({x_{t - 1}}|{x_t})
pθ(xt−1∣xt)中的
μ
θ
(
x
t
,
t
)
{\mu _\theta }({x_t},t)
μθ(xt,t),让其越来越接近
q
(
x
t
−
1
∣
x
t
,
x
0
)
{q({x_{t - 1}}|{x_t},{x_0})}
q(xt−1∣xt,x0)这个确定的高斯分布的均值,就可以使KL散度最小化。
我们将 q ( x t − 1 ∣ x t , x 0 ) {q({x_{t - 1}}|{x_t},{x_0})} q(xt−1∣xt,x0)这个确定的高斯分布的均值更进一步推导,代入从 x 0 {{x_0}} x0到 x t {{x_t}} xt的关系。
因此前向扩散和反向生成可以写为下面的式子:
值得注意的是,在更进一步的推导中,我们替换了 x 0 {x_0} x0,引入了 ε t {\varepsilon _t} εt(或者说是 ε \varepsilon ε, ε \varepsilon ε在上面第二张图出现,指代的就是 ε t {\varepsilon _t} εt), ε t {\varepsilon _{t}} εt是前向扩散中每一步添加的高斯噪声, ε t {\varepsilon _{t}} εt是在反向生成过程中唯一不确定的部分,因此这个 ε t {\varepsilon _{t}} εt是我们反向生成中需要用noise predictor进行预测的。
总结
本次周报系统性地分析了Diffusion模型的理论基础,特别是DDPM模型的操作原理和优化目标。通过对正向和逆向过程的详细推导,深入理解了如何从高斯噪声中逐步生成清晰图像的过程。下周准备阅读论文Understanding Diffusion Models: A Unified Perspective,希望更系统地了解Diffusion模型。