【深度学习】Diffusion扩散模型原理解析1

diffusion详解 阅读详情
AI摘要

本文深入解析Diffusion扩散模型的数学原理,涵盖前向加噪与逆扩散过程,基于马尔可夫假设构建概率框架,并通过变分下界推导训练目标函数,重点解释如何利用KL散度优化生成模型,适用于Stable Diffusion等前沿应用。

1、前言

diffusion,这几年一直很火的模型,比如这段时间在网上的文生图大模型——Stable diffusion。就是以diffusion作为基底模型,但由于该模型与VAE那边,都涉及了较多了概率论知识,实在让人望而却步。所以,本文将对diffusion进行数学原理推导,如果你没有上过概率论这门课,建议先去学。

论文:

①Deep Unsupervised Learning using Nonequilibrium Thermodynamics (arxiv.org)

②Denoising Diffusion Probabilistic Models (arxiv.org)

③Understanding Diffusion Models: A Unified Perspective (arxiv.org)

视频:【Diffusion扩散模型原理解析-哔哩哔哩】

案例演示:

在这里插入图片描述
受优快云篇幅限制,分成两篇,下一篇:【深度学习】Diffusion扩散模型原理解析2

2、Diffusion流程

2.1、运行流程

Diffusion分为两个步骤——扩散、逆扩散

在这里插入图片描述

扩散过程是对图像加入高斯噪声的过程(图中上半部分):

给定一张图像,然后构造T个时刻,每一个时刻对应一张图像,如图中t=0,对应我们给定的初始图像

然后,对这张图像加一个高斯噪声,得到t=1时刻的图像;再对t=1时刻的图像加入噪声,得到t=2时刻的噪声。然后重复此法,到T时刻时,就得到了一张全是噪点的图像(t=T)

逆扩散过程就是对图像减去噪声的过程,也就是还原图像的过程(图中下半部分):

给定一张全是噪点的图像,然后不断去噪,去到t=2时,得到图中的图像,再去噪,得到t=1时刻的图像,再再去噪,就还原回了坤坤的图像。

​

2.2、原因

为什么要费尽心思把它加入这么多噪声,再复原回来?

对于T时刻的图像,它是服从正态分布的,并且,是近似服从标准正态分布。那么,如果要生成图像,是不是可以直接从标准正态分布中采样出数据,然后一点点去噪,就能还原回原来的图像了呢?这就是diffusion的思想

2.3、前向加噪

记时刻1为原始图像,表示为 x 1 x_1 x1​,则时刻2表达为 x 2 x_2 x2​

每一个时刻都要加入一个噪声,那么该如何加噪呢?假设在 t − 1 t-1 t−1时刻,我们该如何得到 i i i时刻的图像?其公式如下
x t = α t x t − 1 + 1 − α t ϵ t (1) x_t=\sqrt\alpha_t x_{t-1}+\sqrt{1-\alpha_t}\epsilon_t\tag{1} xt​=α ​t​xt−1​+1−αt​ ​ϵt​(1)
x t − 1 、 x t x_{t-1}、x_t xt−1​、xt​分别表示 t − 1 t-1 t−1时刻和 t t t时刻的图像。 α t \alpha_t αt​一般是一个大于0小于1的超参数,随着时刻的增加而减小, ϵ t ∼ N ( 0 , I ) \epsilon_t\sim N(0,I) ϵt​∼N(0,I)的标准正态分布(Ps:为什么是加权平均,并且要开根号?感兴趣请看参考①)

从这个式子不难看出,这其实不是简单的从 x t − 1 x_{t-1} xt−1​中加噪,而是加权平均。

从 t − 1 t-1 t−1到 t t t可以用式(1)表示,那从 t − 2 t-2 t−2到 t t t呢?难道我们每次都要一次一次的加入噪声吗?有没有办法更好的表示?

我们先看一个正态分布的基本定理:

定理①:

假设: x 1 ∼ N ( 0 , σ 1 I ) , x 2 ∼ N ( 0 , σ 2 I ) x_1\sim N(0,\sigma_1I),x_2\sim N(0,\sigma_2I) x1​∼N(0,σ1​I),x2​∼N(0,σ2​I)

则: ( x 1 + x 2 ) ∼ N ( 0 , ( σ 1 + σ 2 ) I ) (x_1+x_2)\sim N(0,(\sigma_1+\sigma_2)I) (x1​+x2​)∼N(0,(σ1​+σ2​)I)

定理②:

假设: x 1 ∼ N ( 0 , I ) x_1 \sim N(0,I) x1​∼N(0,I)

则: a x 1 ∼ N ( 0 , a 2 I ) ax_1 \sim N(0,a^2I) ax1​∼N(0,a2I)

Ps:这几个定理证明很简单,此处不做证明,不懂的可以自行百度,或者问我。

现在,我们把 t − 2 t-2 t−2到 t t t由式(1)推导出来
x t = α t x t − 1 + 1 − α t ϵ t = α t ( α t − 1 x t − 2 + 1 − α t − 1 ϵ t − 1 ) + 1 − α t ϵ t = α t α t − 1 x t − 2 + α t ( 1 − α t − 1 ) ϵ t − 1 + 1 − α t ϵ t (2) \begin{aligned}x_t = &\sqrt\alpha_tx_{t-1}+\sqrt{1-\alpha_t}\epsilon_t\\=&\sqrt\alpha_t(\sqrt{\alpha_{t-1}}x_{t-2}+\sqrt{1-\alpha_{t-1}}\epsilon_{t-1})+\sqrt{1-\alpha_t}\epsilon_t\\=&\sqrt{\alpha_t\alpha_{t-1}}x_{t-2}+\sqrt{\alpha_{t}(1-\alpha_{t-1})}\epsilon_{t-1}+\sqrt{1-\alpha_t}\epsilon_t\end{aligned}\tag{2} xt​===​α ​t​xt−1​+1−αt​ ​ϵt​α ​t​(αt−1​ ​xt−2​+1−αt−1​ ​ϵt−1​)+1−αt​ ​ϵt​αt​αt−1​ ​xt−2​+αt​(1−αt−1​) ​ϵt−1​+1−αt​ ​ϵt​​(2)
其中 ϵ ∼ N ( 0 , I ) \epsilon \sim N(0,I) ϵ∼N(0,I)

由定理②可得: α t ( 1 − α t − 1 ) ϵ t − 1 ∼ N ( 0 , α t ( 1 − α t − 1 ) I ) \sqrt{\alpha_{t}(1-\alpha_{t-1})}\epsilon_{t-1} \sim N(0,\alpha_{t}(1-\alpha_{t-1})I) αt​(1−αt−1​) ​ϵt−1​∼N(0,αt​(1−αt−1​)I)

由定理②可得: 1 − α t ϵ t ∼ N ( 0 , ( 1 − α t ) I ) \sqrt{1-\alpha_t}\epsilon_{t} \sim N(0,(1-\alpha_t)I) 1−αt​ ​ϵt​∼N(0,(1−αt​)I)

所以由定理①可得:
α t ( 1 − α t − 1 ) ϵ t − 1 + 1 − α t ϵ t ∼ N ( 0 , ( α t ( 1 − α t − 1 ) + 1 − α t ) I ) → N ( 0 , ( 1 − α t α t − 1 ) I ) (3) \sqrt{\alpha_{t}(1-\alpha_{t-1})}\epsilon_{t-1}+\sqrt{1-\alpha_t}\epsilon_t \sim N(0,(\alpha_{t}(1-\alpha_{t-1})+1-\alpha_t)I)\rightarrow N(0,(1-\alpha_t\alpha_{t-1})I)\tag{3} αt​(1−αt−1​) ​ϵt−1​+1−αt​ ​ϵt​∼N(0,(αt​(1−αt−1​)+1−αt​)I)→N(0,(1−αt​αt−1​)I)(3)

