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

news2024/11/24 10:37:47

文章目录


部分截图来自原课程视频《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.coloradmin.cn/o/1187090.html

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

相关文章

Vue el-table序号与复选框hover切换

效果图下&#xff1a; <template><div class"container"><el-tableref"multipleTable"id"multipleTable":data"person.tableData"cell-mouse-enter"cellEnter"cell-mouse-leave"cellLeave"selecti…

Hive3 on Spark3配置

1、软件环境 1.1 大数据组件环境 大数据组件版本Hive3.1.2Sparkspark-3.0.0-bin-hadoop3.2 1.2 操作系统环境 OS版本MacOSMonterey 12.1Linux - CentOS7.6 2、大数据组件搭建 2.1 Hive环境搭建 1&#xff09;Hive on Spark说明 Hive引擎包括&#xff1a;默认 mr、spark、…

【C++】详解 void*

文章目录 1. void *是什么&#xff1f;2. void*详解3. 和void的区别4. 应用场景4.1 函数传参时不确定类型&#xff0c;或者要支持多类型的传参&#xff1b;4.2 当函数的返回值不考虑类型指关心大小的时候 5. 总结 今天看到一段代码&#xff0c;觉得非常有意思。 void* say_hell…

人车实时精准管控!北斗让换流站作业更安全

换流站是高压直流输电系统的核心组成部分&#xff0c;对促进电网稳定运行、保障电力行业的可持续发展有着重要作用。长期以来&#xff0c;随着电网主变改扩建设工程的开展&#xff0c;站内作业人员安全管控压力随之增大&#xff0c;仅依靠传统的“人盯人”和“自主”管控模式较…

【Linux基础IO篇】用户缓冲区、文件系统、以及软硬链接

【Linux基础IO篇】用户缓冲区、文件系统、以及软硬链接 目录 【Linux基础IO篇】用户缓冲区、文件系统、以及软硬链接深入理解用户缓冲区缓冲区刷新问题缓冲区存在的意义 File模拟实现C语言中文件标准库 文件系统认识磁盘对目录的理解 软硬链接软硬链接的删除文件的三个时间 作者…

20 _ 散列表(下):为什么散列表和链表经常会一起使用?

有两种数据结构,散列表和链表,经常会被放在一起使用。 例如,如何用链表来实现LRU缓存淘汰算法,但是链表实现的LRU缓存淘汰算法的时间复杂度是O(n),当时我也提到了,通过散列表可以将这个时间复杂度降低到O(1)。 Redis的有序集合是使用跳表来实现的,跳表可以看作一种改进…

SpringBoot中的Environment

暂且理解成整个application.properties 通过Environment 可以访问application.properties中的任何配置 这里用yml配置 具体实用

CSS 对齐、组合选择符、伪类、伪元素、导航栏

一、CSS 对齐&#xff1a; 1&#xff09;、元素居中对齐&#xff1a; 水平居中对齐一个元素&#xff0c;可以使用margin&#xff1a;auto&#xff0c;设置到元素的宽度将防止它溢出到容器的边缘。元素通过指定宽度&#xff0c;并将两边的空外边距平均分配。示例&#xff1a; …

如何快速教你看自己电脑cpu是几核几线程

目录 一、我们日常中说的电脑多少核多少线程&#xff0c;很多人具体不知道什么意思&#xff0c;下面举例4核和4线程什么意思。二、那么4线程又是怎么回事呢&#xff1f;三、那么知道了上面的介绍后怎么看一台电脑是几核&#xff0c;几线程呢&#xff1f; 一、我们日常中说的电脑…

C语言每日一题(26)移除链表元素

力扣网 203. 移除链表元素 题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 思路分析 针对如图的普通情况&#xff0c;不能简单的遍历到对应位置然后进行释放&#xff0c;一方…

Linux内核有什么之内存管理子系统有什么第三回 —— 小内存分配(1)

接前一篇文章&#xff1a;Linux内核有什么之内存管理子系统有什么第二回 —— 单刀直入 本文内容参考&#xff1a; 内存分配不再神秘&#xff1a;深入剖析malloc函数实现原理与机制 系统调用与内存管理&#xff08;sbrk、brk、mmap、munmap&#xff09; 特此致谢&#xff01;…

智安网络|探索人机交互的未来:自然语言处理的前沿技术

自然语言处理是人工智能领域中研究人类语言和计算机之间交互的一门学科。它涉及了语言的理解、生成、翻译、分类和摘要等多个方面。随着人们对自然语言处理的重视和需求不断增长&#xff0c;成为了热门的研究方向。 首先&#xff0c;我们需要了解自然语言处理的基本概念。自然…

Qt实现动态桌面小精灵(含源码)

目录 一、设计思路 二、部分源码演示 三、源码地址 🌈write in front🌈 🧸大家好,我是三雷科技.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由三雷科技原创 CSDN首发🐒 如需转载还请通知⚠️ 📝个人主页:三雷科技🧸—CSDN博客 🎁欢…

c语言贪吃蛇项目的实现

ncurse的引入 ncurse的概念 ncurse(new curses)是一套编程库&#xff0c;它提供了一系列的函数&#xff0c;以便使用者调用它们去生成基于文本的用户界面。 ncurses是一个能提供功能键定义(快捷键),屏幕绘制以及基于文本终端的图形互动功能的动态库。ncurses用得最多的地方是…

C++二分算法: 找出第 K 小的数对距离

题目 数对 (a,b) 由整数 a 和 b 组成&#xff0c;其数对距离定义为 a 和 b 的绝对差值。 给你一个整数数组 nums 和一个整数 k &#xff0c;数对由 nums[i] 和 nums[j] 组成且满足 0 < i < j < nums.length 。返回 所有数对距离中 第 k 小的数对距离。 示例 1&#x…

LeetCode-94. 二叉树的中序遍历(C++)

目录捏 一、题目描述二、示例与提示三、思路四、代码 一、题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 二、示例与提示 示例 1&#xff1a; 输入&#xff1a; root [1,null,2,3] 输出&#xff1a; [1,3,2] 示例 2&#xff1a; 输入&#xf…

引入依赖时,对应类能点击进入,运行时报错

引入依赖时&#xff0c;对应类能点击进入&#xff0c;运行时报错 一、问题二、解决问题的过程三、解决方式1、排除其中一个依赖的公共包2、升级旧依赖 一、问题 我的问题是这样的&#xff1a;以前引入了阿里云文字识别的依赖&#xff0c;最近要调用视频活体检测的接口&#xf…

flutter笔记:骨架化加载器

flutter笔记 骨架化加载器 - 文章信息 - Author: Jack Lee (jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/article/details/134224135 【介绍】&#xff1a;本文介…

windows服务器限制特定ip访问指定端口(服务器ip白名单)

有些时候我们需要限制特定的ip白名单来访问服务器的指定端口&#xff0c;来防止dos攻击或其他危险访问&#xff0c;我们可以通过防火墙来实现这一需求&#xff0c;下面一起看一下&#xff1a; 1.首先开启防火墙 ps:开启防火墙可能有些端口会无法访问&#xff0c;比如80、443等…

【JavaEE】HTTPS协议(对称加密、非对称加密、中间人攻击、证书)

一、什么是HTTPS&#xff1f; 1.1 什么是HTTPS&#xff1f; HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层 1.2 为什么引入HTTPS&#xff1f; HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况 比如臭名昭著的…