Diffusion 扩散模型:论生成领先多样性,GAN太单一;论尊贵清晰度独占鳌头,VAE常失真

 


扩散模型 对比 GAN 和 VAE

原先,图像生成领域最常见生成模型有 GAN 和 VAE。

  • 生成模型是,学习数据分布的模型

后来,Diffusion 扩散模型也是生成模型,且在图像生成上,优于 GAN 和 VAE。

VAE 的一个主要缺点是生成的样本常常会模糊、失真,这是因为它在生成样本时可能存在一些不完美的地方。

GAN 因为需要同时训练生成器和判别器,并且很难找到一个平衡点。生成器有时候会通过一些“捷径”欺骗判别器,导致生成的效果不佳

此外,GAN生成的样本多样性有限,只适用于特定的判别器。

作者提出了一种改进的方法,即扩散模型(Diffusion Model)。

扩散模型在生成样本时采用了一种不同的方式,它通过在生成过程中逐渐扩散噪声来生成样本。

这种方法使得生成的样本更加清晰、真实,并且能够保持更好的多样性。

扩散模型的训练过程也更加稳定,不需要像GAN那样同时训练生成器和判别器。

相反,扩散模型只需要在生成过程中进行逐步的扩散操作,使生成的样本逐渐接近真实分布。

这种训练方式可以避免生成器通过“捷径”欺骗判别器的问题,提高了生成效果。

通过逐步扩散噪声的方式生成样本,提高了生成样本的质量和多样性,并且具有更稳定的训练过程

扩散模型为什么好过GAN?

GAN 生成对抗网络有一个内生缺陷。

由于程序互相对抗的标准是人类导师给定的样本,因此生成的内容实质上只是对现有内容无限地逼近模仿,而模仿则意味着无法实现真正的突破。

问题:GAN依赖于对真实数据的模仿。它们通过模仿人类提供的样本数据来生成新的图像,这可能限制创新性和多样性,因为生成的内容主要是对现有内容的逼近。

对抗过程,100% 地依赖人类这个庄家在背后的投喂能力。

而人类本质是个人和群体视角,不是全局视角,这便埋下了隐患。

再好的人类导师,也只能是扶着学生上马。

超越的境界,本质上还是要靠学生自身的领悟力与触类旁通的创新能力。

GAN 的 判别器D 和 生成器G,两个最终都没有超越人类导师的局限性的天花板。

Diffusion 是自己探索的过程。

如滴入一杯清水中的墨滴一样,慢慢散开最终变成一片浑浊。

如果这个过程可逆,就可以创造由一片浑浊去探寻最初墨滴状态的方法。

为什么把一张图加上噪点,再去掉噪点变回一张图,就可以不仅学会数据分布,还能创新?

听起来将噪声添加到图像中,然后再去除这些噪声,看似是一个无意义的过程。

您有一幅精细的画作。如果您在这幅画上逐渐加入噪声(比如点、线、模糊等),画面将逐渐失去原有的形态,最终变成一片混乱。

在这个过程中,画的每一部分都以不同的方式逐渐变得不可识别。

这个逐步增加噪声的过程就是扩散模型中的“前向过程”。

重要的部分来了:当使用扩散模型时,AI不仅学习如何将噪声添加到图像中,更重要的是,它学习了如何从这片混乱中恢复出原始的图像。

这就是“逆向过程”。

在这个逆向过程中,AI必须理解图像中每个像素的原始状态,以及这些像素是如何相互关联的,从而能够准确地去除噪声,恢复图像。

通过这种方式,AI学习到的不仅仅是图像本身的特征,还包括图像中的内容如何随着噪声的增加而逐渐变化和消失。

这意味着,当AI需要生成新图像或重建图像时,它已经理解了图像的深层结构和像素间的复杂关系。

因此,尽管看起来像是给图像加噪声再去噪声的简单过程,实际上扩散模型学习到的不仅仅是简单的图像恢复。

更重要的是,它理解了图像各部分如何相互关联,以及这些部分如何随噪声增加或减少而变化。

这个过程超越了简单的图像复制或模仿,而是向AI提供了对图像深层结构的深入理解。

 
比如有一张详细的地图图像,这张地图上有各种元素:城市、河流、道路和山脉。

  1. 加噪声(熵增加):首先,我们逐渐向这张地图图像中添加噪声。

    初始阶段,噪声较少,地图上的城市和河流等特征仍然可辨识。

    但随着更多噪声的加入,地图上的元素开始变得模糊和混乱。

    在噪声达到最大时,原始地图的所有细节都被噪声完全覆盖,图像变得完全随机和无序。

  2. 去噪声(熵减少):现在,扩散模型的任务是逆转这个过程,从高噪声的状态逐步恢复出清晰的地图图像。

    在这个过程中,AI不仅要去除噪声,更重要的是要理解和重建地图上的各种元素之间的关系。

    例如,AI学习到河流通常穿过城市,道路连接城市,山脉可能影响河流的流向。

    它不是简单地记住每个像素应该是什么颜色,而是理解这些元素如何共同构成一个有意义的整体。

