专栏名称: 3D视觉工坊
1、OpenCV的技术传播; 2、3D点云与重建技术; 3、Vslam技术; 4、深度学习; 5、技术干货分享。
目录
相关文章推荐
福州新闻网  ·  情况属实!官方通报:停职调查 ·  19 小时前  
流媒体网  ·  报告推荐|《屏论IPTV:2024行业深度洞察》 ·  昨天  
流媒体网  ·  报告推荐|《屏论IPTV:2024行业深度洞察》 ·  昨天  
网信湖南  ·  DeepSeek首次公开辟谣! ·  2 天前  
飞鲸投研  ·  绑定DeepSeek,科大讯飞,势不可挡! ·  3 天前  
飞鲸投研  ·  绑定DeepSeek,科大讯飞,势不可挡! ·  3 天前  
51好读  ›  专栏  ›  3D视觉工坊

一文读懂扩散模型原理!

3D视觉工坊  · 公众号  · 科技自媒体  · 2024-10-01 00:00

主要观点总结

本文介绍了扩散模型在机器学习领域的发展和重要性。首先,通过引言扩散模型的概念和其近期的发展浪潮。然后,对扩散模型进行简介,解释了其工作原理和作为一种生成模型的特点。接着,详细探讨了扩散模型的理论基础,包括马尔可夫链、正向过程和反向过程、数学理论和模型选择等。文章还涉及了网络体系结构、反向过程解码器和最终目标等方面的讨论。最后,总结了扩散模型的关键点,包括参数化、目标函数、训练方法和模型架构等。文中还提供了关于3D视觉相关社群和资源的推荐。

关键观点总结

关键观点1: 扩散模型是生成模型,通过连续添加高斯噪声并学习去噪过程来生成数据。

扩散模型通过马尔可夫链模拟数据渐进噪声的过程,并学习反向过程以生成新数据。

关键观点2: 扩散模型具有许多优点,包括尖端的图像质量、不需要对抗性训练以及可扩展性和并行性。

扩散模型的好处包括灵活性高,有多种数学理论和模型架构可供选择。

关键观点3: 扩散模型的理论基础包括正向过程和反向过程的数学描述,以及参数化和目标函数的设计。

文章详细探讨了扩散模型的数学理论,包括马尔可夫假设、高斯分布参数化、KL散度等。

关键观点4: 实现扩散模型需要做出一些选择,包括方差时间表、高斯分布参数化/模型架构等。

这些选择涉及到前向过程和反向过程的具体实现,以及网络体系结构和解码器的设计。

关键观点5: 扩散模型的训练目标是使训练数据的可能性最大化,通过最小化负对数似然的变分上限来实现。

训练过程中涉及到离散解码器的设计和像素值之间似然率的计算。

关键观点6: 文章提供了关于3D视觉的社群和资源推荐,包括多个细分群和交流群。

读者可以加入相关社群,与同行交流,并获取最新进展和资源。


正文

点击下方 卡片 ,关注 「3D视觉工坊」 公众号
选择 星标 ,干货第一时间送达

来源:3D视觉工坊

添加小助理:cv3d001,备注:方向+学校/公司+昵称,拉你入群。文末附3D视觉行业细分群。

扫描下方二维码,加入「 3D视觉从入门到精通 」知识星球,星球内凝聚了众多3D视觉实战问题,以及各个模块的学习资料: 近20门秘制视频课程 最新顶会论文 、计算机视觉书籍 优质3D视觉算法源码 等。想要入门3D视觉、做项目、搞科研,欢迎扫码加入!

1. 引言

扩散模型的迅速崛起是过去几年机器学习领域最大的发展之一。在这本简单易懂的指南中,学习你需要知道的关于扩散模型的一切。

扩散模型是生成模型,在过去的几年中已经获得了显著的流行,并且有很好的理由。20世纪20年代发表的几篇开创性论文单独的向世界展示了扩散模型的能力,比如击败GANs关于图像合成。

鉴于最近扩散模型的成功浪潮,许多机器学习实践者肯定对它们的内部工作方式感兴趣。在本文中,我们将研究 扩散模型的理论基础, 关于扩散模型的更直观的解释,请随意查看我们的文章https://www.assemblyai.com/blog/how-physics-advanced-generative-ai/#generative-ai-with-thermodynamics。

2. 扩散模型简介

扩散模型是生成模型,意味着它们被用来生成与它们被训练的数据相似的数据。基本上,扩散模型的工作原理是,通过连续添加高斯噪声,销毁训练数据。然后学习去噪的过程,来恢复数据。经过训练后,我们可以通过所学习的去噪过程,使用扩散模型来生成数据。

更具体地说,扩散模型是一种隐变量模型,它使用固定的马尔可夫链映射到隐空间。该链逐渐向数据中添加噪声,以获得近似的后验概率q(x1:T|x0),其中x1、….、x是与x0具有相同维数的潜变量。在下图中,我们看到这样的马尔可夫链表现为图像数据。

