【论文阅读】Tutorial on Diffusion Models for Imaging and Vision

2024-05-04 20:44

本文主要是介绍【论文阅读】Tutorial on Diffusion Models for Imaging and Vision,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.The Basics: Variational Auto-Encoder

1.1 VAE Setting

自动编码器有一个输入变量x和一个潜在变量z

Example. 获得图像的潜在表现并不是一件陌生的事情。回到jpeg压缩,使用离散余弦变换(dct)基φn对图像的底层图像/块进行编码。如果你给我们一个imagex,我们会给你一个系数向量z。从z我们可以做逆变换来恢复(即解码)图像。因此,系数向量z是潜在码。编码器是dct变换,解码器是逆dct变换

变分 variational 这个名字来源于我们用概率分布来描述x和z的因子。我们更感兴趣的不是求助于将x转换为z的确定性过程,而是确保分布p(x)可以映射到所需的分布p(z),并向后返回到p(x)

  • p(x):x的分布。如果我们知道的话,我们早就成为亿万富翁了。整个星系的扩散模型都是为了找到从p(x)中提取样本的方法
  • p(z):潜在变量的分布。因为我们都很懒惰,所以让我们把它设为零均值单位方差高斯p(z)=n(0,i)
  • p(z|x):与编码器相关的条件分布,它告诉我们给定x时z的可能性,我们无法访问它。P (z|x)本身不是编码器,但编码器必须做一些事情,以便它与P (z|x)保持一致
  • p(x|z):与解码器相关的条件分布,它告诉我们在给定z的情况下得到x的后验概率,同样,我们无法访问它。

Example. 

考虑根据高斯混合模型分布的随机变量x,其中潜变量z∈{1,…,k}表示簇恒等式,使得p_Z(k)=\mathbb{P}[Z=k]=\pi_k for k=1...k.我们假设\sum_{k=1}^{K}\pi_{k}=1。那么,如果我们被告知只需要看第k个簇,给定z的x的条件分布是p_{\mathbf{X}|Z}(\mathbf{x}|k)=\mathcal{N}(\mathbf{x}|\mu_{k},\sigma_{k}^{2}\mathbf{I}).

x的边际分布可以用总概率定律找到p_{\mathbf{X}}(\mathbf{x})=\sum_{k=1}^Kp_{\mathbf{X}|Z}(\mathbf{x}|k)p_Z(k)=\sum_{k=1}^K\pi_k\mathcal{N}(\mathbf{x}|\boldsymbol{\mu}_k,\sigma_k^2\mathbf{I}).