通过这种学习过程,AI学习到的不仅仅是地图上每个单独元素的外观,而是这些元素如何相互作用和组合以形成一个连贯、逻辑的地理布局。

这种理解远远超出了简单地复制地图上的特定城市或河流的形状。

当AI需要生成新的地图图像或进行相关的复杂图像处理任务时,它能够利用对这些元素之间关系的深入理解来创造出新的、

符合逻辑的地图布局,而不仅仅是复制已知的地图样式。

这使得扩散模型在图像生成和处理方面具有强大的能力,不仅仅局限于重现已有的图像内容。

  • GAN = 模仿对抗 —> 逼近训练的原始图像 —> 生成器陷入了特定的模式或模式,无法生成覆盖整个数据范围的多样化输出

  • 扩散 = 迭代重建 —> 理解所有元素间的关系、深层结构 —> 不仅逼近原始图像,还能生成从未见过且合理的新图像

GAN 什么场景 比 扩散模型 好?

尽管 GAN 在多样性方面不如 Diffusion,但只能说 GAN 在创意创新略逊于 Diffusion 框架。

GAN 的核心思路在其他领域也有很大的价值。

AI 就是对这个世界的算法的模拟。

GAN 对抗思维,就是这个宇宙的运行规律的。

这个世界只有在二元对立的条件下才能发生有意义的演化,没有对立的世界就没有进步。

对立的存在是推动事物发展和变化的关键因素。

在很多情况下,对立的力量确实是创造变化和发展的重要动力。

 

扩散原理

扩散模型的目的是什么?

  • 学习从纯噪声生成图片的方法。

扩散模型是怎么做的?

  • 训练一个 U-Net,接受一系列加了噪声的图片,学习预测所加的噪声。
  • 分为两个部分:前向过程(扩散过程)和反向过程(复原过程)。

前向过程在干啥?

  • 对于训练集中的每张图片,扩散模型可以生成一系列噪声程度不同的加噪图片。
  • 在训练时,这些不同程度的噪声图片以及生成它们所用的噪声被视为实际的训练样本,用于优化扩散模型的参数。
  • 前向过程如下图,墨水滴入一杯水中,最终会 均匀的分布 至整个水杯里,将噪声均匀分布到整个空间,变成纯噪声。
  • 如果有 2 个物质混合在一起,分别是高密度的和低密度的,那么高密度的物质就会扩散到低密度,比如喷了香水,随着时间的扩散,最后香水就会充斥着整个房间,最后趋向于平衡。

反向过程在干啥?

  • 当扩散模型训练好之后,我们可以使用该模型来进行采样和生成图片。
  • 通过输入一段随机噪声,扩散模型可以生成对应的图像,这些生成的图像可以具有高质量和逼真度。

扩散模型的创新点是什么?

  • 先假设扩散、复原过程都符合高斯分布,沿着时间轴,均值和方差的迭代公式。
  • 之所以假设成高斯分布是正确的,因为ta可以作为一种近似描述扩散过程的分布,并且符合中心极限定理和大数定律的性质。
  • 之所以假设成高斯分布而不是其他分布,是因为ta是简单的分布,运算量小,使得扩散速度运算速度快。

扩散过程:加噪声,均匀分布到整个空间

前向过程:实现均匀的分布,直到稳定状态

假设真实图像 x 0 x_{0} x0 的分布是 q ( x 0 ) q(x_{0}) q(x0)

前向传播过程,是把真实图像的分布,经过 T T T 次不断添加高斯噪声,变成纯噪声。

扩散过程公式 q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) q(x_t|x_{t-1})=\mathcal{N}(x_t;\sqrt{1-\beta_t}x_{t-1},\beta_t\mathbf{I}) q(xtxt1)=N(xt;1βt xt1,βtI)

  • q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1):每一步向图片添加噪声的过程,现在 x t x_{t} xt 与过去有关(上一个状态 x t − 1 x_{t-1} xt1),和过去的过去无关。每一个噪声都是在前一时刻增加噪声而来的。
  • N N N 就是不断添加高斯噪声
  • β t \beta_t βt:控制每个时间步的状态转移的速度,是一个递减的序列,随着时间的推移,扩散过程的速度逐渐减慢。通过调整 β t \beta_t βt的值,我们可以控制生成样本的清晰度和细节。
重参数:避免梯度消失、爆炸

上述公式是一步步迭代过来的,求 x t x_{t} xt 需要用 x 0 x_{0} x0 x t − 1 x_{t-1} xt1,链条太长了。

这很容易导致梯度爆炸、消失。

而且有一个致命的缺陷,就是生成模型很慢。