最终,图像会渐近地转化为纯高斯噪声。训练扩散模型的目标是学习反向过程--即训练p(xt-1|xt)。通过沿着这条链反向遍历,我们可以生成新的数据。

3. 扩散模型的好处

如上所述,近年来对扩散模型的研究呈爆炸式增长。受非平衡热力学的启发,扩散模型目前产生最先进的图像质量,其示例如下所示:

除了尖端的图像质量,扩散模型还有许多其他好处,包括不需要对抗性训练。对抗性训练的困难是有据可查的;而且,如果存在非对抗性的替代方案,表现和训练效率相当,通常最好利用它们。关于培训效率的话题,扩散模型也有额外的好处可扩展性和并行性。

虽然扩散模型似乎是凭空产生结果,但有许多仔细而有趣的数学选择和细节为这些结果提供了基础,最佳实践仍在文献中不断发展。现在让我们更详细地看看支撑扩散模型的数学理论。

4. 扩散模型-深入

如上所述,扩散模型包括正向过程(或者扩散过程),其中一个数据(通常是一个图像)是渐进的噪声,和翻转过程(或者反向扩散过程),其中噪声从目标分布转换回样本。

当噪声水平足够低时,正向过程中的采样链转换可以设置为条件高斯型。将这一事实与马尔可夫假设相结合,导致正向过程的简单参数化:

其中β是方差表,(学习或固定),如果行为良好,确保xT是近似的各向同性高斯为足够大的T。给定马尔可夫假设,潜在变量的联合分布是高斯条件链转移的产物:

如前所述,扩散模型的“魔法”在于逆向过程。在训练过程中,模型学习逆向扩散过程以生成新数据。从纯高斯开始,噪声p(xT):=N(xT, 0, I),模型学习联合分布p(x0:T)为

其中学习高斯跃迁的时间相关参数。特别要注意的是,马尔可夫公式断言给定的反向扩散转移分布仅取决于前一时间步(或后一时间步,取决于你如何看待它):

5. 训练

扩散模型通过以下方式训练 找到使训练数据的可能性最大化的反向马尔可夫转移 。实际上,训练等价地包括最小化负对数似然的变分上限。

我们试图根据 Kullback-Leibler(KL)散度重写 Lvlbin。KL散度是一个不对称统计距离度量一个概率分布P与参考分布0的差异。我们感兴趣的是制定KL散度的Lvlbin 项,因为我们的马尔可夫链中的转移分布是正态分布,正态分布之间的KL 散度具有封闭形式。

KL散度是什么?连续分布KL发散的数学形式为

双线表示该功能是不关于它的参数是对称的。

下面你可以看到不同分布的KL散度P(蓝色)来自参考分布Q(红色)。绿色曲线表示上述KL散度定义中积分内的函数,曲线下的总面积表示KL散度的值P从Q在任何给定的时刻,也是用数字显示的一个值。

如前所述,根据KL的差异几乎完全重写Lvlb是可能的:

在 Lt-1中,将前向过程的后验概率x0条件化,得到一个易于处理的公式,使得所有 KL散度都是高斯之间的比较。这意味着可以使用封闭形式的表达式而不是蒙特卡罗估计来精确计算散度

6. 模型选择

随着我们的目标函数的数学基础的建立,我们现在需要就如何实现我们的扩散模型作出几个选择。对于前向过程,唯一需要的选项是定义方差时间表,其值通常在前向过程中增加。

对于反向过程,我们应选择高斯分布参数化/模型架构。请注意Diffusion模型的高度灵活性--我们架构的唯一要求是其输入和输出具有相同的维数。

我们将在下面更详细地探讨这些选择的细节。

前向流程与LT

如上所述,关于前向过程,我们必须定义方差进度表。特别是,我们将它们设置为时间相关的常数,忽略了它们可以被学习的事实。无论选择什么特定的值,方差表固定的事实导致LT成为我们可学习参数集的一个常数使我们可以在训练时忽略它。

逆向过程和L 1:T -1

现在我们讨论定义反向过程所需要的选择,从上面我们定义的反向马尔可夫转换为高斯:

我们简单地设置:

也就是说,我们假设多元正态分布是独立正态分布的乘积,这些独立正态分布具有相同的方差,方差值可以随时间变化。我们将这些方差设定为与我们的正向过程方差表相等。

其中差值中的第一个项是xt和x0的线性组合,该组合取决于方差。时间表决定这个函数的确切形式与我们的目的无关。最直接的参数化是预测扩散后均值。重要的是,预测任何给定时间步数的噪声成分会产生更好的结果。

这导致了下面的替代损失函数,能带来更稳定的训练和更好的结果:

