扩散模型学习笔记

基本思路

        扩散模型的核心思想是通过学习数据的扩散过程来生成新的样本。这个过程涉及在正向过程中逐步向数据添加噪声,并在逆向过程中逐步去除噪声,从而生成新的数据。

正向过程

        扩散模型的正向过程又可以称为扩散过程。这个过程被固定到一个马尔科夫链上,这个马尔科夫链根据一个预设的方差时间表向数据添加高斯噪声。这个过程可以视为一个逐步向数据中添加噪声,直到信号被破坏的过程。实际上就是不断往图像上加噪声,直到它变成一个纯噪声。

反向过程

        反向过程也称逆扩散过程。这个过程就是从纯噪声开始逐步去除噪声,直到生成一张新的图像。这个过程是通过学习一个反向的马尔科夫链来实现的,即从噪声图像开始,逐步恢复到干净的图像。通过训练一个神经网络来预测和去除噪声,可以实现从噪声到图像的逐步生成。

算法

训练算法

  • x_{0}\sim q(x_0):从数据库q(x_{0})中抽取一张干净的图x_{0}
  • t \sim Uniform(\left\{ 1,...,T\right\}):从1~T中选择一个整数
  • \varepsilon \sim N(0,1):从一个标准正态分布中选择一个\varepsilon,大小与imagex_{0}一致
  • \triangledown _{\theta }\left \| \varepsilon -\varepsilon _{\theta } (\sqrt{\bar{\alpha _{t}}}x_{0}+\sqrt{1-\bar{\alpha _{t}}}\varepsilon ,t)\right \|^{2}:首先将x_{0}\varepsilon加权求和\sqrt{\bar{\alpha _{t}}}x_{0}+\sqrt{1-\bar{\alpha _{t}}}\varepsilon得到Noisy image,其中的权重\bar{\alpha _{1}},\bar{\alpha _{2}},...,\bar{\alpha _{T}},一般来说是逐渐变小的,也就是说,当t越大,噪声占比就越重,图像更接近噪声。\epsilon _{\theta }是Noisy predictor,他的输入是Noisy image 和t。这一步的目标实际上就是要使\epsilon _{\theta }预测出的噪声尽可能的与当初加到图片里的噪声\varepsilon尽可能地相似。

        从上一节对Diffusion Model的描述来看,噪音是一步一步地加进去的。但是,从这一小节对算法分析可以知道,噪音是一步到位直接加进去的,后续的denoise步骤也是如此一步直接把噪音denoise出来。

图像生成算法

  • x_{T}\sim N(0,1)x_{T}表示纯噪声图像

循环部分的直观解释:

基础知识 

后验概率  

        在贝叶斯统计中,后验概率 (Posterior probability)用来表示在给定观测数据后某个事件或参数的概率。它是通过贝叶斯定理计算得到的。具体来说,后验概率结合了先验信息(即在观察到数据之前对事件或参数的预期)和观测数据(即实际观测到的数据)来更新对事件或参数的信念。贝叶斯定理的数学表达式如下:

P(A|B)=\frac{P(B|A)\cdot P(A)}{P(B)}

  • P(A|B)是事件A在已知事件B发生后的后验概率
  • P(B|A)是事件B在事件A发生的情况下的似然 (Likelihood)
  • P(A)事件A的先验概率
  • P(B)是事件B的边际概率:P(B)=P(B|A)\cdot P(A)+P(B|\neg A)\cdot P(\neg A)

基本的条件概率定理

  • 乘法定理:若P(A)>0,则有:

P(AB)=P(A)P(B|A)

P(ABC)=P(A)P(B|A)P(C|AB)

P(A|B)=\frac{P(AB)}{P(B)}

  • 全概率公式:P_{\theta }(x|z)=\int_{z}^{}P(z)P_{\theta }(x|z)dz