而由定理②可知: N ( 0 , ( 1 − α t α t − 1 ) I ) → 1 − α t α t − 1 ϵ ˉ N(0,(1-\alpha_t\alpha_{t-1})I)\rightarrow\sqrt{1-\alpha_t\alpha_{t-1}}\bar\epsilon N(0,(1−αt​αt−1​)I)→1−αt​αt−1​ ​ϵˉ
N ( 0 , ( 1 − α t α t − 1 ) I ) → 1 − α t α t − 1 ϵ ˉ (4) N(0,(1-\alpha_t\alpha_{t-1})I)\rightarrow\sqrt{1-\alpha_t\alpha_{t-1}}\bar\epsilon\tag{4} N(0,(1−αt​αt−1​)I)→1−αt​αt−1​ ​ϵˉ(4)
其中 ϵ ˉ ∼ N ( 0 , I ) \bar\epsilon\sim N(0,I) ϵˉ∼N(0,I)

那么
α t α t − 1 x t − 2 + α t ( 1 − α t − 1 ) ϵ t − 1 + 1 − α t ϵ t ∼ N ( α t α t − 1 x t − 2 , ( 1 − α t α t − 1 ) I ) \sqrt{\alpha_t\alpha_{t-1}}x_{t-2}+\sqrt{\alpha_{t}(1-\alpha_{t-1})}\epsilon_{t-1}+\sqrt{1-\alpha_t}\epsilon_t\sim N(\sqrt{\alpha_t\alpha_{t-1}}x_{t-2},(1-\alpha_t\alpha_{t-1})I) αt​αt−1​ ​xt−2​+αt​(1−αt−1​) ​ϵt−1​+1−αt​ ​ϵt​∼N(αt​αt−1​ ​xt−2​,(1−αt​αt−1​)I)
所以不难看出式(3)直接等于式(4)

所以式(2)的后两项可直接用式(4)代换,得
x t = α t α t − 1 x t − 2 + 1 − α t α t − 1 ϵ ˉ x_t=\sqrt{\alpha_t\alpha_{t-1}}x_{t-2}+\sqrt{1-\alpha_t\alpha_{t-1}}\bar\epsilon xt​=αt​αt−1​ ​xt−2​+1−αt​αt−1​ ​ϵˉ
不难看出,现在就有了 x t − 2 x_{t-2} xt−2​图像和 x t x_t xt​的图像关系,就不需要再一步步加入噪声了,可以一步到位

所以,当求某个随机变量的概率时,可以写成

q ( x t ∣ x t − 2 ) ∼ N ( x t ∣ α t α t − 1 x t − 2 , ( 1 − α t α t − 1 ) I ) q(x_t|x_{t-2})\sim N(x_t|\sqrt{\alpha_t\alpha_{t-1}}x_{t-2},(1-\alpha_{t}\alpha_{t-1})I) q(xt​∣xt−2​)∼N(xt​∣αt​αt−1​ ​xt−2​,(1−αt​αt−1​)I)
为了更好的表示从0到 t t t时刻的概率分布,我们设 α ˉ t = ∏ i = 0 t α i \bar\alpha_t=\prod\limits_{i=0}^t\alpha_i αˉt​=i=0∏t​αi​

加噪的过程则可表示为
x t = α ˉ t x 0 + 1 − α ˉ t ϵ t (5) x_t=\sqrt{\bar\alpha_t}x_{0}+\sqrt{1-\bar\alpha_t}\epsilon_t\tag{5} xt​=αˉt​ ​x0​+1−αˉt​ ​ϵt​(5)
其概率分布表示为
q ( x t ∣ x 0 ) ∼ N ( x t ∣ α ˉ t x 0 , ( 1 − α ˉ t ) I ) (6) q(x_t|x_0)\sim N(x_t|\sqrt{\bar\alpha_t}x_{0},(1-\bar\alpha_t)I)\tag{6} q(xt​∣x0​)∼N(xt​∣αˉt​ ​x0​,(1−αˉt​)I)(6)
除此之外,为了后面的表达方便,作者还使用 β = 1 − α \beta = 1-\alpha β=1−α, β ˉ = 1 − α ˉ \bar\beta=1-\bar\alpha βˉ​=1−αˉ

因此,可得
x t = 1 − β ˉ t x t − 1 + β ˉ t ϵ t q ( x t ∣ x t − 1 ) ∼ N ( x t ∣ 1 − β t x t − 1 , β t I ) q ( x t ∣ x 0 ) ∼ N ( x t ∣ 1 − β ˉ t x 0 , β ˉ t I ) x_t=\sqrt{1-\bar\beta_t}x_{t-1}+\sqrt{\bar\beta_t}\epsilon_t\\q(x_t|x_{t-1})\sim N(x_t|\sqrt{1-\beta_t}x_{t-1},\beta_tI)\\ q(x_t|x_0)\sim N(x_t|\sqrt{1-\bar\beta_t}x_{0},\bar\beta_tI) xt​=1−βˉ​t​ ​xt−1​+βˉ​t​ ​ϵt​q(xt​∣xt−1​)∼N(xt​∣1−βt​ ​xt−1​,βt​I)q(xt​∣x0​)∼N(xt​∣1−βˉ​t​ ​x0​,βˉ​t​I)

2.4、逆扩散过程

得到了 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xt​∣xt−1​)的加噪过程及其概率分布。前面提到,我们的最终目标是从T时刻采样出数据,然后慢慢去噪,就得到生成的图像。那么,该如何去噪呢?换句话说,我们该如何求出 q ( x t − 1 ∣ x t ) q(x_{t-1}|x_t) q(xt−1​∣xt​)呢?

论文提出,当扩散过程的 β \beta β足够小,那么其逆操作,也同样符合正态分布,也就是 q ( x t − 1 ∣ x t ) ∼ N q(x_{t-1}|x_t)\sim N q(xt−1​∣xt​)∼N

2.5、一阶马尔可夫假设

在扩散过程中,模型总是一个时刻一个时刻地加噪,也就是说, t t t时刻的图像,是来自 t − 1 t-1 t−1时刻的

在这里插入图片描述

所以,在这种过程中,引入一个假设——马尔可夫假设

一阶马尔可夫假设:给定 t − 1 t-1 t−1时刻的状态, t t t时刻仅与 t − 1 t-1 t−1时刻有关,与过去的状态无关

概率表达为
q ( x t ∣ x t − 1 , x t − 2 , ⋯   , x 0 ) = q ( x t ∣ x t − 1 ) q(x_t|x_{t-1},x_{t-2},\cdots,x_0)=q(x_t|x_{t-1}) q(xt​∣xt−1​,xt−2​,⋯,x0​)=q(xt​∣xt−1​)
逆扩散也是一样的道理(按照图中箭头即可看到)
P ( x t − 1 ∣ x t , x t + 1 , ⋯   , x T ) = P ( x t − 1 ∣ x t ) P(x_{t-1}|x_t,x_{t+1},\cdots,x_T)=P(x_{t-1}|x_t) P(xt−1​∣xt​,xt+1​,⋯,xT​)=P(xt−1​∣xt​)
由马尔可夫假设,我们不难得出
q ( x 1 : T ∣ x 0 ) = q ( x 2 : T ∣ x 0 , x 1 ) q ( x 1 ∣ x 0 ) = q ( x 3 : T ∣ x 0 , x 1 , x 2 ) q ( x 2 ∣ x 0 , x 1 ) q ( x 1 ∣ x 0 ) = q ( x 3 : T ∣ x 0 , x 1 , x 2 ) q ( x 2 ∣ x 1 ) q ( x 1 ∣ x 0 ) \begin{aligned}q(x_{1:T}|x_0)=&q(x_{2:T}|x_0,x_1)q(x_{1}|x_0)\\=&q(x_{3:T}|x_0,x_1,x_2)q(x_{2}|x_0,x_1)q(x_{1}|x_0)\\=&q(x_{3:T}|x_0,x_1,x_2)q(x_{2}|x_1)q(x_{1}|x_0)\end{aligned}\nonumber q(x1:T​∣x0​)===​q(x2:T​∣x0​,x1​)q(x1​∣x0​)q(x3:T​∣x0​,x1​,x2​)q(x2​∣x0​,x1​)q(x1​∣x0​)q(x3:T​∣x0​,x1​,x2​)q(x2​∣x1​)q(x1​∣x0​)​
然后不断拆分,就得到了
q ( x 1 : T ∣ x 0 ) = ∏ t = 1 T q ( x t ∣ x t − 1 ) q(x_{1:T}|x_0)=\prod\limits_{t=1}^Tq(x_t|x_{t-1}) q(x1:T​∣x0​)=t=1∏T​q(xt​∣xt−1​)
逆扩散过程也同理, P ( x 0 : T − 1 ∣ x T ) = ∏ t = 1 T P ( x t − 1 ∣ x t ) P(x_{0:T-1}|x_T)=\prod\limits_{t=1}^TP(x_{t-1}|x_{t}) P(x0:T−1​∣xT​)=t=1∏T​P(xt−1​∣xt​)