还要注意扩散模型的这种公式化与基于朗之万动力学的分数匹配生成模型的联系。事实上,似乎扩散模型和基于分数的模型可能是同一枚硬币的两面,类似于基于波的量子力学和基于矩阵的量子力学的独立和并行发展,揭示了同一现象的两个等效公式。

7. 网络体系结构

虽然我们简化的损失函数试图训练一个模型。我们还没有定义这个模型的架构。请注意仅仅对模型的要求是它的输入和输出维数相同。鉴于这种限制,图像扩散模型通常用类似U-Net的架构来实现就不足为奇了。

8. 反向过程解码器和L0

沿着相反过程的路径由连续条件高斯分布下的许多变换组成。在反向过程的最后,回想一下我们试图生成一个图像,由整数像素值组成。因此,我们必须设计一种方法来获得离散(对数)可能性对于所有像素中的每个可能的像素值。

实现这一点的方法是将反向扩散链中的最后一个转换设置为独立离散解码器。为了确定给定图像的可能性,我们首先在数据维度之间强加独立性:

其中,D是数据的维数,上标i表示提取一个坐标。现在的目标是确定在给定像素的分布下,每个整数值对给定像素的概率。在时间t=1时,微带噪声图像中对应像素的可能值:

其中,t=1的像素分布由以下多元高斯分布得出,其对角线协方差矩阵允许我们将分布分解为多元高斯分布的乘积,对每个数据维度:

我们假设图像由 0、1、…255(与标准 RGB图像相同)中的整数组成,这些整数已被线性缩放为 【-1,1】。然后,我们将实线分解为小的“桶”,其中,对于给定的缩放像素值x,该范围内的桶为【x-1/255,x+1/256】。给定x1中相应像素的一元高斯分布像素值x的概率是围绕x中心桶内的一元高斯分布的面积。 推荐课程: 机械臂抓取从入门到实战课程(理论+源码)

您可以在下面看到每个桶的区域以及它们的平均-0高斯概率,在这种情况下,平均像素值为255/2(一半亮度)。红色曲线表示t=1图像中特定像素的分布,而区域给出t=0图像中相应像素值的概率。

给定每个像素的t=0像素值,p(x0|x1)的值就是它们的乘积。这个过程简洁地用下面的方程来描述:

给出p(xo|x1)的这个方程式,我们可以计算Lvb的最后一个项,这个项不是用KL散度来表示的:

9. 最终目标

正如在上一节中所提到的,预测图像在给定时间步数下的噪声成分会产生最佳结果。最终,他们使用以下目标:

因此,我们的扩散模型的训练和采样算法可以简洁地体现在下图中:

10. 扩散模型总结

我们详细探讨了扩散模型的理论,很容易陷入数学细节,因此我们在下面指出了这一节中最重要的几点,以便从鸟瞰的角度保持我们的方向:

1.我们的扩散模型参数化为马尔可夫链,这意味着我们的潜变量x1,…,xT仅依赖于之前(或后续)时间步。

2.在马尔可夫链的过渡分布是高斯,其中的正向过程需要方差调度,和反向过程的参数被学习。

3.扩散过程确保xT是渐近分布的各向同性高斯。

4.在我们的情况下,方差时间表是固定的,但也可以学习。对于固定的时间表遵循几何级数可能比线性级数提供更好的结果。在这两种情况下,方差通常随着时间的推移而增加。

5.扩散模型非常灵活,允许使用输入和输出维数相同的任何体系结构,许多实现使用类似于U-Net的体系结构。

6.训练目标是使训练数据的可能性最大化。这表现在调整模型参数以最小化负对数似然的变分上界。

7.由于我们的马尔可夫假设,目标函数中几乎所有的项都可以转换为KL散度。这些值变得可信的计算,因为我们使用高斯,因此省略了执行蒙特卡罗近似的需要。

8.最终,使用一个简化的训练目标来训练一个预测给定潜变量的噪声分量的函数会产生最佳和最稳定的结果。

9.作为反向扩散过程的最后一步,使用离散解码器来获取像素值之间的似然率。

本文仅做学术分享,如有侵权,请联系删文。

3D视觉交流群,成立啦!

目前我们已经建立了3D视觉方向多个社群,包括 2D计算机视觉 最前沿 工业3D视觉 SLAM 自动驾驶 三维重建 无人机 等方向,细分群包括:

工业3D视觉 :相机标定、立体匹配、三维点云、结构光、机械臂抓取、缺陷检测、6D位姿估计、相位偏折术、Halcon、摄影测量、阵列相机、光度立体视觉等。

SLAM :视觉SLAM、激光SLAM、语义SLAM、滤波算法、多传感器融合、多传感器标定、动态SLAM、MOT SLAM、NeRF SLAM、机器人导航等。

自动驾驶:深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器、多传感器标定、多传感器融合、自动驾驶综合群等、3D目标检测、路径规划、轨迹预测、3D点云分割、模型部署、车道线检测、Occupancy、目标跟踪等。







请到「今天看啥」查看全文