08.Diffusion Model数学原理分析(上)

文章目录


部分截图来自原课程视频《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) x0q(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 αˉt x0+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) ϵθ(αˉt x0+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} xt1的公式可用下图表示,黄色部分忘记标上 δ 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=1mPθ(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=1mPθ(xi)=argθmaxlogi=1mPθ(xi)=argθmaxi=1mlogPθ(xi)argθmaxExPdata[logPθ(x)]=argθmaxxPdata(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θmaxxPdata(x)logPθ(x)dx=argθmax(xPdata(x)logPθ(x)dx xPdata(x)logPdata(x)dx)=argθmaxxPdata(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θ(xz)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θ(xz)如果采用如下定义:
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θ(xz)={1,G(z)=x0,G(z)=x
表示 z z z通过网络刚好与我们要的图片完全相同,那么就记为1,否则记为0。在图像生成任务这样做会使得上面的表达大概率是0,因为图片即使有1个像素不同也会使得 P θ ( x ∣ z ) = 0 P_\theta(x|z)=0 Pθ(xz)=0
解决的方法就是用一个范围来表示网络的输出,如下图所示, G ( z ) G(z) G(z)表示一个高斯分布的Mean:
在这里插入图片描述
P θ ( x ∣ z ) P_\theta(x|z) Pθ(xz)的定义就变成:
P θ ( x ∣ z ) ∝ exp ⁡ ( − ∣ ∣ G ( z ) − x ∣ ∣ 2 ) P_\theta(x|z)\propto \exp(-||G(z)-x||_2) Pθ(xz)exp(∣∣G(z)x2)
表示 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(zx)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(zx)dz=1(这里的 q ( z ∣ x ) q(z|x) q(zx)是任意一个分布,积分起来就是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(zx)log(P(zx)P(z,x))dz=zq(zx)log(q(zx)P(z,x)P(zx)q(zx))dz=zq(zx)log(q(zx)P(z,x))dz+zq(zx)log(P(zx)q(zx))dzzq(zx)log(q(zx)P(z,x))dz=Eq(zx)[log(q(zx)P(x,z))]
上面倒数第二行中的最后一项可以看成是两个分布的KL散度,两个分布由于不可能相似,所以该项大于0,所以就写成:
K L ( q ( z ∣ x ) ∣ ∣ P ( z ∣ x ) ) ≥ 0 KL(q(z|x)||P(z|x))\geq0 KL(q(zx)∣∣P(zx))0
所以才推导出整个式子的下限,最后可以写成期望的形式,其中的 q ( z ∣ x ) q(z|x) q(zx)就是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θ(xt1xt)exp(∣∣G(xt)xt12)
那么某张图片 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θ(xT1xT)Pθ(xt1xt)Pθ(x0x1)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:xTx0)[log(q(x1:xTx0)P(x0:xT))]
其中,表示Forward Process的 q ( x 1 : x T ∣ x 0 ) q(x_1:x_T|x_0) q(x1:xTx0)可以写为:
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:xTx0)=q(x1x0)q(x2x1)q(xTxT1)

VAE与DDPM二者的下界对比如下图,就不画表格了。
在这里插入图片描述
下面来看上面公式中Forward Process中的通项 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1)如何计算,在DDPM中, x t x_t xt x t − 1 x_{t-1} xt1的关系如下图所示:
在这里插入图片描述
β 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(xtxt1)是一个高斯分布,其Mean为: 1 − β t x t \sqrt{1-\beta_t}x_t 1βt xt,各个维度的Variance都一样,是: β t \sqrt{\beta_t} βt

Reverse Process的通项 q ( x t ∣ x 0 ) q(x_t|x_0) q(xtx0)在理论上应该是一步步计算的:
在这里插入图片描述
注: q ( x t ∣ x 0 ) q(x_t|x_0) q(xtx0)的意思是给定清晰图片 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(xtx0)系数分别为: 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} αˉt 1αˉ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:Tx0)[logq(x1:Tx0)p(x0:T)]=Eq(x1:Tx0)[logt=1Tq(xtxt1)p(xT)t=1Tpθ(xt1xt)]=Eq(x1:Tx0)[logq(x1x0)t=2Tq(xtxt1)p(xT)pθ(x0x1)t=2Tpθ(xt1xt)]=Eq(x1:Tx0)[logq(x1x0)t=2Tq(xtxt1,x0)p(xT)pθ(x0x1)t=2Tpθ(xt1xt)]=Eq(x1:Tx0)[logq(x1x0)p(xT)pθ(x0x1)+logt=2Tq(xtxt1,x0)pθ(xt1xt)]=Eq(x1:Tx0) logq(x1x0)p(xT)pθ(x0x1)+logt=2Tq(xt1x0)q(xt1xt,x0)q(xtx0)pθ(xt1xt) =Eq(x1:Tx0) logq(x1x0)p(xT)pθ(x0x1)+logt=2Tq(xt1x0) q(xt1xt,x0)q(xtx0) pθ(xt1xt) =Eq(x1:Tx0)[logq(x1x0) p(xT)pθ(x0x1)+logq(xTx0)q(x1x0) +logt=2Tq(xt1xt,x0)pθ(xt1xt)]=Eq(x1:Tx0)[logq(xTx0)p(xT)pθ(x0x1)+t=2Tlogq(xt1xt,x0)pθ(xt1xt)]=Eq(x1:Tx0)[logpθ(x0x1)]+Eq(x1:Tx0)[logq(xTx0)p(xT)]+t=2TEq(x1:Tx0)[logq(xt1xt,x0)pθ(xt1xt)]=Eq(x1x0)[logpθ(x0x1)]+Eq(xTx0)[logq(xTx0)p(xT)]+t=2TEq(xt,xt1x0)[logq(xt1xt,x0)pθ(xt1xt)]=reconstruction term Eq(x1x0)[logpθ(x0x1)]prior matching term DKL(q(xTx0)∣∣p(xT))t=2Tdenoising matching term Eq(xtx0)[DKL(q(xt1xt,x0)∣∣pθ(xt1xt))]
原文公式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越好,这里推导第一项的过程与第三项相似,因此只推导第三项。