因为每一次恢复都只能一步一步的向前恢复,而不像GAN,GAN只要训练好了这个模型,只要给他一个噪声,他就能恢复出图像,做一次的模型 forward 就够了。

可引入重参数化技巧解决这俩个问题。

重参数化:把随机变量变成,确定性的函数和独立性噪声项的和。

x t x_{t} xt 的分布转化为 μ μ μ ε ε ε 的分布,变成线性组合: x t = μ + ε x_{t}=μ+ε xt=μ+ε

  • μ 是一个确定性的项,是高斯分布的均值
  • ε 是一个独立且随机的噪声项

这样一来,我们可以通过估计 μ 和 ε 的分布参数来间接地推断出 X t X_{t} Xt 的分布参数。

α t = 1 − β t \alpha_t=1-\beta_t αt=1βt a ‾ t = 1 t ∑ i = 1 t a i \overline{a}_{t}=\frac{1}{t}\sum_{i=1}^ta_{i} at=t1i=1tai

  • x t = α t x t − 1 + 1 − α t ϵ t − 1 x_t=\sqrt{\alpha_t}x_{t-1}+\sqrt{1-\alpha_t}\epsilon_{t-1} xt=αt xt1+1αt ϵt1
  • x t = α t x 0 + 1 − a ‾ t ϵ x_t=\sqrt{\alpha_t}x_{0}+\sqrt{1-\overline{a}_t}\epsilon xt=αt x0+1at ϵ

因为每一步添加的噪声都独立,且服从正态分布,可得出:

  • 扩散公式 q ( x t ∣ x 0 ) = N ( x t ; a ‾ t x 0 , ( 1 − a ‾ t ) I ) q(x_t|x_{0})=\mathcal{N}(x_t;\sqrt{\overline{a}_t}x_{0},(1-\overline{a}_t)\mathbf{I}) q(xtx0)=N(xt;at x0,(1at)I)

复原过程:去噪声,恢复原始图像

复原过程:

复原公式: p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)=\mathcal{N}(\mathbf{x}_{t-1};\boldsymbol{\mu}_\theta(\mathbf{x}_t,t),\boldsymbol{\Sigma}_\theta(\mathbf{x}_t,t)) pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t))

已知 x t x_{t} xt 推导 x t − 1 x_{t-1} xt1 的过程中,需要得到在 t t t 时刻的噪声 μ θ 、 Σ θ \boldsymbol{\mu}_\theta、\boldsymbol{\Sigma}_\theta μθΣθ,但这些目前都不知道。

如果给定了某个训练集输入 x 0 x_{0} x0,多了一个限定条件后,该分布是可以用贝叶斯公式计算的。

而训练的时候已知真实图像 x 0 x_{0} x0,可先求一个后验扩散条件概率,把反向过程全部变回前向过程:

q ( x t − 1 ∣ x t , x 0 ) = N ( x t − 1 ; μ ~ ( x ~ t , x 0 ) , β ~ t I ) \begin{gathered}q(x_{t-1}|x_t,x_0)=\mathcal{N}(x_{t-1};\tilde{\mu}(\tilde{x}_t,x_0),\tilde{\beta}_t\mathbf{I})\end{gathered} q(xt1xt,x0)=N(xt1;μ~(x~t,x0),β~tI)

  • 分布的均值 μ ~ = 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ t ) 分布的均值 \tilde{\mu}=\frac1{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\mathbf{\epsilon}_t\right) 分布的均值μ~=αt 1(xt1αˉt 1αtϵt)
  • 分布的方差 β ~ t = 1 − α ˉ t − 1 1 − α ˉ t ⋅ β t 分布的方差\tilde{\beta}_t=\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\cdot\beta_t 分布的方差β~t=1αˉt1αˉt1βt

损失函数:交叉熵损失,变分推断

只要定义好损失函数,就能学习这些均值、方差的参数了。

因为 β ~ t \tilde{\beta}_t β~t 是一个常数,和输入没有关系,训练去噪网络只需要拟合 T T T 个均值 μ ~ \tilde{\mu} μ~ 即可。

训练神经网络只差最后的问题了:该怎么设置训练的损失函数?

加噪声和去噪声操作都是正态分布,网络的训练目标应该是让每对正态分布更加接近。

那怎么用损失函数描述两个分布尽可能接近呢?

最直观的想法,肯定是让两个正态分布的均值尽可能接近,方差尽可能接近。

因为方差是常量,只用让均值尽可能接近就可以了。

损失函数: L = E q ( x 0 ) [ − log ⁡ p θ ( x 0 ) ] \mathcal{L}=\mathbb{E}_{q(x_0)}[-\log p_\theta(x_0)] L=Eq(x0)[logpθ(x0)]

  • p θ ( x 0 ) p_\theta(x_{0}) pθ(x0) 是原图分布, θ \theta θ 是权重参数
  • q ( x 0 ) q(x_0) q(x0) 是复原的原图分布, E \mathbb{E} E 是期望
  • L \mathcal{L} L 是最小化交叉熵,相当于对比原件、复印件,使得差异越小越好