因此,如果我们从px(x)开始,编码器的设计问题是构建一个神奇的编码器,使得对于每个样本x~px(x,潜在编码将是z∈{1,…,k},分布为z~pz(k)。为了说明编码器和解码器是如何工作的,让我们假设均值和方差是已知的并且是固定的。否则,我们将需要通过em算法来估计均值和方差。这是可行的,但繁琐的方程会破坏本说明的目的

Encoder:我们如何从x中获得z?这很容易,因为在编码器处,我们知道px(x)和z(k)。假设你只有两个类z∈{1,2}。实际上,你只是在做一个二进制决定,决定样本x应该属于哪里。有很多方法可以做二进制决定。最大后验maximum-a-posteriori:

Decoder:在解码器方面,如果我们得到一个潜在代码z∈{1,…,k},神奇的解码器只需要返回一个样本x,它是从p_{\mathbf{X}|Z}(\mathbf{x}|k)=\mathcal{N}(\mathbf{x}|\mu_{k},\sigma_{k}^{2}\mathbf{I})中提取的。不同的z将给出k个混合物组分中的一个。如果我们有足够的样本,总体分布将遵循高斯混合。

如果我们想找到神奇的编码器和解码器,我们必须有办法找到这两个条件分布

在vae的文献中,人们提出了一个考虑以下两种代替分布 proxy distributions 的想法:

  • q_{\boldsymbol{\phi}}(\mathbf{z}|\mathbf{x}):p(z|x)的代理。我们将使它成为高斯。为什么是高斯的?没有特别好的理由。
  • p_{\boldsymbol{\theta}}(\mathbf{x}|\mathbf{z}):p(x|z)的代理。信不信由你,我们也会把它变成高斯的。但这个高斯的作用与高斯q_{\boldsymbol{\phi}}(\mathbf{z}|\mathbf{x})略有不同。虽然我们需要估计高斯q_{\boldsymbol{\phi}}(\mathbf{z}|\mathbf{x})的均值和方差,但我们不需要估计高斯p_{\boldsymbol{\theta}}(\mathbf{x}|\mathbf{z})的任何值。相反,我们将需要一个解码器神经网络来将z转换为x。高斯p_{\boldsymbol{\theta}}(\mathbf{x}|\mathbf{z})将用于通知我们生成的图像x有多好。

“正向 forward ”关系由p(z|x)指定(并由qφ(z|x)近似),而“反向”关系由p(x|z)指定(且由pθ(x|z)近似)。

Example. 

假设我们有一个随机变量x和一个潜变量z:\begin{aligned}&\mathbf{x}\sim\mathcal{N}(\mathbf{x}\mid\mu,\sigma^{2}),\\&\mathbf{z}\sim\mathcal{N}(\mathbf{z}\mid0,1).\end{aligned}

我们的目标是建造一个VAE。(什么?!这个问题有一个平凡的解,其中z=(x−μ)/σ,x=μ+σz。你是绝对正确的。但请遵循我们的推导,看看VAE框架是否合理。)

我们的意思是要构造两个映射“encode”和“decode”。为了简单起见,我们假设这两个映射都是仿射变换 affine transformations:

我们懒得找出联合分布p(x,z),也懒得找出条件分布p(x|z)和p(z|x)。但我们可以构造代理分布qφ(z|x)和pθ(x|z)。既然我们可以自由选择qφ和pθ应该是什么样子,那么我们考虑下面两个高斯如何

对于qφ(z|x):如果给定x,我们当然希望编码器根据我们选择的结构对分布进行编码。由于编码器结构是ax+b,所以qφ(z|x)的自然选择是具有平均值ax+b。方差被选择为1,因为我们知道编码样本z应该是单位方差。

类似地,对于pθ(x|z):如果我们给定z,解码器必须采用cz+d的形式,因为这就是我们设置解码器的方式。方差是c,这是我们需要计算的一个参数。

1.2 Evidence Lower Bound

我们如何使用这两个代理分布来实现确定编码器和解码器的目标?如果我们将φ和θ作为优化变量,那么我们需要一个目标函数(或损失函数),以便我们可以通过训练样本来优化φ和θ。为此,我们需要建立一个关于φ和θ的损失函数。我们在这里使用的损失函数被称为证据下界 Evidence Lower BOund(ELBO)

让我们看看elbo是什么意思以及它是如何派生的

简而言之,elbo是先前分布log p(x)的下界,因为我们可以证明

其中不等式源自kl散度总是非负的事实。因此,elbo是logp(x)的有效下界。由于我们从来没有访问过logp(x),如果我们以某种方式访问过elbo,并且elbo是一个很好的下界,那么我们可以有效地最大化elbo,以实现最大化logp(x)的目标,这是黄金标准。

正如你从方程和图2中看到的,当我们的代理qφ(z|x)可以精确地匹配真实分布p(z|x)时,不等式将变成等式。因此,游戏的一部分是确保qφ(z|x)接近p(z|x)。

Proof of Eqn (3).

这里的全部技巧是使用我们的神奇代理qφ(z|x)来绕过p(x)并导出边界。

最后一个等式:\int a\times p_Z(z)dz=\mathbb{E}[a]对于任意随机变量Z和标量a,有\mathbb{E}[a]=a

我们已经得到了方程\mathbb{E}_{q_{\phi}(\mathbf{z}|\mathbf{x})}[\cdot]。只需多走几步。让我们使用bayes定理,该定理指出p(\mathbf{x},\mathbf{z})=p(\mathbf{z}|\mathbf{x})p(\mathbf{x})

 我们现在有elbo。但是这个elbo仍然不太有用,因为它涉及p(x,z),这是我们无法访问的

让我们仔细看看elbo:

其中我们不可访问的p(x|z)替换为其代理p_{\boldsymbol{\theta}}(\mathbf{x}|\mathbf{z})

在方程(6)中存在两个项:

  • Reconstruction  重建:关于解码器,如果我们将潜在的z馈送到解码器中,我们希望解码器产生好的图像x。因此,我们希望最大化log pθ(x|z)。它类似于最大似然,其中我们想要找到模型参数以最大化观察图像的似然。这里的期望是关于样本z(以x为条件)而取的。这并不奇怪,因为样本z用于评估解码器的质量。它不能是任意的噪声矢量,而是有意义的潜在矢量。因此,z需要从q_{\boldsymbol{\phi}}(\mathbf{z}|\mathbf{x})中采样
  • Prior Matching 先验匹配:第二项是编码器的kl散度。我们希望编码器将x转换为潜在向量z,这样潜在向量将遵循我们选择的分布\mathcal{N}(0,\mathbf{I})。为了更一般,我们将p(z)写为目标分布。因为kl是一个距离(当两个分布变得更不相似时它会增加),我们需要在前面加一个负号,这样当两个分布变得更相似时它就会增加

Example. 

我们从之前的推导中知道

为了确定θ和φ,我们需要最小化先验匹配误差并最大化重建项。对于先前的匹配,我们知道

使KL散度最小,因此,

对于reconstruction项,我们知道

由于e[z] = 0, var[z] = 1,因此当c = σ, d = μ时,项最大(负的项分数最小)。综上所述,编码器和解码器参数为

重构项和先验匹配项如图3所示。在这两种情况下,在训练过程中,我们假设我们可以访问z和x,其中z需要从qφ(z|x)中采样。然后,对于重建,我们估计θ以最大化pθ (x|z)。对于先验匹配,我们找到φ以最小化kl散度。优化可能具有挑战性,因为如果更新φ,分布qφ(z|x)将发生变化

1.3 Training VAE

既然我们理解了elbo的含义,我们就可以讨论如何训练vae了。为了训练vae,我们需要地面真值对(x,z)。我们知道如何得到x;它只是来自数据集的图像。但相应地,z应该是什么?

让我们来谈谈编码器。我们知道z是由分布qφ(z|x)生成的。我们还知道qφ(z|x)是高斯的。假设这个高斯有一个均值μ和一个协方差矩阵\sigma^{2}\mathrm{I}(哈!又是我们的懒惰!我们不使用一般的协方差矩阵,而是假设方差相等)。

棘手的部分是如何从输入图像x中确定μ和\sigma^{2}\mathrm{I}。我们构建了一个深度神经网络,这样

因此,样本z(ℓ)(ℓ 表示训练集中的第ℓ个训练样本)可以从高斯分布中采样

这个想法总结在图4中,我们使用神经网络来估计高斯参数并从高斯中提取样本。注意\mu_{\phi}(\mathbf{x}^{(\ell)})\sigma_{\phi}^{2}(\mathbf{x}^{(\ell)})是x的函数(ℓ). 因此,对于不同的\mathrm{x}^{(\ell)}我们将有一个不同的高斯

Remark.

对于任何高维高斯分布\mathrm{x}\sim\mathcal{N}(\mathrm{x}|\mu,\Sigma),采样过程都可以通过白噪声的变换来完成

半矩阵 half matrix \Sigma^{\frac12}可以通过特征分解或cholesky分解得到。对于对角矩阵\Sigma=\sigma^{2}\mathbf{I},以上简化为

 我们来谈谈解码器。该解码器通过神经网络实现。为简便起见,我们将其定义为decode_{\theta},其中θ表示网络参数。解码器网络的工作是取一个潜在变量z并生成一个图像\widehat{\mathrm{x}}:

现在让我们再做一个(疯狂的)假设:解码图像\widehat{\mathrm{x}}和真实图像x之间的误差是高斯分布的。(等等,又是高斯分布?!)我们假设:

那么,可以得出分布pθ (x|z)为

D是x的维数

这个方程表明,elbo中似然项的最大值实际上就是解码图像和真实图像之间的l2损失。其思想如图5所示。

1.4 Loss Function

一旦你理解了编码器和解码器的结构,损失函数就很容易理解了。我们通过蒙特卡罗模拟近似期望:

其中\mathbf{x}^{(\ell)}是训练集中的第L个样本,\mathbf{z}^{(\ell)}是从\mathbf{z}^{(\ell)}\sim q_{\phi}(\mathbf{z}|\mathbf{x}^{(\ell)})采样的,分布qθ是

Training loss of VAE:

其中\{\mathbf{x}^{(\ell)}\}_{\ell=1}^{L}为训练数据集中的地面真值图像,\mathbf{z}^{(\ell)}从式(7)中采样。

 kl散度项中的z不取决于ℓ 因为我们正在测量两个分布之间的kl散度。这里的变量z是一个伪变量。

我们需要澄清的最后一点是kl散度。由于,我们本质上得到两个高斯分布;如果你去维基百科,你可以看到两个d维高斯分布的kl散度是

通过考虑我们可以证明kl散度有一个解析表达式

其中d是向量z的维数。因此,总损失函数eqn(12)是可微的。因此,我们可以通过反向传播梯度来端到端地训练编码器和解码器

1.5 Inference with VAE

为了进行推理,我们可以简单地将潜在向量z(从p(\mathbf{z})=\mathcal{N}(0,\mathbf{I}))采样)放入解码器decode_{\theta}中,得到图像x;见图6。