写到这里由于字数太多,需要令开一篇。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/135208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法-(11)---有序表(OrderedList)

🌈个人主页: Aileen_0v0 🔥系列专栏:PYTHON学习系列专栏 💫"没有罗马,那就自己创造罗马~" 目录 知识回顾及总结 有序表的引入 ​编辑 实现有序表 1.有序表-类的构造方法 2.有序表-search方法的实现 3.有序表-add方法的实现…

【技术类-01】doc转PDF程序卡死的解决方案,

摘要: 1、出现 raise AttributeError("%s.%s" % (self._username_, attr))) 2、表现:doc转PDF卡死(白条不动或出现以上英文) 3、解决:在docx保存代码行后面加上time.sleep(3) 4、原因&#x…

SpringBoot系列之集成Redission入门与实践教程

Redisson是一款基于java开发的开源项目,提供了很多企业级实践,比如分布式锁、消息队列、异步执行等功能。本文基于Springboot2版本集成redisson-spring-boot-starter实现redisson的基本应用 软件环境: JDK 1.8 SpringBoot 2.2.1 Maven 3.2…

Java进阶篇--线程池之FutureTask

目录 FutureTask简介 FutureTask的基本使用 FutureTask的应用场景 FutureTask简介 FutureTask是Java中的一个类,用于表示可获取结果的异步任务。它实现了java.util.concurrent.Future接口,提供了启动和取消异步任务、查询任务是否已完成以及获取最终…

腾讯云3年云服务器价格及购买教程

腾讯云作为国内领先的云计算服务提供商,提供了多种优惠的云服务器套餐,以满足不同用户的需求,本文将详细介绍腾讯云3年云服务器价格及购买教程,新老用户均可购买! 1、活动页面:传送门>>> 2、进入…

P3379 【模板】最近公共祖先(LCA)

洛谷里面8页题解千篇一律,就没有用线段树求解的,这下不得不由本蒟蒻来生啃又臭又硬,代码又多的线段树了。 样例的欧拉序列:4 2 4 1 3 1 5 1 4 记录每个节点最早在欧拉序列中的时间,任意两个节点的LCA就是他们两个节点…

Flink -- 状态与容错

1、Stateful Operations 有状态算子: 有状态计算,使用到前面的数据,常见的有状态的算子:例如sum、reduce,因为它们在计算的时候都是用到了前面的计算的结果 总结来说,有状态计算并不是独立存在的&#xf…