原图分布 p θ ( x 0 ) p_\theta(x_0) pθ(x0) 是不知道的,可以用变分推断:

  • 首先找出对数的上界: − log ⁡ p θ ( x 0 ) ≤ − log ⁡ p θ ( x 0 ) + D K L ( q ( x 1 : T ∣ x 0 ) ∣ ∣ p θ ( x 1 : T ∣ x 0 ) ) \begin{aligned} -\log p_\theta(x_0)& \leq-\log p_\theta(x_0)+D_{KL}(q(x_{1:T}|x_0)||p_\theta(x_{1:T}|x_0)) \end{aligned} logpθ(x0)logpθ(x0)+DKL(q(x1:Tx0)∣∣pθ(x1:Tx0))

最小化上界,就可以等价替换 − log ⁡ p θ ( x 0 ) -\log p_\theta(x_0) logpθ(x0) 了:

  • − log ⁡ p θ ( x 0 ) ≤ − log ⁡ p θ ( x 0 ) + D K L ( q ( x 1 : T ∣ x 0 ) ∣ ∣ p θ ( x 1 : T ∣ x 0 ) ) -\log p_\theta(x_0) \leq-\log p_\theta(x_0)+D_{KL}(q(x_{1:T}|x_0)||p_\theta(x_{1:T}|x_0)) logpθ(x0)logpθ(x0)+DKL(q(x1:Tx0)∣∣pθ(x1:Tx0))

使用贝叶斯公式,展开 KL 散度:

  • − log ⁡ p θ ( x 0 ) ≤ − log ⁡ p θ ( x 0 ) + E q ( x 1 : T ∣ x 0 ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) / p θ ( x 0 ) ] ; w h e r e p θ ( x 1 : T ∣ x 0 ) -\log p_\theta(x_0) \leq-\log p_\theta(x_0)+\mathbb{E}_{q(x_{1:T}|x_{0})}\left[\log\frac{q(x_{1:T}|x_{0})}{p_{\theta}(x_{0:T})/p_{\theta}(x_{0})}\right];\quad\mathrm{where}\quad p_{\theta}(x_{1:T}|x_{0}) logpθ(x0)logpθ(x0)+Eq(x1:Tx0)[logpθ(x0:T)/pθ(x0)q(x1:Tx0)];wherepθ(x1:Tx0)

使用 log 运算,把乘法变成加法,把除法变成减法:

  • − log ⁡ p θ ( x 0 ) ≤ − log ⁡ p θ ( x 0 ) + E q ( x 1 , T ∣ x 0 ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) + log ⁡ p θ ( x 0 ) ⏟ 与 q 无关 ] -\log p_\theta(x_0) \leq-\log p_\theta(x_0)+\mathbb{E}_{q(x_{1,T}|x_0)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}+\underbrace{\log p_\theta(x_0)}_{\text{与}q\text{无关}} \right] logpθ(x0)logpθ(x0)+Eq(x1,Tx0) logpθ(x0:T)q(x1:Tx0)+q无关 logpθ(x0)

因为与 q(预测分布) 无关,所以 log ⁡ p θ ( x 0 ) ⏟ 与 q 无关 \underbrace{\log p_\theta(x_0)}_{\text{与}q\text{无关}} q无关 logpθ(x0) 不受 E q \mathbb{E}_q Eq 影响,可以移项到括号外,和括号外的 − log ⁡ p θ ( x 0 ) -\log p_\theta(x_0) logpθ(x0) 抵消:

  • − log ⁡ p θ ( x 0 ) ≤ E q ( x 1 : T ∣ x 0 ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] -\log p_\theta(x_0) \leq\mathbb{E}_{q(x_{1:T}|x_0)}\left[\log\frac{q(x_{1:T}|x_0)}{p_{\theta}(x_{0:T})}\right] logpθ(x0)Eq(x1:Tx0)[logpθ(x0:T)q(x1:Tx0)]

对不等式左右,求 E q ( x 0 ) \mathbb{E}_{q}(x_{0}) Eq(x0) 的期望:

  • E q ( x 0 ) [ − log ⁡ p θ ( x 0 ) ] ≤ E q ( x 0 ) ( E q ( x 1 : T ∣ x 0 ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] ) \begin{aligned}\mathbb{E}_{q(x_0)}[-\log p_\theta(x_0)]&\leq\mathbb{E}_{q(x_0)}\left(\mathbb{E}_{q(x_1:T\mid x_0)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}\right]\right)\end{aligned} Eq(x0)[logpθ(x0)]Eq(x0)(Eq(x1:Tx0)[logpθ(x0:T)q(x1:Tx0)])

 


