生成模型 | 去噪扩散模型 DDPM 半小时理论扫盲

作者 | 黄哲威 hzwer 编辑 | 自动驾驶之心

原文链接:https://zhuanlan.zhihu.com/p/9140786426

点击下方卡片,关注“自动驾驶之心”公众号

戳我-> 领取自动驾驶近15个方向学习路线

>>点击进入→自动驾驶之心扩散模型技术交流群

本文只做学术分享,如有侵权,联系删文

本文希望先跳过很多不熟悉的名词和定理,找出我认为适合初学者理解的部分,下一篇文章 [生成模型 2] 整流流 Rectified Flow 理论简介

有个完整理解后,再看 ewrfcas:由浅入深了解Diffusion Model 就不会觉得害怕

本文大量参考了网上文献和使用 跃问 辅助,如有纰漏求指正

主要参考的是苏神的 生成扩散模型漫谈(一):DDPM = 拆楼 + 建楼 和 生成扩散模型漫谈(二):DDPM = 自回归式VAE,DDPM 论文

假设读者记得一些概率论的基本知识,如果忘了可以移步 Deja vu:一文带你看懂DDPM和DDIM(含原理简易推导,pytorch代码) 看前置知识

核心价值 以能量模型为抓手,将得分匹配下沉到朗之万方程的动态轨迹,打通马尔可夫链底层逻辑,发力变分推断引爆点,形成去噪过程递归闭环,拉通前向-反向全链路,卡位生成模型赛道,造势图像生成风口,布局多模态蓝海,沉淀噪声调度护城河,赋能潜在空间表征,倒逼模型优化,输出高质量样本反馈,升华生成建模格局,重塑数据生成认知矩阵,击穿传统生成模型研究员心智,打出一套组合拳。

生成扩散模型介绍

从 2019 BigGAN 可以生成 ImageNet 某一类别的 128p 图片,2022-2023 的 DALLE-2/3 又是新的里程碑

ae970314a887ba96805128569036b4d6.jpeg

用卷积神经网络做图像任务,模型性能随着模型参数 / 训练数据量增加,其实经常是边际收益递减的

我理解 transformer 流行的一个原因是在模型放大时能有不错的边际收益,而生成扩散模型则找到了一种可以在推理时使用非常大算力来提升效果的范式,这两者实现它们和卷积神经网络的差异化

分步扩散和生成

我们的目标是一个生成模型,它从随机噪声 z 变成数据样本 x

445d4a8934435876e8f6213dfb0d99f2.png

如果我们能把中间扩散的每一步的逆过程 生成 建模出来,得到一个生成函数:=()(2)

然后从随机噪声 z 开始,生成 T 步就得到了 x

CV+DL 白话:训练的时候,随机采样数据 x 和步数 t,学到的变换模型,推理的时候,从一个随机高斯噪声递归调用 T 步学出来的模型得到生成结果

具体来说,DDPM 的扩散过程是

560b824925d845fd77f5e84a7cb35516.png

其一般形式来自 Variational Diffusion ModelsVariational Diffusion Models

29165f06021fd191c0e625e1095f6707.png

之后推导中可以把系数看作是我们选的常数项

209fb2b04e484e7b05609468a1cd3fa8.png 9040f79d486b35a4e558d776cb76c2a1.png 4144b2a5b345a587970550bb53edfcbe.png f1a2ccb54186f5a356705267b995702d.png 8576bc9994beeca2e51439451bdfd1db.png

这里可以看到可训练参数是噪声项的下标,表示我们实际上是在预测第 t 步添加到数据样本中的噪声(实现上就是一个输入 xt 和 t 的神经网络)

代入损失函数有

7c93982c388bec3dbf3b739069930cba.png

推导中把 xt 变成了 x0 的加噪形式 (4)

4840ef403c93c1ee18e16d45f07782fd.png

小结:到这里我们已经了解很多了,我们知道了一个单步的具体优化过程,其中只有一个关键步骤是高斯噪声叠加过程的理解
接下来这个小节是为了把两个通过一些技巧变成一个,使得我们采样时方差变小,优化更简单