3、Diffusion训练

3.1、目标函数

按照传统做法,直接对训练图片求极大似然,定义所有图像为 X X X
X = ( x 1 , x 2 , x 3 , . . , x n ) X=\begin{pmatrix}x^{1},x^{2},x^{3},..,x^n\end{pmatrix} X=(x1,x2,x3,..,xn​)
x i x^{i} xi是第 i i i个样本,样本之间独立同分布

对X求对数似然
log ⁡ P ( X ) = log ⁡ P ( x 1 , x 2 , . . . , x n ) = log ⁡ ∏ i = 1 n P ( x i ) = ∑ i = 1 n log ⁡ P ( x i ) \begin{aligned}\log P(X)=&\log P(x^1,x^2,...,x^n)\\=&\log\prod\limits_{i=1}^nP(x^{i})\\=&\sum\limits_{i=1}^n\log P(x^i)\end{aligned}\nonumber logP(X)===​logP(x1,x2,...,xn)logi=1∏n​P(xi)i=1∑n​logP(xi)​
我们先从某一个样本出发,为了简便,直接记作 P ( x ) P(x) P(x)。

而x是前向扩散的初始图像,为了区分不同时刻的图像,我们把 P ( x ) P(x) P(x)表示为 P ( x 0 ) P(x_0) P(x0​),代表是初始图像
log ⁡ P ( x 0 ) = log ⁡ P ( x 0 : T ) P ( x 1 : T ∣ x 0 ) \log P(x_0)=\log\frac{P(x_{0:T})}{P(x_{1:T}|x_0)} logP(x0​)=logP(x1:T​∣x0​)P(x0:T​)​
P ( x 0 : T ) = P ( x 0 , x 1 , ⋯   , x T ) P(x_{0:T})=P(x_0,x_1,\cdots,x_T) P(x0:T​)=P(x0​,x1​,⋯,xT​)

引入一个 q ( x 1 : T ∣ x 0 ) q(x_{1:T}|x_0) q(x1:T​∣x0​),在等式左右,关于 q ( x 1 : T ∣ x 0 ) q(x_{1:T}|x_0) q(x1:T​∣x0​)求积分

等式左边:
∫ log ⁡ P ( x 0 ) q ( x 1 : T ∣ x 0 ) d x 1 : T = log ⁡ P ( x 0 ) ∫ q ( x 1 : T ∣ x 0 ) d x 1 : T = log ⁡ P ( x 0 ) \int\log P(x_0)q(x_{1:T}|x_0)dx_{1:T}=\log P(x_0)\int q(x_{1:T}|x_0)dx_{1:T}=\log P(x_0) ∫logP(x0​)q(x1:T​∣x0​)dx1:T​=logP(x0​)∫q(x1:T​∣x0​)dx1:T​=logP(x0​)
等式右边:
∫ log ⁡ P ( x 0 : T ) P ( x 1 : T ∣ x 0 ) q ( x 1 : T ∣ x 0 ) d x 1 : T \int \log\frac{P(x_{0:T})}{P(x_{1:T}|x_0)}q(x_{1:T}|x_0)dx_{1:T} ∫logP(x1:T​∣x0​)P(x0:T​)​q(x1:T​∣x0​)dx1:T​
所以:
log ⁡ P ( x 0 ) = ∫ log ⁡ P ( x 0 : T ) P ( x 1 : T ∣ x 0 ) q ( x 1 : T ∣ x 0 ) d x 1 : T = ∫ log ⁡ P ( x 0 : T ) q ( x 1 : T ∣ x 0 ) P ( x 1 : T ∣ x 0 ) q ( x 1 : T ∣ x 0 ) q ( x 1 : T ∣ x 0 ) d x 1 : T = ∫ ( log ⁡ P ( x 0 : T ) q ( x 1 : T ∣ x 0 ) − log ⁡ P ( x 1 : T ∣ x 0 ) q ( x 1 : T ∣ x 0 ) ) q ( x 1 : T ∣ x 0 ) d x 1 : T = ∫ log ⁡ P ( x 0 : T ) q ( x 1 : T ∣ x 0 ) q ( x 1 : T ∣ x 0 ) d x 1 : T − ∫ log ⁡ P ( x 1 : T ∣ x 0 ) q ( x 1 : T ∣ x 0 ) q ( x 1 : T ∣ x 0 ) d x 1 : T = ∫ log ⁡ P ( x 0 : T ) q ( x 1 : T ∣ x 0 ) q ( x 1 : T ∣ x 0 ) d x 1 : T ⏟ ① + K L ( q ( x 1 : T ∣ x 0 ) ∣ ∣ P ( x 1 : T ∣ x 0 ) ) ⏟ ② \begin{aligned}\log P(x_0)=&\int \log\frac{P(x_{0:T})}{P(x_{1:T}|x_0)}q(x_{1:T}|x_0)dx_{1:T}\\=&\int\log \frac{\frac{P(x_{0:T})}{q(x_{1:T}|x_0)}}{\frac{P(x_{1:T}|x_0)}{q(x_{1:T}|x_0)}}q(x_{1:T}|x_0)dx_{1:T}\\=&\int\left(\log \frac{P(x_{0:T})}{q(x_{1:T}|x_0)}-\log\frac{P(x_{1:T}|x_0)}{q(x_{1:T}|x_0)} \right) q(x_{1:T}|x_0)dx_{1:T}\\=&\int\log \frac{P(x_{0:T})}{q(x_{1:T}|x_0)}q(x_{1:T}|x_0)dx_{1:T}-\int\log\frac{P(x_{1:T}|x_0)}{q(x_{1:T}|x_0)}q(x_{1:T}|x_0)dx_{1:T}\\=&\underbrace{\int\log \frac{P(x_{0:T})}{q(x_{1:T}|x_0)}q(x_{1:T}|x_0)dx_{1:T}}_{①}+\underbrace{KL(q(x_{1:T}|x_0)||P(x_{1:T}|x_0))}_{②}\end{aligned}\nonumber logP(x0​)=====​∫logP(x1:T​∣x0​)P(x0:T​)​q(x1:T​∣x0​)dx1:T​∫logq(x1:T​∣x0​)P(x1:T​∣x0​)​q(x1:T​∣x0​)P(x0:T​)​​q(x1:T​∣x0​)dx1:T​∫(logq(x1:T​∣x0​)P(x0:T​)​−logq(x1:T​∣x0​)P(x1:T​∣x0​)​)q(x1:T​∣x0​)dx1:T​∫logq(x1:T​∣x0​)P(x0:T​)​q(x1:T​∣x0​)dx1:T​−∫logq(x1:T​∣x0​)P(x1:T​∣x0​)​q(x1:T​∣x0​)dx1:T​① ∫logq(x1:T​∣x0​)P(x0:T​)​q(x1:T​∣x0​)dx1:T​​​+② KL(q(x1:T​∣x0​)∣∣P(x1:T​∣x0​))​​​
②是一个KL散度,但是 P ( x 1 : T ∣ x 0 ) P(x_{1:T}|x_0) P(x1:T​∣x0​)我们是没有办法求出来的。因此,我们可以选择去求出 q ( x 1 : T ∣ x 0 ) q(x_{1:T}|x_0) q(x1:T​∣x0​),由KL散度 ≥ 0 \ge0 ≥0可知,当两个概率分布相等,KL等于0,只需要让②最小,所以我们有一个优化目标,也就是最小化
min ⁡ K L ( q ( x 1 : T ∣ x 0 ) ∣ ∣ P ( x 1 : T ∣ x 0 ) ) \min KL(q(x_{1:T}|x_0)||P(x_{1:T}|x_0)) minKL(q(x1:T​∣x0​)∣∣P(x1:T​∣x0​))
而我们知道,当给定训练数据 x 0 x_0 x0​跟对应的似然参数时, log ⁡ P ( x 0 ) \log P(x_0) logP(x0​)的值是唯一确定的。对于一个确定的值,我们最小化②,就相当于最大化①。因为 log ⁡ P ( x 0 ) \log P(x_0) logP(x0​)是确定的,所以②变小,就意味着①增大,
max ⁡ ∫ z log ⁡ P ( x 0 : T ) q ( x 1 : T ∣ x 0 ) q ( x 1 : T ∣ x 0 ) d x 1 : T ↔ min ⁡ K L ( q ( x 1 : T ∣ x 0 ) ∣ ∣ P ( x 1 : T ∣ x 0 ) ) \max \int_{z}\log\frac{P(x_{0:T})}{q(x_{1:T}|x_0)}q(x_{1:T}|x_0)dx_{1:T} \leftrightarrow \min KL(q(x_{1:T}|x_0)||P(x_{1:T}|x_0)) max∫z​logq(x1:T​∣x0​)P(x0:T​)​q(x1:T​∣x0​)dx1:T​↔minKL(q(x1:T​∣x0​)∣∣P(x1:T​∣x0​))
由于式子②始终大于等于0,所以对于①,由于 log ⁡ P ( x 0 ) ≥ ① \log P(x_0)\ge① logP(x0​)≥①,所以①又被称为变分下界