假设条件概率分布 q ( x 1 : T ∣ x 0 ) q(x_{1:T}|x_0) q(x1:Tx0) 可以分解为 q ( x 1 ∣ x 0 ) q ( x 2 ∣ x 0 ) . . . q ( x T ∣ x 0 ) q(x_1|x_0)q(x_2|x_0)...q(x_T|x_0) q(x1x0)q(x2x0)...q(xTx0)

将原始表达式展开:

  • E q ( x 1 ∣ x 0 ) q ( x 2 ∣ x 0 ) . . . q ( x T ∣ x 0 ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] \mathbb{E}{q(x_1|x_0)q(x_2|x_0)...q(x_T|x_0)}[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}] Eq(x1x0)q(x2x0)...q(xTx0)[logpθ(x0:T)q(x1:Tx0)]

根据条件独立性假设,可以将每个条件概率 q ( x i ∣ x 0 ) q(x_i|x_0) q(xix0) 的期望移到外层,得到:

  • E q ( x 1 ∣ x 0 ) [ E q ( x 2 ∣ x 0 ) [ … E q ( x T ∣ x 0 ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] …   ] ] \mathbb{E}_{q(x_1|x_0)}\left[\mathbb{E}_{q(x_2|x_0)}\left[\dots \mathbb{E}_{q(x_T|x_0)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}\right]\dots\right]\right] Eq(x1x0)[Eq(x2x0)[Eq(xTx0)[logpθ(x0:T)q(x1:Tx0)]]]

将这个表达式重新组织,将内层的期望写在外层的期望中,得到:

  • E q ( x 0 : T ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] \mathbb{E}_{q(x_0:T)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}\right] Eq(x0:T)[logpθ(x0:T)q(x1:Tx0)]

E q ( x 0 : T ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] \mathbb{E}_{q(x_0:T)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}\right] Eq(x0:T)[logpθ(x0:T)q(x1:Tx0)] 进行重命名,我们得到了最终的形式 L VLB L_{\text{VLB}} LVLB

完整变形过程:

  • E q ( x 0 ) [ − log ⁡ p θ ( x 0 ) ] ≤ E q ( x 0 ) ( E q ( x 1 : T ∣ x 0 ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] ) \begin{aligned}\mathbb{E}_{q(x_0)}[-\log p_\theta(x_0)]&\leq\mathbb{E}_{q(x_0)}\left(\mathbb{E}_{q(x_1:T\mid x_0)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}\right]\right)\end{aligned} Eq(x0)[logpθ(x0)]Eq(x0)(Eq(x1:Tx0)[logpθ(x0:T)q(x1:Tx0)])

  • E q ( x 0 ) [ − log ⁡ p θ ( x 0 ) ] ≤ E q ( x 0 : T ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] ( L VLB ) \mathbb{E}_{q(x_0)}[-\log p_\theta(x_0)]\leq\mathbb{E}_{q(x_0:T)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}\right]\quad (L_{\text{VLB}}) Eq(x0)[logpθ(x0)]Eq(x0:T)[logpθ(x0:T)q(x1:Tx0)]LVLB

  • L VLB = E q ( x 0 : T ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] L_{\text{VLB}} = \mathbb{E}_{q(x_0:T)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}\right] LVLB=Eq(x0:T)[logpθ(x0:T)q(x1:Tx0)]

 


展开 L VLB L_{\text{VLB}} LVLB