损失函数优化(可以跳过)

cf6c3777019a5f38cf7976c8329b81a4.png d548343efa8dfbf1b39fdca4dc0f016a.png 879cefc7adcd997faa07a5c5ed15a1a6.png

参数选取

654fb70c98093de22b079db13b515041.png

在实践中,DDPM 设置生成步数 T=1000,后续有很多工作讨论加速和优化

b1af18041218348bf9ee32efa0428835.png ce0062e46e92570d1f412152d9ae699e.png

另一方面据苏神解释,在图像上用欧式距离时,当两张图片非常接近时才好度量,所以不管是选取大的 T,还是单调递减的,都是希望在靠近图片一侧的扩散过程的每一步都走的不太远,而在靠近噪声一侧走得远一点也无妨

我感觉就算选取了更好的度量,我们仍然会希望把更多的推理开销花在靠近图片的一侧而不是最初叠加噪声的过程

小结:以上其实就是完整推导,后面是从 VAE 的角度再解释一遍,大部分推导技巧是一致的

VAE 角度理解

稍微介绍几句 VAE,做过一段神经网络的朋友应该都知道编解码结构,z = g(x), x' = f(z)

用一张图 x 和 f(g(x)) 计算欧式距离就可以训练这样一对网络

如果我们抛弃掉 g,随便采样一个 z,解码 f(z) 出来会发现基本上是噪声

这是因为 z 的先验分布 q(z) 没有建模,f 对随机的 z 是不鲁棒的

VAE 会将条件分布 p(z|x)(编码)和 q(x|z)(解码)以及 q(z) 建模为高斯分布

但是这种一步到位的做法并不能提供足够强的表达能力

09e0e07ee7e82d16961bbe9b847a3ecc.png 4acdd93fde7f74caf2c7b8f18f6df064.png fc320113aa3a6bff02fb851f769d7960.png

做生成模型的目标是希望生成模型的联合分布 q 尽可能接近真实数据的联合分布 p,可以通过最小化 KL 散度实现

96caea79f96cb45d47e00ad1980104a0.png

联系到 DDPM

在 DDPM 中,模型每一步的编码过程 p (3),是不含可训练参数的,所以标红的 p 是常数项

所以 (16) 就是

46e0b2ad93be6730ff2226f356418492.png

对比一下就是把 log 下面的分母变出前面负号,然后写成求和形式

这里的先验分布q()一般取标准高斯分布, 所以取 log 是常数项

看求和中的第 t 步

c77c405f08abbf7943d2f5cad966f98e.png

(18)

6efa590011e3ea46711ecd6873b2b75c.png c7494d1b64e18740ad0acd3dce694879.png

其实就是 (8) 多了权重和常数项,往后推的结果和 (11) 也只是有权重系数区别

这个系列为了督促自己补齐相关知识,希望能持续写一段时间

① 2025中国国际新能源技术展会

自动驾驶之心联合主办中国国际新能源汽车技术、零部件及服务展会。展会将于2025年2月21日至24日在北京新国展二期举行,展览面积达到2万平方米,预计吸引来自世界各地的400多家参展商和2万名专业观众。作为新能源汽车领域的专业展,它将全面展示新能源汽车行业的最新成果和发展趋势,同期围绕个各关键板块举办论坛,欢迎报名参加。

a12c3efc7b28112e50892bd8d57bf690.jpeg

② 国内首个自动驾驶学习社区

『自动驾驶之心知识星球』近4000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知端到端自动驾驶世界模型仿真闭环2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案大模型,更有行业动态和岗位发布!欢迎扫描加入

431ca4dcf52fe1119a742141e0784a43.png

 ③全网独家视频课程

端到端自动驾驶、仿真测试、自动驾驶C++、BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测车道线检测轨迹预测在线高精地图世界模型点云3D目标检测目标跟踪Occupancy、CUDA与TensorRT模型部署大模型与自动驾驶NeRF语义分割自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

185aeb470a5aa5525618b8b49865b689.png

网页端官网:www.zdjszx.com

④【自动驾驶之心】全平台矩阵

20b73b8a3454fb46cb262fc9902195bc.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值