所以,我们优化的,其实根本就不是极大似然,而是似然的变分下界,这也是一种无奈之举

优化其变分下界

log ⁡ P ( x 0 ) ≥ ∫ log ⁡ P ( x 0 : T ) q ( x 1 : T ∣ x 0 ) q ( x 1 : T ∣ x 0 ) d x 1 : T = E q [ log ⁡ P ( x 0 : T ) q ( x 1 : T ∣ x 0 ) ] = E q [ log ⁡ P ( x T ) P ( x 0 : T − 1 ∣ x T ) q ( x 1 : T ∣ x 0 ) ] = E q [ log ⁡ P ( x T ) + log ⁡ P ( x 0 : T − 1 ∣ x T ) q ( x 1 : T ∣ x 0 ) ] = E q [ log ⁡ P ( x T ) + log ⁡ ∏ t = 1 T P ( x t − 1 ∣ x t ) ∏ t = 1 T q ( x t ∣ x t − 1 ) ] = E q [ log ⁡ P ( x T ) + ∑ t = 1 T log ⁡ P ( x t − 1 ∣ x t ) q ( x t ∣ x t − 1 ) ] = E q [ log ⁡ P ( x T ) + ∑ t = 2 T log ⁡ P ( x t − 1 ∣ x t ) q ( x t ∣ x t − 1 ) + log ⁡ P ( x 0 ∣ x 1 ) q ( x 1 ∣ x 0 ) ] (7) \begin{aligned}\log P(x_0)\ge& \int\log \frac{P(x_{0:T})}{q(x_{1:T}|x_0)}q(x_{1:T}|x_0)dx_{1:T}\\=&\mathbb{E}_q\left[\log \frac{P(x_{0:T})}{q(x_{1:T}|x_0)}\right] \\=&\mathbb{E}_q\left[\log \frac{P(x_T)P(x_{0:T-1}|x_T)}{q(x_{1:T}|x_0)}\right]\\=&\mathbb{E}_q\left[\log P(x_T)+\log\frac{P(x_{0:T-1}|x_T)}{q(x_{1:T}|x_0)}\right]\\=&\mathbb{E}_q\left[\log P(x_T)+\log\frac{\prod\limits_{t=1}^{T}P(x_{t-1}|x_t)}{\prod\limits_{t=1}^Tq(x_t|x_{t-1})}\right]\\=&\mathbb{E}_q\left[\log P(x_T)+\sum\limits_{t=1}^T\log\frac{P(x_{t-1}|x_t)}{q(x_t|x_{t-1})}\right]\\=&\mathbb{E}_q\left[\log P(x_T)+\sum\limits_{t=2}^T\log\frac{P(x_{t-1}|x_t)}{\color{red}{q(x_t|x_{t-1})}}+\log\frac{P(x_{0}|x_1)}{q(x_1|x_0)}\right]\nonumber\end{aligned}\tag{7} logP(x0​)≥======​∫logq(x1:T​∣x0​)P(x0:T​)​q(x1:T​∣x0​)dx1:T​Eq​[logq(x1:T​∣x0​)P(x0:T​)​]Eq​[logq(x1:T​∣x0​)P(xT​)P(x0:T−1​∣xT​)​]Eq​[logP(xT​)+logq(x1:T​∣x0​)P(x0:T−1​∣xT​)​]Eq​ ​logP(xT​)+logt=1∏T​q(xt​∣xt−1​)t=1∏T​P(xt−1​∣xt​)​ ​Eq​[logP(xT​)+t=1∑T​logq(xt​∣xt−1​)P(xt−1​∣xt​)​]Eq​[logP(xT​)+t=2∑T​logq(xt​∣xt−1​)P(xt−1​∣xt​)​+logq(x1​∣x0​)P(x0​∣x1​)​]​(7)