马尔科夫链

        马尔科夫链(Markov Chain)是一个描述系统从一个状态转移到另一个状态的数学模型。它具有“无记忆”性质,即系统的未来状态只取决于当前状态,而与之前的状态无关。这种性质被称为马尔科夫性质。

高斯概率密度函数

f(x;\mu ,\sigma )=\frac{1}{\sqrt{2\pi \sigma ^{2}}}exp(-\frac{(x-\mu)^{2}}{2\sigma ^{2}})

  • xx 是随机变量的取值。
  • μ是均值(期望值),决定分布的中心位置。
  • σ是标准差,描述分布的宽度(即数据的离散程度)。
  • \sigma ^{2} 是方差。
  • exp⁡是自然指数函数,底数为 e≈2.71828。

KL散度(Kuiiback-Leibler Divergence)

        KL散度也称为相对熵,是一种衡量两个概率分布P和Q差异的方式。当两个概率分布完全相同时,KL散度为0;当两个概率分布差异增大时,KL散度也随之增大。KL散度的计算公式如下:

KL(P||Q)=\sum(P(x)*log(\frac{P(x)}{Q(x)}))

两个高斯分布的KL散度为:

D_{KL}(N(x;\mu _x,\sigma _x)||N(y;\mu _y,\sigma _y))=\frac{1}{2}[log\frac{|\sigma _y|}{|\sigma _x|}-d+tr(\sigma _y^{-1}\sigma _x)+(\mu _y-\mu _x)^T\sigma _y^{-1}(\mu _y-\mu _x) ]

最大似然估计

        图像生成的目标是使经参数为\theta的Network生成的P_{\theta }(x)的分布尽可能地与P_{data}(x)的分布接近。从P_{data}(x)中采样\{x^{1},x^{2},...,x^{m}\},将他们喂入Network之后生成x^i的概率是P_{\theta }(x^i),假设这个概率是能够计算的,那么我们的目标函数可以写为:

\theta ^{*}=arg \ \underset{\theta}{max}\prod_{i=1}^{m}P_\theta (x^i)\quad(1)

但是,这个目标函数和让P_{\theta }(x)的分布尽可能地与P_{data}(x)的分布接近这个目标之间有什么关系呢?接下来我们会进一步讲明这个关联性。

        将(1)式取对数并不会影响Network参数的优化结果,因此为了方便计算,我们先将(1)式右边取对数:

\begin{matrix} \theta ^*& = & 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}logP_{\theta }(x)dx&-\int_{x}^{} P_{data}logP_{data }(x)dx\\ &=&arg\ \max_{\theta }\int_{x}^{} P_{data}log\frac{P_{\theta }(x)}{P_{data}(x)} dx\\ &=&arg\ \min_{\theta }KL(P_{data}||P_{\theta }) \end{matrix}

第四行的尾项与θ无关,而且有利于计算。容易看出求最大似然估计就是求最小KL散度,对应于使P_{\theta }(x)的分布尽可能地与P_{data}(x)的分布相近。

Evidence Lower Bound

        Evidence Lower Bound(ELBO)是一种用于近似计算概率模型的边缘似然函数的方法。在贝叶斯统计中,我们通常希望获得给定观测数据下的后验概率分布,但这个计算通常很困难,特别是在复杂的概率模型中。ELBO的出现正是为了解决这一问题。它通过定义一个变分分布来近似真实的后验分布,并使用变分推断来最大化一个有界的下界,而不是直接计算后验分布。这个下界即ELBO。通过最大化ELBO,我们提高了对真实后验分布的近似质量。在数学上,ELBO通常与KL散度(Kullback-Leibler divergence)相关联,它衡量的是近似分布与真实分布之间的差异。通过最小化KL散度,我们可以找到最佳的近似分布,从而得到ELBO的最大值。

        ELBO的公式为:

E_{q_{\Phi }(z|x)}[log\frac{p(x,z)}{q_{\Phi }(z|x)}]

最大似然估计的目标是最大化似然概率,两者之间的数学关系可以表述如下(推导过程如图):