L V L B = E q ( x 0 : T ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] = E q [ log ⁡ ∏ t = 1 T q ( x t ∣ x t − 1 ) p θ ( x T ) ∏ t = 1 T p θ ( x t − 1 ∣ x t ) ] = E q [ − log ⁡ p θ ( x T ) + ∑ t = 1 T log ⁡ q ( x t ∣ x t − 1 ) p θ ( x t − 1 ∣ x t ) ] = E q [ − log ⁡ p θ ( x T ) + ∑ t = 2 T log ⁡ q ( x t ∣ x t − 1 ) p θ ( x t − 1 ∣ x t ) + log ⁡ q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ − log ⁡ p θ ( x T ) + ∑ t = 2 T log ⁡ ( q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) ⋅ q ( x t ∣ x 0 ) q ( x t − 1 ∣ x 0 ) ) + log ⁡ q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ − log ⁡ p θ ( x T ) + ∑ t = 2 T log ⁡ q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) + ∑ t = 2 T log ⁡ q ( x t ∣ x 0 ) q ( x t − 1 ∣ x 0 ) + log ⁡ q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ − log ⁡ p θ ( x T ) + ∑ t = 2 T log ⁡ q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) + log ⁡ q ( x T ∣ x 0 ) q ( x 1 ∣ x 0 ) + log ⁡ q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ log ⁡ q ( x T ∣ x 0 ) p θ ( x T ) + ∑ t = 2 T log ⁡ q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) − log ⁡ p θ ( x 0 ∣ x 1 ) ] = E q [ D K L ( q ( x T ∣ x 0 ) ∣ p θ ( x T ) ) ⏟ L T + ∑ t = 2 T D K L ( q ( x t − 1 ∣ x t , x 0 ) ∥ p θ ( x t − 1 ∣ x t ) ) ⏟ L t − 1 − log ⁡ p θ ( x 0 ∣ x 1 ) ] ⏟ L 0 \begin{aligned} L_{\mathrm{VLB}}& =\mathbb{E}_{q(\mathbf{x}_{0}:T)}\bigg[\log\frac{q(\mathbf{x}_{1:T}|\mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{0:T})}\bigg] \\ &=\mathbb{E}_q\Big[\log\frac{\prod_{t=1}^Tq(\mathbf{x}_t|\mathbf{x}_{t-1})}{p_\theta(\mathbf{x}_T)\prod_{t=1}^Tp_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}\Big] \\ &=\mathbb{E}_q\Big[\left.-\log p_\theta(\mathbf{x}_T)+\sum_{t=1}^T\log\frac{q(\mathbf{x}_t|\mathbf{x}_{t-1})}{p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}\right] \\ &=\mathbb{E}_q\Big[-\log p_\theta(\mathbf{x}_T)+\sum_{t=2}^T\log\frac{q(\mathbf{x}_t|\mathbf{x}_{t-1})}{p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}+\log\frac{q(\mathbf{x}_1|\mathbf{x}_0)}{p_\theta(\mathbf{x}_0|\mathbf{x}_1)}\Big] \\ &=\mathbb{E}_q\Big[-\log p_\theta(\mathbf{x}_T)+\sum_{t=2}^T\log\Big(\frac{q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)}{p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}\cdot\frac{q(\mathbf{x}_t|\mathbf{x}_0)}{q(\mathbf{x}_{t-1}|\mathbf{x}_0)}\Big)+\log\frac{q(\mathbf{x}_1|\mathbf{x}_0)}{p_\theta(\mathbf{x}_0|\mathbf{x}_1)}\Big] \\ &=\mathbb{E}_q\Big[-\log p_\theta(\mathbf{x}_T)+\sum_{t=2}^T\log\frac{q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)}{p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}+\sum_{t=2}^T\log\frac{q(\mathbf{x}_t|\mathbf{x}_0)}{q(\mathbf{x}_{t-1}|\mathbf{x}_0)}+\log\frac{q(\mathbf{x}_1|\mathbf{x}_0)}{p_\theta(\mathbf{x}_0|\mathbf{x}_1)}\Big] \\ &=\mathbb{E}_q\Big[-\log p_\theta(\mathbf{x}_T)+\sum_{t=2}^T\log\frac{q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)}{p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}+\log\frac{q(\mathbf{x}_T|\mathbf{x}_0)}{q(\mathbf{x}_1|\mathbf{x}_0)}+\log\frac{q(\mathbf{x}_1|\mathbf{x}_0)}{p_\theta(\mathbf{x}_0|\mathbf{x}_1)}\Big] \\ &=\mathbb{E}_q\Big[\log\frac{q(\mathbf{x}_T|\mathbf{x}_0)}{p_\theta(\mathbf{x}_T)}+\sum_{t=2}^T\log\frac{q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)}{p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}-\log p_\theta(\mathbf{x}_0|\mathbf{x}_1)\Big] \\ &=\mathbb{E}_q[\underbrace{D_{\mathrm{KL}}(q(\mathbf{x}_T|\mathbf{x}_0)\mid p_\theta(\mathbf{x}_T))}_{L_{T}}+\sum_{t=2}^T\underbrace{D_{\mathrm{KL}}(q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)\parallel p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t))}_{L_{t-1}}\underbrace{-\log p_\theta(\mathbf{x}_0|\mathbf{x}_1)]}_{L_0} \end{aligned} LVLB=Eq(x0:T)[logpθ(x0:T)q(x1:Tx0)]=Eq[logpθ(xT)t=1Tpθ(xt1xt)t=1Tq(xtxt1)]=Eq[logpθ(xT)+t=1Tlogpθ(xt1xt)q(xtxt1)]=Eq[logpθ(xT)+t=2Tlogpθ(xt1xt)q(xtxt1)+logpθ(x0x1)q(x1x0)]=Eq[logpθ(xT)+t=2Tlog(pθ(xt1xt)q(xt1xt,x0)q(xt1x0)q(xtx0))+logpθ(x0x1)q(x1x0)]=Eq[logpθ(xT)+t=2Tlogpθ(xt1xt)q(xt1xt,x0)+t=2Tlogq(xt1x0)q(xtx0)+logpθ(x0x1)q(x1x0)]=Eq[logpθ(xT)+t=2Tlogpθ(xt1xt)q(xt1xt,x0)+logq(x1x0)q(xTx0)+logpθ(x0x1)q(x1x0)]=Eq[logpθ(xT)q(xTx0)+t=2Tlogpθ(xt1xt)q(xt1xt,x0)logpθ(x0x1)]=Eq[LT DKL(q(xTx0)pθ(xT))+t=2TLt1 DKL(q(xt1xt,x0)pθ(xt1xt))L0 logpθ(x0x1)]