ssh免密登录

单机 1 生成密钥 执行 ssh-keygen -t rsa ( 其中 rsa 是非对称算法) 一路回车到底,生成密钥 且生成之后会在用户的根目录生成一个 “.ssh”的文件夹 2 添加公钥到 将 公钥内容追加到 authorized_keys 中: cat ~/.ssh/id_rsa.pub …

汽车网络安全渗透测试概述

目录 1.汽车网络安全法规概述 1.1 国外标准 1.2 国内标准 2.汽车网络安全威胁分析 2.1 汽车网络安全资产定义 2.2 汽车网络安全影响场景及评级示例 3.汽车网络安全渗透测试描述 3.1 参考法规 3.2 渗透测试内容 4.小结 1.汽车网络安全法规概述 近年来,汽车…

科技创意赋能乡村文旅振兴

近日,由北京大学创意产业研究中心联合中国国际科技促进会新基建专委会共同主办的“科技创意赋能乡村振兴研讨会”在京举行,与会专家学者围绕“和美乡村共同富裕智慧文旅”主题进行深入探讨。北京大学创意产业研究中心副主任吕艺、国家文化和旅游公共服务…

Android UI 开发·界面布局开发·案例分析

目录 ​编辑 1. 线性布局(LinearLayout) 2. 相对布局(RelativeLayout) 3. 表格布局(TableLayout) 4. 帧布局(FrameLayout) 5. 网格布局(GridLayout&#xff0…

Linux 学习(CentOS 7)

CentOS 7 学习 Linux系统内核作者: Linux内核版本 内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。 Linux内核版本又分为稳定版和开发版,两种版本是相互关联&am…

【小白专用】VSCode下载和安装与配置PHP开发环境(详细版) 23.11.08

1. 下载VSCode2. 解决VSCode下载速度特别慢3. 安装VSCode 一、VSCode介绍 VSCode 是一款由微软开发且跨平台的免费源代码编辑器;该软件支持语法高亮、代码自动补全、代码重构、查看定义功能,并且内置了命令行工具和 Git 版本控制系统。 二、官方下载地址…

网络带宽基础知识简单介绍

网络带宽基础知识简单介绍 前言一、网络带宽是什么?二、影响网络带宽的因素三、网络带宽的单位总结 前言 最近一些需求涉及到了网络带宽,整理后有了本文 一、网络带宽是什么? 网络带宽是指在单位时间内(一般指的是1秒钟&#xf…

django+drf+vue 简单系统搭建 (1) - django创建项目

本系列文章为了记录自己第一个系统生成过程,主要使用django,drf,vue。本人非专业人士,此文只为记录学习,若有部分描述不够准确的地方,烦请指正。 建立这个系统的原因是因为,在生活中,很多觉得可以一两行代码…

Flutter的专属Skia引擎解析+用法原理

Skia是一款跨平台的2D图形库,是Google公司开发的,可以用于开发各种应用程序,如浏览器、游戏、移动应用程序等。Skia引擎的主要特点是速度快、可移植性强、占用的内存少、稳定性佳,适用于多种硬件平台。 Skia的目标是提供快速、高…

基于GCC的工具objdump实现反汇编

一:objdump介绍 在 Linux中,一切皆文件。 Linux 编程实际上是编写处理各种文件的代码。系统由许多类型的文件组成,但目标文件具有一种特殊的设计,提供了灵活和多样的用途。 目标文件是包含带有附加地址和值的助记符号的路线图。这…

kubernetes集群编排(7)

目录 k8s认证授权 pod绑定sa 认证 授权 k8s认证授权 pod绑定sa [rootk8s2 ~]# kubectl create sa admin //在当前 Kubernetes 集群中创建一个名为 "admin" 的新服务账户[rootk8s2 secret]# vim pod3.yaml apiVersion: v1 kind: Pod metadata:name: mypod spec…

Paste v4.1.2(Mac剪切板)

Paste for Mac是一款运行在Mac OS平台上的剪切板小工具,拥有华丽的界面效果,剪切板每一条记录可显示(预览)文本,图片等记录的完整内容,可以记录最近指定条数的剪切板信息,方便用户随时调用&…

软件测试入门之接口测试

首先,什么是接口呢? 接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。 系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你…