logp(x)\geq E_{q_{\Phi }(z|x)}[log\frac{p(x,z)}{q_{\Phi }(z|x)}]

其中q_{\phi }(z|x)是一个可变的近似变分分布,参数\phi是我们要优化的。但是我们为什么要最大化ELBO,从上述推导过程来看似乎还不够清晰,下面我们引入KL散度从另一个角度来进行推导:

log p(x)\phi来说是一个常数,那么ELBO加上变分后验和真实后验的KL散度是一个常数,最小化ELBO就是最大化这个KL散度。

Diffusion Model的数学原理剖析

        Diffusion Model的P_{\theta }(x_0)可由下式计算得出:

P_{\theta } (x_0)=\int_{x_1:x_T}^{} P_{\theta } (x_T)P_{\theta } (x_{T-1}|x_T)\dots P_{\theta } (x_{t-1}|x_t)\dots P_{\theta } (x_{0}|x_1)dx_1:dx_T

Diffusion Model 的优化目标可以表述如下(ELBO)   :

Maximize\ logP_{\theta } (x_0)\to Maximize\ E_{q(x_1:x_T|x_0)} [log(\frac{P(x_0:x_T)}{q(x_1:x_T|x_0)}) ]

其中,q(x_1:x_T|x_0)表示Diffusion Model的前向过程。q(x_t|x_{t-1})

        设定一组参数\beta _0,\beta _1,...,\beta _t\varepsilon \sim N(0,I)是噪声,经过推导,Diffusion Model的前向过程可以一步到位:

x_t=\sqrt{1-\beta _1}\cdots \sqrt{1-\beta _t}x_0+\sqrt{1-(1-\beta _1)\cdots(1-\beta _t)}\varepsilon

\alpha _t=1-\beta _t,\ \bar{\alpha }_t=\alpha _1\alpha _2\cdots\alpha _t,可将上式简化如下:

x_t=\sqrt{\bar{\alpha }_t}x_0+\sqrt{1-\bar{\alpha }_t}\varepsilon \quad (2)

其中,q(x_t|x_{0})的均值和方差分别为\sqrt{\bar{\alpha }_t}x_0,\ \sqrt{1-\bar{\alpha }_t}\varepsilonq(x_t|x_{t-1})符合以下分布:

q(x_t|x_{t-1})=N(x_t;\sqrt{\alpha _t}x_{t-1},(1-\alpha _t)I)

        根据贝叶斯公式有:

q(x_t|x_{t-1},x_0)=\frac{q(x_{t-1}|x_t,x_0)q(x_t|x_0)}{q(x_{t-1}|x_0)}

前文中Diffusion Model 的优化目标可以简化如下(推导过程如图):

E_q(x_1|x_0)[logP(x_0|x_1)]-KL(q(x_T|x_0)||P(x_T))-\sum_{t=2}^{T} E_q(x_t|x_0)[KL(q(x_{t-1}|x_t,x_0)||P(x_{t-1}|x_t))]

其中,KL(q(x_T|x_0)||P(x_T))表示最终噪声输入的分布与标准高斯的接近程度与θ无关。在这里E_q(x_1|x_0)[logP(x_0|x_1)]的计算方式与 \sum_{t=2}^{T} E_q(x_t|x_0)[KL(q(x_{t-1}|x_t,x_0)||P(x_{t-1}|x_t))]的类似,因此我们只研究后者。

q(x_{t-1}|x_t,x_0)=\frac{q(x_{t-1},x_t,x_0)}{q(x_t,x_0)}=\frac{q(x_{t}|x_{t-1})q(x_{t-1}|x_0)q(x_0)}{q(x_t|x_0)q(x_0)}=\frac{q(x_t|x_{t-1})q(x_{t-1}|x_0)}{q(x_t|x_0)}        

q(x_{t-1}|x_t,x_0)的均值和方差分别为(化简过程如图):