第二行:利用马尔科夫性质,展开第一行,变成连乘的形式 ∏ \prod

第三行:利用 log 运算,把连乘变成求和 ∑ \sum

第四行:把 t = 1 t=1 t=1 时刻分出来

第五行:用条件概率的链式法则引入 x 0 x_{0} x0

第六行:log 展开

第七行:反向 log 展开,把求和移动 log 内变成乘积,约掉分子分母简化

第八行:整理

第九行:得到 3 个 KL 散度: L T L_{T} LT L t − 1 L_{t-1} Lt1 L 0 L_{0} L0

L T L_{T} LT

  • L T L_{T} LT q ( x T ∣ x 0 ) q(\mathbf{x}_T|\mathbf{x}_0) q(xTx0) 是前向传播,从 x 0 x_{0} x0 x t x_{t} xt,没有可学习的参数,可直接推导
  • L T L_{T} LT p θ ( x T ) p_\theta(\mathbf{x}_T) pθ(xT) 是纯高斯噪声
  • 因此, L T L_{T} LT 相当于常量,可以忽略

L t − 1 L_{t-1} Lt1:俩个高斯分布的 KL 散度

L 0 L_{0} L0:相当于 L t − 1 L_{t-1} Lt1 t = 1 t=1 t=1 时刻的简化版

 


L t = E x 0 , ϵ [ 1 2 ∥ Σ θ ( x t , t ) ∥ 2 2 ∥ μ ~ t ( x t , x 0 ) − μ θ ( x t , t ) ∥ 2 ] = E x 0 , ϵ [ 1 2 ∥ Σ θ ∥ 2 2 ∥ 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ t ) − 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ θ ( x t , t ) ) ∥ 2 ] = E x 0 , ϵ [ ( 1 − α t ) 2 2 α t ( 1 − α ˉ t ) ∥ Σ θ ∥ 2 2 ∥ ϵ t − ϵ θ ( x t , t ) ∥ 2 ] = E x 0 , ϵ [ ( 1 − α t ) 2 2 α t ( 1 − α ˉ t ) ∥ Σ θ ∥ 2 2 ∥ ϵ t − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ t , t ) ∥ 2 ] L t s i m p l e = E t ∼ [ 1 , T ] , x 0 , ϵ t [ ∥ ϵ t − ϵ θ ( x t , t ) ∥ 2 ] = E t ∼ [ 1 , T ] , x 0 , ϵ t [ ∥ ϵ t − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ t , t ) ∥ 2 ] \begin{aligned} \color{green}{L_t}& =\mathbb{E}_{\mathbf{x}_{0},\epsilon}\Big[\frac{1}{2\|\mathbf{\Sigma}_{\theta}(\mathbf{x}_{t},t)\|_{2}^{2}}\|\tilde{\boldsymbol{\mu}}_{t}(\mathbf{x}_{t},\mathbf{x}_{0})-\mathbf{\mu}_{\theta}(\mathbf{x}_{t},t)\|^{2}\Big] \\ &=\mathbb{E}_{\mathbf{x}_{0,\boldsymbol{\epsilon}}}\Big[\frac{1}{2\|\boldsymbol{\Sigma}_{\theta}\|_{2}^{2}}\|\frac{1}{\sqrt{\alpha_{t}}}\Big(\mathbf{x}_{t}-\frac{1-\alpha_{t}}{\sqrt{1-\bar{\alpha}_{t}}}\boldsymbol{\epsilon}_{t}\Big)-\frac{1}{\sqrt{\alpha_{t}}}\Big(\mathbf{x}_{t}-\frac{1-\alpha_{t}}{\sqrt{1-\bar{\alpha}_{t}}}\boldsymbol{\epsilon}_{\theta}(\mathbf{x}_{t},t)\Big)\|^{2}\Big] \\ &=\mathbb{E}_{\mathbf{x}_0,\boldsymbol{\epsilon}}\Big[\frac{(1-\alpha_t)^2}{2\alpha_t(1-\bar{\alpha}_t)\|\boldsymbol{\Sigma}_\theta\|_2^2}\|\boldsymbol{\epsilon}_t-\boldsymbol{\epsilon}_\theta(\mathbf{x}_t,t)\|^2\Big] \\ &=\mathbb{E}_{\mathbf{x}_0,\epsilon}\Big[\frac{(1-\alpha_t)^2}{2\alpha_t(1-\bar{\alpha}_t)\|\boldsymbol{\Sigma}_\theta\|_2^2}\|\boldsymbol{\epsilon}_t-\boldsymbol{\epsilon}_\theta(\sqrt{\bar{\alpha}_t}\mathbf{x}_0+\sqrt{1-\bar{\alpha}_t}\boldsymbol{\epsilon}_t,t)\|^2\Big] \\ &L_{t}^{\mathrm{simple}} =\mathbb{E}_{t\sim[1,T],\mathbf{x}_0,\boldsymbol{\epsilon}_t}\bigg[\|\boldsymbol{\epsilon}_t-\boldsymbol{\epsilon}_\theta(\mathbf{x}_t,t)\|^2\bigg] \\ &=\mathbb{E}_{t\sim[1,T],\mathbf{x}_0,\boldsymbol{\epsilon}_t}\left[\|\boldsymbol{\epsilon}_t-\boldsymbol{\epsilon}_\theta(\sqrt{\bar{\alpha}_t}\mathbf{x}_0+\sqrt{1-\bar{\alpha}_t}\boldsymbol{\epsilon}_t,t)\|^2\right] \end{aligned} Lt=Ex0,ϵ[2∥Σθ(xt,t)221μ~t(xt,x0)μθ(xt,t)2]=Ex0,ϵ[2∥Σθ221αt 1(xt1αˉt 1αtϵt)αt 1(xt1αˉt 1αtϵθ(xt,t))2]=Ex0,ϵ[2αt(1αˉt)Σθ22(1αt)2ϵtϵθ(xt,t)2]=Ex0,ϵ[2αt(1αˉt)Σθ22(1αt)2ϵtϵθ(αˉt x0+1αˉt ϵt,t)2]Ltsimple=Et[1,T],x0,ϵt[ϵtϵθ(xt,t)2]=Et[1,T],x0,ϵt[ϵtϵθ(αˉt x0+1αˉt ϵt,t)2]