对红色部分,由马尔可夫假设和条件概率公式可得
1 q ( x t ∣ x t − 1 ) = 1 q ( x t ∣ x t − 1 , x 0 ) = q ( x t − 1 ∣ x 0 ) q ( x t , x t − 1 ∣ x 0 ) = q ( x t − 1 ∣ x 0 ) q ( x t − 1 ∣ , x t , x 0 ) q ( x t ∣ x 0 ) \frac{1}{q(x_t|x_{t-1})}=\frac{1}{q(x_t|x_{t-1},x_0)}=\frac{q(x_{t-1}|x_0)}{q(x_{t},x_{t-1}|x_0)}=\frac{q(x_{t-1}|x_0)}{q(x_{t-1}|,x_{t},x_0)q(x_{t}|x_0)} q(xt​∣xt−1​)1​=q(xt​∣xt−1​,x0​)1​=q(xt​,xt−1​∣x0​)q(xt−1​∣x0​)​=q(xt−1​∣,xt​,x0​)q(xt​∣x0​)q(xt−1​∣x0​)​
将其代入式(7),可得
log ⁡ P ( x 0 ) ≥ E q [ log ⁡ P ( x T ) + ∑ t = 2 T log ⁡ P ( x t − 1 ∣ x t ) q ( x t − 1 ∣ x t , x 0 ) q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) + log ⁡ P ( x 0 ∣ x 1 ) q ( x 1 ∣ x 0 ) ] = E q [ log ⁡ P ( x T ) + ∑ t = 2 T [ log ⁡ P ( x t − 1 ∣ x t ) q ( x t − 1 ∣ x t , x 0 ) + log ⁡ q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) ] + log ⁡ P ( x 0 ∣ x 1 ) q ( x 1 ∣ x 0 ) ] = E q [ log ⁡ P ( x T ) + ∑ t = 2 T log ⁡ P ( x t − 1 ∣ x t ) q ( x t − 1 ∣ x t , x 0 ) + ∑ t = 2 T log ⁡ q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) + log ⁡ P ( x 0 ∣ x 1 ) q ( x 1 ∣ x 0 ) ] = E q [ log ⁡ P ( x T ) + ∑ t = 2 T log ⁡ P ( x t − 1 ∣ x t ) q ( x t − 1 ∣ x t , x 0 ) + log ⁡ ∏ t = 2 T q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) + log ⁡ P ( x 0 ∣ x 1 ) q ( x 1 ∣ x 0 ) ] (8) \begin{aligned}\log P(x_0)\ge&\mathbb{E}_q\left[\log P(x_T)+\sum\limits_{t=2}^T\log \frac{P(x_{t-1}|x_t)}{q(x_{t-1}|x_{t},x_0)}\frac{q(x_{t-1}|x_0)}{q(x_{t}|x_0)}+\log\frac{P(x_0|x_1)}{q(x_1|x_0)}\right]\\=&\mathbb{E}_q\left[\log P(x_T)+\sum\limits_{t=2}^T\left[\log \frac{P(x_{t-1}|x_t)}{q(x_{t-1}|x_{t},x_0)}+\log \frac{q(x_{t-1}|x_0)}{q(x_{t}|x_0)}\right]+\log\frac{P(x_0|x_1)}{q(x_1|x_0)}\right]\\=&\mathbb{E}_q\left[\log P(x_T)+\sum\limits_{t=2}^T\log \frac{P(x_{t-1}|x_t)}{q(x_{t-1}|x_{t},x_0)}+\sum\limits_{t=2}^T\log \frac{q(x_{t-1}|x_0)}{q(x_{t}|x_0)}+\log\frac{P(x_0|x_1)}{q(x_1|x_0)}\right]\\=&\mathbb{E}_q\left[\log P(x_T)+\sum\limits_{t=2}^T\log \frac{P(x_{t-1}|x_t)}{q(x_{t-1}|x_{t},x_0)}+{\color{red}\log\prod\limits_{t=2}^T \frac{q(x_{t-1}|x_0)}{q(x_{t}|x_0)}}+\log\frac{P(x_0|x_1)}{q(x_1|x_0)}\right]\end{aligned}\tag{8} logP(x0​)≥===​Eq​[logP(xT​)+t=2∑T​logq(xt−1​∣xt​,x0​)P(xt−1​∣xt​)​q(xt​∣x0​)q(xt−1​∣x0​)​+logq(x1​∣x0​)P(x0​∣x1​)​]Eq​[logP(xT​)+t=2∑T​[logq(xt−1​∣xt​,x0​)P(xt−1​∣xt​)​+logq(xt​∣x0​)q(xt−1​∣x0​)​]+logq(x1​∣x0​)P(x0​∣x1​)​]Eq​[logP(xT​)+t=2∑T​logq(xt−1​∣xt​,x0​)P(xt−1​∣xt​)​+t=2∑T​logq(xt​∣x0​)q(xt−1​∣x0​)​+logq(x1​∣x0​)P(x0​∣x1​)​]Eq​[logP(xT​)+t=2∑T​logq(xt−1​∣xt​,x0​)P(xt−1​∣xt​)​+logt=2∏T​q(xt​∣x0​)q(xt−1​∣x0​)​+logq(x1​∣x0​)P(x0​∣x1​)​]​(8)
标红那一部分,把连乘展开
log ⁡ ∏ t = 2 T q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) = log ⁡ q ( x 1 ∣ x 0 ) q ( x 2 ∣ x 0 ) ∗ q ( x 2 ∣ x 0 ) q ( x 3 ∣ x 0 ) ⋯ ∗ q ( x T − 2 ∣ x 0 ) q ( x T − 1 ∣ x 0 ) ∗ q ( x T − 1 ∣ x 0 ) q ( x T ∣ x 0 ) = log ⁡ q ( x 1 ∣ x 0 ) q ( x T ∣ x 0 ) \log\prod\limits_{t=2}^T \frac{q(x_{t-1}|x_0)}{q(x_{t}|x_0)}=\log\frac{q(x_1|x_0)}{q(x_2|x_0)}*\frac{q(x_2|x_0)}{q(x_3|x_0)}\cdots *\frac{q(x_{T-2}|x_0)}{q(x_{T-1}|x_0)}*\frac{q(x_{T-1}|x_0)}{q(x_T|x_0)}=\log \frac{q(x_1|x_0)}{q(x_T|x_0)} logt=2∏T​q(xt​∣x0​)q(xt−1​∣x0​)​=logq(x2​∣x0​)q(x1​∣x0​)​∗q(x3​∣x0​)q(x2​∣x0​)​⋯∗q(xT−1​∣x0​)q(xT−2​∣x0​)​∗q(xT​∣x0​)q(xT−1​∣x0​)​=logq(xT​∣x0​)q(x1​∣x0​)​
将其代入式(8),可得
log ⁡ P ( x 0 ) ≥ E q [ log ⁡ P ( x T ) + ∑ t = 2 T log ⁡ P ( x t − 1 ∣ x t ) q ( x t − 1 ∣ x t , x 0 ) + log ⁡ q ( x 1 ∣ x 0 ) q ( x T ∣ x 0 ) + log ⁡ P ( x 0 ∣ x 1 ) q ( x 1 ∣ x 0 ) ] = E q [ log ⁡ P ( x T ) + ∑ t = 2 T log ⁡ P ( x t − 1 ∣ x t ) q ( x t − 1 ∣ x t , x 0 ) + log ⁡ q ( x 1 ∣ x 0 ) − log ⁡ q ( x T ∣ x 0 ) + log ⁡ P ( x 0 ∣ x 1 ) q ( x 1 ∣ x 0 ) ] \begin{aligned}\log P(x_0)\ge&\mathbb{E}_q\left[\log P(x_T)+\sum\limits_{t=2}^T\log \frac{P(x_{t-1}|x_t)}{q(x_{t-1}|x_{t},x_0)}+\log \frac{q(x_{1}|x_0)}{q(x_{T}|x_0)}+\log\frac{P(x_0|x_1)}{q(x_1|x_0)}\right]\\=&\mathbb{E}_q\left[{\color{blue}\log P(x_T)}+\sum\limits_{t=2}^T\log \frac{P(x_{t-1}|x_t)}{q(x_{t-1}|x_{t},x_0)}+{\color{red}\log q(x_1|x_0)}-{\color{blue}\log q(x_T|x_0)}+{\color{red}\log\frac{P(x_0|x_1)}{q(x_1|x_0)}}\right]\end{aligned}\nonumber logP(x0​)≥=​Eq​[logP(xT​)+t=2∑T​logq(xt−1​∣xt​,x0​)P(xt−1​∣xt​)​+logq(xT​∣x0​)q(x1​∣x0​)​+logq(x1​∣x0​)P(x0​∣x1​)​]Eq​[logP(xT​)+t=2∑T​logq(xt−1​∣xt​,x0​)P(xt−1​∣xt​)​+logq(x1​∣x0​)−logq(xT​∣x0​)+logq(x1​∣x0​)P(x0​∣x1​)​]​
依据 log ⁡ \log log运算法则,将蓝色跟蓝色的式子结合起来(红色同理)
log ⁡ P ( x 0 ) ≥ E q [ log ⁡ P ( x T ) q ( x T ∣ x 0 ) + ∑ t = 2 T log ⁡ P ( x t − 1 ∣ x t ) q ( x t − 1 ∣ x t , x 0 ) + log ⁡ P ( x 0 ∣ x 1 ) ] = E q [ log ⁡ P ( x T ) q ( x T ∣ x 0 ) ] ⏟ ① + E q [ ∑ t = 2 T log ⁡ P ( x t − 1 ∣ x t ) q ( x t − 1 ∣ x t , x 0 ) ] ⏟ ② + E q [ log ⁡ P ( x 0 ∣ x 1 ) ] ⏟ ③ (9) \begin{aligned}\log P(x_0)\ge&\mathbb{E}_q\left[\log \frac{{P(x_T)}}{ q(x_T|x_0)}+\sum\limits_{t=2}^T\log \frac{P(x_{t-1}|x_t)}{q(x_{t-1}|x_{t},x_0)}+\log P(x_0|x_1)\right]\\=&\underbrace{\mathbb{E}_q\left[\log \frac{{P(x_T)}}{ q(x_T|x_0)}\right]}_{①}+\underbrace{\mathbb{E}_q\left[\sum\limits_{t=2}^T\log \frac{P(x_{t-1}|x_t)}{q(x_{t-1}|x_{t},x_0)}\right]}_{②}+\underbrace{\mathbb{E}_q\left[\log P(x_0|x_1)\right]}_{③}\end{aligned}\tag{9} logP(x0​)≥=​Eq​[logq(xT​∣x0​)P(xT​)​+t=2∑T​logq(xt−1​∣xt​,x0​)P(xt−1​∣xt​)​+logP(x0​∣x1​)]① Eq​[logq(xT​∣x0​)P(xT​)​]​​+② Eq​[t=2∑T​logq(xt−1​∣xt​,x0​)P(xt−1​∣xt​)​]​​+③ Eq​[logP(x0​∣x1​)]​​​(9)
从式(7)不难看出,里面的 q q q是 q ( x 1 : T ∣ x 0 ) q(x_{1:T}|x_0) q(x1:T​∣x0​),对于①