\mu _q=\frac{\sqrt{\bar{\alpha }_{t-1}}\beta _tx_0+\sqrt{\alpha _t}(1-\bar{\alpha }_{t-1})x_t}{1-\bar{\alpha }_t},\ \Sigma _q=\frac{1-\bar{\alpha }_{t-1}}{1-\bar{\alpha }_t}\beta _tI \quad (3)

要使\sum_{t=2}^{T} E_q(x_t|x_0)[KL(q(x_{t-1}|x_t,x_0)||P(x_{t-1}|x_t))]最小,在方差一致的情况下,只需要使P(x_{t-1}|x_t)的均值与q(x_{t-1}|x_t,x_0)的均值尽可能接近就好(推导过程如图)。

因此,参照\mu _{q }我们可以将\mu _{\theta }设为:

\mu _{\theta }=\frac{\sqrt{\bar{\alpha }_{t-1}}\beta _t\hat{x}_{\theta }(x_t,t)+\sqrt{\alpha _t}(1-\bar{\alpha }_{t-1})x_t}{1-\bar{\alpha }_t}

更进一步地,优化目标可以简化为(推导过程如图):

\underset{\theta }{arg\ min}\ \frac{1}{2\sigma _{q}^{2}(t)}\ \frac{\bar{\alpha }_{t-1}(1-\alpha _t)^2}{(1-\bar{\alpha _t})^2}\left \| \hat{x}_{\theta }(x_t,t)-x_0 \right \|_2^2

        信噪比(SNR)表示原始信号和噪声之间的比率。信噪比越高表示信号越多,信噪比越低表示噪声越多。在扩散模型中,我们需要随着t的增加,噪声越来越多,也就是信噪比越来越低。q(x_t|x_0)服从N(x_t;\sqrt{\bar{\alpha }_t}x_0,(1-\bar{\alpha }_t)I)的分布,因此上式可以进一步写为(推导过程如图):

\frac{1}{2\sigma _{q}^{2}(t)}\frac{\bar{\alpha }_{t-1}(1-\alpha _t)^2}{(1-\bar{\alpha }_t)^2}\left \| \hat{x}_{\theta }(x_t,t)-x_0 \right \|_2^2=\frac{1}{2}(SNR(t-1)-SNR(t))\left \| \hat{x}_{\theta }(x_t,t)-x_0 \right \|_2^2

基于此,我们使用神经网络来参数化SNR,并与扩散模型一起训练。

        由(2)可得,

x_0=\frac{x_t-\sqrt{1-\bar{\alpha }_t}\varepsilon }{\sqrt{\bar{\alpha }}_t}

代入(3)可得\mu _q=\frac{1}{\sqrt{\alpha _t}}(x_t-\frac{1-\alpha _t}{\sqrt{1-\bar{\alpha }_t}}\varepsilon )(推导过程如图)

在Dedoise过程中x_t已知,\alpha _t给定,\varepsilon就是要做的预测(可以从图像生成算法那部分的插图来配合理解)。因此,可以进一步假设\mu _{\theta }=\frac{1}{\sqrt{\alpha _t}}(x_t-\frac{1-\alpha _t}{\sqrt{1-\bar{\alpha }_t}}\hat{\varepsilon}_{\theta }(x_t,t) ),然后对优化目标进行进一步简化:

性质

扩散模型在特定参数化下的两个等价性

  • 训练时,与多噪声水平下的去噪得分匹配的等价性
  •  采样时,与退火朗之万动力学的等价性

参考文献

Ho J, Jain A, Abbeel P. Denoising diffusion probabilistic models[J]. Advances in neural information processing systems, 2020, 33: 6840-6851.(Denoising Diffusion Probabilistic Models)

Luo C. Understanding diffusion models: A unified perspective[J]. arXiv preprint arXiv:2208.11970, 2022.(https://arxiv.org/abs/2208.11970)

李宏毅老师课程:《Diffusion Model 背后的数学原理》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值