第一行:多元高斯分布的 KL 散度形式

第二行:

  • 中间项:把复原过程中的 均值 μ ~ 均值 \tilde{\mu} 均值μ~ 代入
  • 最右项:把扩散过程中的 均值 μ ~ 均值 \tilde{\mu} 均值μ~ 代入

第三行:

  • 学习噪声 ϵ t \epsilon_t ϵt、噪声 ϵ θ ( x t , t ) 之间的最小均方差 \boldsymbol{\epsilon}_\theta(\mathbf{x}_t,t) 之间的最小均方差 ϵθ(xt,t)之间的最小均方差

第四行:

  • 合并同类项,变成线性组合 y = x + b y=x+b y=x+b 形式‘

第五、六行:

  • 发现第四行前面的权重项影响不大,直接求后面的 线性组合 形式即可

  • 线性组合: [ ∣ ϵ t − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ t , t ) ] \left[|\boldsymbol{\epsilon}t - \boldsymbol{\epsilon}\theta(\sqrt{\bar{\alpha}_t}\mathbf{x}_0 + \sqrt{1-\bar{\alpha}_t}\boldsymbol{\epsilon}_t, t)\right] [ϵtϵθ(αˉt x0+1αˉt ϵt,t)]

训练流程

ewricas:

补充:

  1. 回到 第1步 继续迭代,直到 第3步 的损失函数收敛

每一轮的迭代,通过向后扩散噪声序列,将俩个时刻噪声之间的差异,作为当前梯度,更新模型参数。

VAE Diffusion是一个基于变分自编码器(Variational Autoencoder,VAE)和扩散过程(Diffusion Process)的生成模型,该模型可以用来生成高质量的图像。 VAE是一种无监督降维算法,就是通过挑选出最能代表样本空间的编码,然后再通过编码还原样本,这个过程也叫做自编码器(Autoencoder)。VAE相比于其他自编码器的优点在于,它可以等效地对样本空间进行变量建模,并同时学习每个变量的潜在分布。在VAE中,我们通过随机噪声来影响生成器,以便在生成过程中学习到潜在分布,这也给了模型学习抽象概念的能力。 扩散过程则是一种数据操作算法,其目的是用Differential Equation(微分方程)来解决高维数据上的实值最小化问题。在图像生成中,扩散过程主要用于刻画生成图像的动态过程。扩散过程的应用让生成模型中的随机变量不再是完全独立的,它们之间是连续的(也就是它们之间会随机漂移),在这个过程中,生成器会逐渐将图像生成出来,并呈现出不同的细节特征。 在VAE Diffusion中,VAE用于学习样本数据,并输出其潜在分布。扩散过程则控制生成模型的速度和细节流程,直接影响到最终生成的图像质量和真实感。它需要在一个 0~1 的扩散过程参数(Parameter)上进行优化来影响生成图像的状态,该参数的控制可通过RNN(Recurrent Neural Network)技术来建立一个状态追踪模型。 总体而言,VAE Diffusion是一种高效、灵活且能生产高质量图像的生成模型,有着广泛的应用场景。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值