我们可得
E q [ log ⁡ P ( x T ) q ( x T ∣ x 0 ) ] = E q ( x T ∣ x 0 ) [ log ⁡ P ( x T ) q ( x T ∣ x 0 ) ] \mathbb{E}_q\left[\log \frac{P(x_T)}{q(x_T|x_0)}\right]=\mathbb{E}_{q(x_T|x_0)}\left[\log\frac{P(x_T)}{q(x_T|x_0)}\right] Eq​[logq(xT​∣x0​)P(xT​)​]=Eq(xT​∣x0​)​[logq(xT​∣x0​)P(xT​)​]
这是因为 q q q是 q ( x 1 : T ∣ x 0 ) q(x_{1:T}|x_0) q(x1:T​∣x0​),而 E q [ log ⁡ P ( x T ) q ( x T ∣ x 0 ) ] \mathbb{E}_q\left[\log \frac{P(x_T)}{q(x_T|x_0)}\right] Eq​[logq(xT​∣x0​)P(xT​)​]里面只有 x T x_T xT​这个随机变量,其他的随机变量里面都没有那关于 q ( x 1 : T − 1 ∣ x 0 ) q(x_{1:T-1}|x_0) q(x1:T−1​∣x0​)求期望时,就完全是对常数求期望一样,完全不变。如果你不明白,我们可以做个推导

我们先看①
E q [ log ⁡ P ( x T ) q ( x T ∣ x 0 ) ] = ∫ x 1 : T q ( x 1 : T ∣ x 0 ) log ⁡ P ( x T ) q ( x T ∣ x 0 ) d x 1 : T = ∫ x T ∫ x T − 1 ⋯ ∫ x 2 ∫ x 1 q ( x 1 : T ∣ x 0 ) log ⁡ P ( x T ) q ( x T ∣ x 0 ) d x 1 ⏟ d x 2 ⋯ d x T = ∫ x T ∫ x T − 1 ⋯ ∫ x 2 log ⁡ P ( x T ) q ( x T ∣ x 0 ) ∫ x 1 q ( x 1 : T ∣ x 0 ) d x 1 ⏟ d x 2 ⋯ d x T = ∫ x T ∫ x T − 1 ⋯ ∫ x 2 log ⁡ [ P ( x T ) q ( x T ∣ x 0 ) ] q ( x 2 : T ∣ x 0 ) d x 2 ⋯ d x T ⋮ = ∫ x T q ( x T ∣ x 0 ) log ⁡ P ( x T ) q ( x T ∣ x 0 ) d x T = E q ( x T ∣ x 0 ) [ log ⁡ P ( x T ) q ( x T ∣ x 0 ) ] = − K L ( q ( x T ∣ x 0 ) ∣ ∣ P ( x T ) ) \begin{aligned}\mathbb{E}_q\left[\log \frac{P(x_T)}{q(x_T|x_0)}\right]=&\int_{x_{1:T}} q(x_{1:T}|x_0)\log \frac{P(x_T)}{q(x_T|x_0)}dx_{1:T}\\=&\int_{x_T}\int_{x_{T-1}}\cdots \int_{x_{2}}\underbrace{\int_{x_1} q(x_{1:T}|x_0)\log\frac{P(x_T)}{q(x_T|x_0)}dx_1}dx_{2}\cdots dx_{T}\\=&\int_{x_T}\int_{x_{T-1}}\cdots \int_{x_{2}}\underbrace{\log\frac{P(x_T)}{q(x_T|x_0)}\int_{x_1} q(x_{1:T}|x_0)dx_1}dx_{2}\cdots dx_{T}\\=&\int_{x_T}\int_{x_{T-1}}\cdots \int_{x_{2}}\log\left[\frac{P(x_T)}{q(x_T|x_0)}\right] q(x_{2:T}|x_0)dx_{2}\cdots dx_{T}\\\vdots&\\=&\int_{x_T}q(x_{T}|x_0)\log \frac{P(x_T)}{q(x_T|x_0)}dx_T\\=&{\color{red}\mathbb{E}_{q(x_T|x_0)}\left[\log\frac{P(x_T)}{q(x_T|x_0)}\right]}\\=&-KL\left(q(x_T|x_0)||P(x_T)\right)\end{aligned}\nonumber Eq​[logq(xT​∣x0​)P(xT​)​]====⋮===​∫x1:T​​q(x1:T​∣x0​)logq(xT​∣x0​)P(xT​)​dx1:T​∫xT​​∫xT−1​​⋯∫x2​​ ∫x1​​q(x1:T​∣x0​)logq(xT​∣x0​)P(xT​)​dx1​​dx2​⋯dxT​∫xT​​∫xT−1​​⋯∫x2​​ logq(xT​∣x0​)P(xT​)​∫x1​​q(x1:T​∣x0​)dx1​​dx2​⋯dxT​∫xT​​∫xT−1​​⋯∫x2​​log[q(xT​∣x0​)P(xT​)​]q(x2:T​∣x0​)dx2​⋯dxT​∫xT​​q(xT​∣x0​)logq(xT​∣x0​)P(xT​)​dxT​Eq(xT​∣x0​)​[logq(xT​∣x0​)P(xT​)​]−KL(q(xT​∣x0​)∣∣P(xT​))​
对于②,③。也是一样的道理,所以式(9)得
log ⁡ P ( x 0 ) ≥ E q ( x 1 ∣ x 0 ) [ log ⁡ P ( x 0 ∣ x 1 ) ] + ∑ t = 2 T E q ( x t − 1 , x t ∣ x 0 ) [ log ⁡ P ( x t − 1 ∣ x t ) q ( x t − 1 ∣ x t , x 0 ) ] + E q ( x T ∣ x 0 ) [ log ⁡ P ( x T ) q ( x T ∣ x 0 ) ] = E q ( x 1 ∣ x 0 ) [ log ⁡ P ( x 0 ∣ x 1 ) ] + ∑ t = 2 T E q ( x t − 1 ∣ x 0 , x t ) q ( x t ∣ x 0 ) [ log ⁡ P ( x t − 1 ∣ x t ) q ( x t − 1 ∣ x t , x 0 ) ] + E q ( x T ∣ x 0 ) [ log ⁡ P ( x T ) q ( x T ∣ x 0 ) ] = E q ( x 1 ∣ x 0 ) [ log ⁡ P ( x 0 ∣ x 1 ) ] + ∑ t = 2 T E q ( x t ∣ x 0 ) ∫ q ( x t − 1 ∣ x 0 , x t ) log ⁡ P ( x t − 1 ∣ x t ) q ( x t − 1 ∣ x t , x 0 ) d x t − 1 + ∫ q ( x T ∣ x 0 ) log ⁡ P ( x T ) q ( x T ∣ x 0 ) d x T = E q ( x 1 ∣ x 0 ) [ log ⁡ P ( x 0 ∣ x 1 ) ] − ∑ t = 2 T E q ( x t ∣ x 0 ) [ K L ( q ( x t − 1 ∣ x t , x 0 ) ∣ ∣ P ( x t − 1 ∣ x t ) ) ] − K L ( q ( x T ∣ x 0 ) ∣ ∣ P ( x T ) ) (10) \begin{aligned}\log P(x_0)\ge& \mathbb{E}_{q(x_1|x_0)}\left[\log P(x_0|x_1)\right]+\sum\limits_{t=2}^T\mathbb{E}_{q(x_{t-1},x_{t}|x_0)}\left[\log \frac{P(x_{t-1}|x_t)}{q(x_{t-1}|x_{t},x_0)}\right]+\mathbb{E}_{q(x_T|x_0)}\left[\log\frac{P(x_T)}{q(x_T|x_0)}\right]\\=& \mathbb{E}_{q(x_1|x_0)}\left[\log P(x_0|x_1)\right]+\sum\limits_{t=2}^T\mathbb{E}_{q(x_{t-1}|x_0,x_{t})q(x_{t}|x_0)}\left[\log \frac{P(x_{t-1}|x_t)}{q(x_{t-1}|x_{t},x_0)}\right]+\mathbb{E}_{q(x_T|x_0)}\left[\log\frac{P(x_T)}{q(x_T|x_0)}\right]\\=&\mathbb{E}_{q(x_1|x_0)}\left[\log P(x_0|x_1)\right]+\sum\limits_{t=2}^T\mathbb{E}_{q(x_{t}|x_0)}\int q(x_{t-1}|x_0,x_t)\log \frac{P(x_{t-1}|x_t)}{q(x_{t-1}|x_{t},x_0)}dx_{t-1}+\int q(x_T|x_0)\log\frac{P(x_T)}{q(x_T|x_0)}dx_T\\=&\mathbb{E}_{q(x_1|x_0)}\left[\log P(x_0|x_1)\right]-\sum\limits_{t=2}^T\mathbb{E}_{q(x_t|x_0)}\left[KL(q(x_{t-1}|x_t,x_0)||P(x_{t-1}|x_t))\right]-KL\left(q(x_T|x_0)||P(x_T)\right)\end{aligned}\tag{10} logP(x0​)≥===​Eq(x1​∣x0​)​[logP(x0​∣x1​)]+t=2∑T​Eq(xt−1​,xt​∣x0​)​[logq(xt−1​∣xt​,x0​)P(xt−1​∣xt​)​]+Eq(xT​∣x0​)​[logq(xT​∣x0​)P(xT​)​]Eq(x1​∣x0​)​[logP(x0​∣x1​)]+t=2∑T​Eq(xt−1​∣x0​,xt​)q(xt​∣x0​)​[logq(xt−1​∣xt​,x0​)P(xt−1​∣xt​)​]+Eq(xT​∣x0​)​[logq(xT​∣x0​)P(xT​)​]Eq(x1​∣x0​)​[logP(x0​∣x1​)]+t=2∑T​Eq(xt​∣x0​)​∫q(xt−1​∣x0​,xt​)logq(xt−1​∣xt​,x0​)P(xt−1​∣xt​)​dxt−1​+∫q(xT​∣x0​)logq(xT​∣x0​)P(xT​)​dxT​Eq(x1​∣x0​)​[logP(x0​∣x1​)]−t=2∑T​Eq(xt​∣x0​)​[KL(q(xt−1​∣xt​,x0​)∣∣P(xt−1​∣xt​))]−KL(q(xT​∣x0​)∣∣P(xT​))​(10)
所以,式(10)就是我们要优化的目标函数