2 Denoising Diffusion Probabilistic Model (DDPM) 

您只需要了解以下摘要:

扩散模型是增量更新,其中整体的组装为我们提供了编码器-解码器结构。从一种状态到另一种状态的转换是通过去噪器实现的。

这篇关于【论文阅读】Tutorial on Diffusion Models for Imaging and Vision的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960045

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super

软件架构模式:5 分钟阅读

原文: https://orkhanscience.medium.com/software-architecture-patterns-5-mins-read-e9e3c8eb47d2 软件架构模式:5 分钟阅读 当有人潜入软件工程世界时,有一天他需要学习软件架构模式的基础知识。当我刚接触编码时,我不知道从哪里获得简要介绍现有架构模式的资源,这样它就不会太详细和混乱,而是非常抽象和易

BERT 论文逐段精读【论文精读】

BERT: 近 3 年 NLP 最火 CV: 大数据集上的训练好的 NN 模型,提升 CV 任务的性能 —— ImageNet 的 CNN 模型 NLP: BERT 简化了 NLP 任务的训练,提升了 NLP 任务的性能 BERT 如何站在巨人的肩膀上的?使用了哪些 NLP 已有的技术和思想?哪些是 BERT 的创新? 1标题 + 作者 BERT: Pre-trainin

[论文笔记]LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale

引言 今天带来第一篇量化论文LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale笔记。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 大语言模型已被广泛采用,但推理时需要大量的GPU内存。我们开发了一种Int8矩阵乘法的过程,用于Transformer中的前馈和注意力投影层,这可以将推理所需

速通GPT-3:Language Models are Few-Shot Learners全文解读

文章目录 论文实验总览1. 任务设置与测试策略2. 任务类别3. 关键实验结果4. 数据污染与实验局限性5. 总结与贡献 Abstract1. 概括2. 具体分析3. 摘要全文翻译4. 为什么不需要梯度更新或微调⭐ Introduction1. 概括2. 具体分析3. 进一步分析 Approach1. 概括2. 具体分析3. 进一步分析 Results1. 概括2. 具体分析2.1 语言模型