【深度学习】Diffusion模型 Diffusion基础理论入门 阅读详情

相关推荐

深度学习十大算法之Diffusion扩散模型

扩散模型的应用范围极为广泛,其在不同学科领域中的应用各有侧重。在物理学中,扩散模型被用来研究热传导、粒子扩散等现象。在生物学中,它帮助科学家们理解细胞内物质的传输机制。在化学领域,扩散模型对于分析化学反应和物质混合过程至关重要。此外,扩散模型在社会科学领域也发挥着重要作用。例如,在研究社会网络和人口迁移时,扩散模型可以用来模拟信息、趋势或行为模式的传播过程。在环境科学中,扩散模型用于研究污染物在环境中的扩散和分布。在经济学领域,扩散理论可以用来分析创新或新技术的市场渗透。

第欧根尼的酒桶的博客 3756

【diffusion】扩散模型详解!理论+代码

【diffusion】扩散模型详解!

m0_63642362的博客 6万+

扩散模型(Diffusion Model)基本原理及代码讲解

扩散模型是一种强大的生成模型,它通过模拟扩散和去噪过程来生成数据。尽管上述代码框架非常简化,但它提供了扩散模型基本原理的一个概览。在实际应用中,需要根据具体任务和数据集来设计和训练扩散模型。

IT深耕十余载,大道之简 3692

AI世界的魔法棒:扩散模型(Diffusion Models)究竟“神”在哪?

在当今科技迅猛发展的时代,人工智能已成为各领域的焦点。特别是扩散模型(Diffusion Models),作为一种新兴技术,正日益受到关注。这种基于深度学习的模型,通过模拟信息在神经网络中的传播过程,实现了对复杂系统的建模与预测。作为生成式人工智能的关键技术之一,扩散模型通过逐步去除噪声而生成数据的机制,成为多个技术领域的重要推动力。该模型能够处理多种类型的数据,如图像、文本、音频等,并能自动学习数据中的特征与模式。

Python栈_基的博客 2318

Stable Diffusion ——— LDM、SD 1.0, 1.5, 2.0、SDXL、SDXL-Turbo等版本之间关系与原理详解

假设你有一个自定义的数据集和标签train_dataset = ... # 你的训练数据集eval_dataset = ... # 你的验证数据集# 加载基础模型# 配置训练参数# 创建 Trainer# 开始训练Stable Diffusion 作为一种强大的图像生成模型,通过不断迭代更新,逐步改进其生成能力和适应性。理解各个版本之间的关系及其背后的原理,不仅可以帮助开发者更好地使用这些模型,还能够为定制和优化模型提供思路。

小蜗牛的珍贵百宝箱 2285

深度学习系列(10):扩散模型(Diffusion Model)详解

扩散模型(Diffusion Model)是一种生成模型,通过模拟数据从噪声分布到目标数据分布的扩散过程。与 GAN 和 VAE 等模型不同,扩散模型通过正向扩散过程和反向去扩散过程生成数据。扩散模型在图像生成领域表现出色,尤其是在生成质量上超过了传统生成对抗网络(GAN)。正向扩散过程:将数据逐步加噪,直到变成纯噪声。反向去扩散过程:通过去噪过程从噪声恢复数据。

Azperk的博客 1968

计算机视觉|从0到1揭秘Diffusion:图像生成领域的新革命

Diffusion 模型以其独特的扩散机制,成为图像生成领域的革新力量。通过正反向扩散,它实现了从噪声到高质量图像的转换,在图像、文本和音频生成中表现卓越,突破传统模型局限。其数学基础坚实,稳定性强,适用性广,推动了多领域创新。尽管面临效率和调参挑战,优化方案如 DDIM 已初见成效。

紫雾凌寒 3140

【深度学习常用算法】十一、扩散模型:从原理到Stable Diffusion的全面解析与实战

摘要:本文系统阐述了扩散模型(Diffusion Models)的核心原理及其在图像生成和分子设计领域的前沿应用。作为生成式AI的重要分支,扩散模型通过逐步加噪和去噪过程实现高质量数据生成,相比GAN具有训练稳定性高、可解释性强等优势。文中详细解析了前向扩散过程、反向去噪过程、变分下界推导等关键技术,通过PyTorch实现完整的DDPM(去噪扩散概率模型)和Stable Diffusion框架,并在CIFAR-10数据集和药物分子设计任务中验证有效性。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1245

【扩散模型核心思想讲解】李宏毅 2023 最新 Diffusion Model 原理讲解

本文为 Diffusion Model 课程的学习笔记,详细讲解了扩散模型(Diffusion Model)的基本原理、应用场景、以及与其他生成模型如 VAE 和 GAN 的对比。

kebijuelun的博客 8756

生成模型实战 | 扩散模型(Diffusion Model)

扩散模型已成为生成高分辨率图像的首选方法。扩散模型的成功在于其能够模拟并逆转复杂的噪声添加过程,这一过程模仿了如何从抽象模式中构建图像。这种方法不仅确保了生成高质量图像,还在生成图像的多样性和准确性之间保持了平衡。在本节中,首先介绍扩散模型的数学基础。然后,深入解析 U-Net 的架构,用于去噪图像并生成高分辨率花卉图像。最后,将介绍扩散模型的训练过程以及训练后的模型生成图像的过程。

盼小辉丶的博客 6961

PyTorch深度学习实战(49)——扩散模型(Diffusion Model)详解与实现

扩散模型通过正向过程逐步向图像添加噪声,再通过逆向过程逐步去噪以生成高质量图像。本节以花卉图像生成为例,详细阐述了扩散模型的数学原理、U-Net 架构及其在去噪中的应用,包括注意力机制和跳跃连接的作用。同时,提供了完整的 PyTorch 实现流程,涵盖数据预处理、模型构建、训练及图像生成步骤,展示了从随机噪声逐步生成清晰花卉图像的过程。

盼小辉丶的博客 3960

AI前沿技术:扩散模型Diffusion

本文摘要重点介绍了扩散模型(Diffusion Models)这一AI前沿技术。文章首先阐述了该技术在当今AI领域的重要性,指出Python语言在AI开发中的核心地位。随后详细解析了扩散模型的核心概念、技术原理和关键术语,包括理论基础、代码实现和实践应用三个维度。通过Python代码示例展示了扩散模型的基础实现,涵盖了参数初始化、前向传播、损失计算、反向传播等核心算法原理。文章采用结构化方式呈现知识体系,强调扩散模型在数据处理、模型构建和训练优化中的关键作用,为读者提供了系统掌握这一前沿技术的完整学习路径。

编程世界如山海,探索不止。 1万+

AI绘画工具背后的视觉技术:Stable Diffusion解析

AI绘画工具背后的视觉技术:Stable Diffusion解析​ ,人工智能,计算机视觉,大模型,AI,在数字化浪潮的推动下,AI 绘画以迅猛之势闯入大众视野,成为近年来艺术与科技领域融合的璀璨明星。随着深度学习算法的不断演进,AI 绘画工具如 Midjourney、DALL - E、Stable Diffusion 等层出不穷,它们凭借强大的图像生成能力,颠覆了传统绘画创作模式。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 17万+

扩散模型(Diffusion Model)原理讲解 数学公式推导 简洁易懂版

扩散模型数学公式全流程推导,从可以理解的概率分布的角度出发,包括对前向过程,逆向过程,模型训练,模型原理的理解。

m0_63933060的博客 4540

扩散模型Diffusion Model原理与代码实例讲解

扩散模型Diffusion Model原理与代码实例讲解 1.背景介绍 扩散模型(Diffusion Model)是近年来在生成模型领域中崭露头角的一种新型方法。它通过模拟数据的逐步演化过程,生成高质量的样本。与传统的生成对抗网络(GAN)和变分自编码器(VAE)相比

AI天才研究院 2026

Windows下Colmap编译安装全攻略:从Boost到CUDA的避坑指南

本文详细介绍了在Windows系统下编译安装Colmap三维重建工具的完整流程与实战经验。针对Boost库版本兼容性、CUDA与Visual Studio的版本匹配等常见难题提供了具体的避坑指南和解决方案,帮助开发者高效完成从环境配置到最终部署的全过程。

weixin_28235513的博客 199

Stable Diffusion扩散模型原理与PyTorch实现

深入解析Stable Diffusion扩散模型的核心原理,结合PyTorch框架和CUDA加速,展示如何通过容器化环境快速部署图像生成应用。涵盖前向扩散与反向去噪机制、模型结构设计及实战推理步骤,帮助开发者高效上手并优化生成流程。

weixin_31163455的博客 1129

深入解析路科验证V0实验lab1:SV接口与时钟块实战

本文深入解析了路科验证V0实验Lab1的核心内容,重点阐述了SystemVerilog接口与时钟块在验证环境搭建中的关键作用。通过拆解router_io接口设计、时钟块同步机制及程序块封装,详细讲解了如何构建稳定可靠的验证通信基础,并提供了复位时序分析与常见调试技巧,为后续复杂验证打下坚实基础。

peach的博客 430

深入解析 Latent Diffusion Model(潜在扩散模型,LDMs)(代码实现)

传统扩散模型在像素空间直接操作的特性导致其训练和推理过程计算成本极高,限制了其在高分辨率图像生成中的广泛应用。为了解决这一问题,Latent Diffusion Model(潜在扩散模型,LDMs)应运而生,它通过在潜在空间中运行扩散过程,显著降低了计算复杂度,同时保留甚至提升了生成质量。

阿正的梦工坊 1万+

淋巴结病理数字玻片读取与处理代码

Whole-slide images are generally stored in a multi-resolution pyramid structure. 首先安装openslide模块 pip install openslide-python import os.path as osp import openslide from pathlib import Path...

猫头军师兵书 1276

【同等学力】2005-数学⭐✨

有r个正方形排成一行,今用红、黄、白、蓝四种颜色给这个r个正方形染色,每个正方形只能染一种颜色,如果要求染红、黄、白色的正方形分别至少出现一个,问有多少种不同的染法?3、(4分)设G是一个有n个结点m条边的连通简单平面图,若n≥3,则m≤3n-6.4、(4分)证明:任何连通简单平面图至少有一个结点的度数不超过5

super_mochi1 306

DIFFUSION(扩散模型基石—DDPM)

扩散模型(Diffusion Model)是一类十分先进的基于扩散思想的深度学习生成模型。生成模型除了扩散模型之外,还有出现较早的VAE(Varitational Auto-Encoder,变分自编码器)和GAN(Generative Adversarial Net, 生成对抗网络)等,他运用物理热力学中的扩散思想,主要包括前向扩散和反向扩散两个过程。

weixin_48136514的博客 3523

2、稳定性问题全景图——死机、重启、ANR、Crash、黑屏五大类

当 Crash 发生在 system_server、surfaceflinger、mediaserver 等关键系统进程中时,其后果等同于系统级故障,可能触发 Zygote 重启甚至 kernel panic。这类问题在稳定性治理中的优先级应等同于 P0。

woailuojp的博客 49
上一篇: 【深度学习】VAE变分自编码器原理推导+Python代码实现
下一篇: 【深度学习】Diffusion扩散模型的逆扩散问题
篝火者2312
博客等级 码龄5年 833粉丝 64原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值