首页 > 其他分享 >扩散模型 - DDPM 优化

扩散模型 - DDPM 优化

时间:2023-06-02 09:14:14浏览次数:43  
标签:Diffusion 抽样 Models 模型 DDPM 扩散 优化

3 DDPM 的优化

3.1 参数优化

3.1.1 优化 βt

"Improved Denoising Diffusion Probabilistic Models". 一文中,作者提出了多种优化 DDPM 的技巧。其中一种就是把 βt 的线性机制改为余弦机制。机制(schedule)函数的实现相对灵活,只要保证在训练的中间过程提供近似-线性的下降并且在 t = 0 和 t = T 附近的变化不大即可。

文中给出的余弦机制为:

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.009.jpeg

线性机制和余弦机制的对比:

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.010.jpeg

3.1.2 优化 Σθ

同样在 "Improved Denoising Diffusion Probabilistic Models". 一文中。作者提出把 Σθ 设置为可学习参数,作为 βt 和 βt-hat 之间的插值。

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.011.jpeg

由于在 DDPM("Denoising Diffusion Probabilistic Models") 原文中,Σθ 不是可学习的参数,所以损失函数中并不包含该项。因此,作者提出把损失函数由 Lsimple 改为 Lhybrid = Lsimple + λLvlb,其中 λ = 0.001 来阻止 Lvlb 项中的 μθ 的梯度,因此 Lvlb 仅仅由 Σθ 的学习来引导。

3.2 抽样速度优化

3.2.1 DDIM

由于马尔可夫过程依赖于前一个状态的条件概率,因此 DDPM 的抽样速度很慢。 在 DDIM("Denoising Diffusion Implicit Models")一文中,作者指出:“对 DDPM 来说,需要花费 20 小时来采样 50k 张 32 * 32 大小的图片;但是对于 GAN 来说,只需要不到 1 分钟”。

其中一种优化方式来自 "Improved Denoising Diffusion Probabilistic Models".通过把抽样的步长更新为 [T/S] 使得抽样的步骤从 T 步变为 S 步。因此,新过程的抽样的样本为 {τ1, …, τs},S < T。

另一种优化方式来自 "Denoising Diffusion Implicit Models"。通过重参数化技巧,可以重写 qσ(Xt-1|Xt,X0) 过程为:

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.012.jpeg

又因为,Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.013.jpeg因此,

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.014.jpeg

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.015.jpeg,可以把 η 作为超参数来控制抽样过程的随机程度。特殊情况为:

  • η = 1,抽样过程随机,模型为 DDPM(去噪扩散概率模型)

  • η = 0,抽样过程确定,模型为 DDIM(去噪扩散隐模型)

DDIM 有着和 DDPM 相同的边际噪音分布,但是可以确定性地把噪音映射回原始数据样本。

在生成过程中,DDIM 从扩散过程的 S 步骤的子集进行抽样并推断。作者发现:当 S 很小时,使用 DDIM 能产出最好的图像质量,而 DDPM 则表现很差。也就是说:DDIM 可以使用比 DDPM 更少的抽样步骤,生成更好质量的图像。

与 DDPM 相比,DDIM 能够:

  1. 用更少的步骤生成高质量图像。

  2. 因为生成过程是确定的,所以 DDIM 有连续性。意思是:在同一个潜变量上进行条件抽样的样本,应该具有类似的高维度特征。

  3. 因为连续性,DDIM 能够从潜变量中得的有意义的语义插值。

3.2.2 LDM

"High-Resolution Image Synthesis with Latent Diffusion Models" 一文提出了 Stable Diffusion 和潜扩散模型(Latent Diffusion Model / LDM)。LDM 通过在潜空间中运行扩散过程(DDPM 则是在图像像素空间中)减少了训练成本,加快了推断速度。该文的启发来自观察:“在压缩图像后,其语义和概念组成依然极大保留了下来,而且大部分比特贡献了图像的细节”。LDM 通过生成建模学习松散地分解感知压缩和语义压缩,方法是首先使用自编码器去除像素级冗余,然后通过扩散过程对学习到的潜数据进行操作/生成语义概念。

感知压缩过程依赖于自编码器。自编码器的编码器首先把图像输入压缩为 2D 的潜向量,解码器随后根据该 2D 潜向量重建图像。上述文章还探索了两种正则化方法以避免潜空间中的任意高方差。

LDM 的结构如下,扩散和生成过程都在潜空间中进行。使用的自编码器是时间条件的 U-Net,并且利用例如:语义信息、文本、图像等来实行条件控制,这类似于多模态学习。为了处理文本信息,在 U-Net 中的残差块之间还加入了 Cross-Attention 跨注意力模块

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.016.jpeg

 

3.3 条件生成

3.3.1 分类器引导

ImageNet 等数据集中不仅包含大量的图片,而且有配对的标签。为了让扩散模型在这样的数据集上训练,需要结合标签信息。

Diffusion "Models Beat GANs on Image Synthesis". 一文通过在噪音图片中训练一个分类器来引导抽样过程朝着目标标签移动。因为 score function 为:

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.017.jpeg

所以分类器可以表示为:

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.018.jpeg

作者对 U-Net 结构也进行了一些修改,包括:网络扩展、注意力扩展等。最终在图像生成任务上使用扩散模型打败了 GAN。

3.3.2 无分类器引导

"Classifier-Free Diffusion Guidance" 一文提出了无分类器引导方法。不使用分类器,可以通过结合有条件的 score 函数和无条件的扩散模型来运行扩散步骤。

方法是把无条件的去噪扩散模型通过 score 预测器重参数化,并把有条件的扩散模也重参数化。这两个模型可以通过一个网络学习。该网络使用带标签的配对数据来训练有条件的模型,并在训练过程中周期性随机丢弃一些条件信息来训练无条件模型。

文章的结果表明,无分类器引导的扩散模型能够取得 FID(分辨原始图片和生成图片)以及 IS(质量和多样性) 之间的平衡。

3.4 渐进蒸馏

"Progressive Distillation for Fast Sampling of Diffusion Models" 一文提出了“渐进蒸馏”来加速扩散模型的抽样过程,方法如下图:

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.019.jpeg

渐进蒸馏的概念来源于知识蒸馏。首先初始化两个模型:教师模型和学生模型,两个模型完全相同(网络结构、参数等)。渐进蒸馏的做法是:教师模型依然按照常规的方式完成抽样过程,学生模型则把教师模型所需的步骤减半,用一步过程来预测教师模型的两步结果。在一轮蒸馏结束后,学生模型复制成为新的教师模型。重复以上步骤。

上述方法的奇怪之处在于:为什么不可以直接使用学生模型来预测两步结果,或者教师模型的作用是什么?

答案是:因为扩散模型的抽样过程具有一定的随机性,所以如果抽样过程的步长过大,那么在某个时刻应该生成的图片其实有多种可能,但是只有其中一种是正确的。例如:在某个时刻 t,确定的是图像中应该包含 3 个噪音块,那么该时刻的生成图像至少有下述可能:

  • 噪音块均匀分布

  • 噪音块集中分布在某个位置

    • 图片边缘

    • 图片中央

教师模型存在的意义就是引导学生模型做出正确的判断。

作者团队对多个学生模型的步长进行了研究,发现减半是效果最优的。

参考

标签:Diffusion,抽样,Models,模型,DDPM,扩散,优化
From: https://www.cnblogs.com/risejl/p/17450790.html

相关文章

  • 为什么面试官这么爱问性能优化?
    笔者是一个六年前端,没有大厂经历,也没有什么出彩的项目,所以今年以来,前端现在这种行情下并没有收到多少面试,但是为数不多的面试中,百分之九十都问到了性能优化的问题,而且问题都出奇的一致:平时的工作中你有做过什么性能优化?对于这个问题其实我的内心os是(各位轻喷~):你们怎么都这么......
  • Mysql优化
    死锁优化1.执行查询命令showprocesslist2.生成杀连接命令selectconcat('kill',id,';'),Timefrominformation_schema.processlistwhere1=1andTime>100orderbyTimedesc;3.执行这些kill即可.4.检查sql语句,优化那些同一语句里多个执行的语句或者同一事务里......
  • 武汉星起航:如何优化亚马逊产品排名,提高产品销量
    亚马逊是全球最大的电商平台之一,拥有海量的商品和数亿的用户。在如此庞大的市场中,如何让自己的商品脱颖而出,成为卖家们关注的焦点。除了优质的商品和服务,卖家们还需要了解如何优化商品排名,提高曝光率和销量。以下是武汉星起航整理的一些优化商品排名的技巧和策略。关键词优化关键词......
  • 武汉星起航:亚马逊新品上架,新手卖家如何优化Listing?
    随着亚马逊成为全球最大的电商平台之一,越来越多的新手卖家希望在这个巨大的市场上获得成功。然而,对于新品上架后的推广,许多卖家都面临着困惑。今天,武汉星起航将专为新手卖家分享几个巧妙的推广技巧,助您打造热卖Listing!在亚马逊上,与众多竞争对手相比,独特的产品定位可以帮助您吸引更......
  • 大型 3D 互动项目开发和优化实践
    开发背景得益于“元宇宙”概念在前段时间的爆火,各家公司都推出了使用3D场景的活动或频道。3D场景相比传统的2D页面优点是多一个维度,同屏展示的内容可以更多,能完整的展示物体、商品的信息。相应带来的缺点是用户使用方式改变,用户需要额外的学习成本。另外初期需要的开发......
  • Doris(七) -- 修改表、动态和临时分区、join的优化
    修改表修改表名--1.将名为table1的表修改为table2ALTERTABLEtable1RENAMEtable2;--示例ALTERTABLEaggregate_testRENAMEaggregate_test1;--2.将表example_table中名为rollup1的rollupindex修改为rollup2ALTERTABLEbase_table_nameRENAMEROLLUP......
  • SQL的索引以及优化
    我们不管在写代码,或者对执行数据库操作的时候,SQL优化是不可缺少的一环。所以这个功能至关重要。下面我们来说说SQL语句优化:定位慢查询showstatuslike'connections' ------------------------当有多少客户端连接数据库showstatuslike'slow_queries'----------------------查......
  • IDEA虚拟内存优化
      按照自己需求更改即可(下面是本人的,本人电脑16G内存):   ......
  • 吴恩达教授AI课程:LangChain、扩散模型,用ChatGPT API搭建系统
    家人们,吴恩达教授的AI课程时隔一个月终于又更新了!这次一口气直接推出了三门课,主题包括LangChain、扩散模型,以及用ChatGPTAPI搭建系统。依旧是限时免费,除了扩散模型需要一定知识储备之外,另外两门课新手也能听。有网友为了看完这些课程,直接连觉都不睡了。课程内容这三门课的......
  • 分布式队列编程优化篇
    前言“分布式队列编程”是一个系列文,之前我们已经发布了《分布式队列编程模型、实战》,主要剖析了分布式队列编程模型的需求来源、定义、结构以及其变化多样性;根据作者在新美大实际工作经验,给出了队列式编程在分布式环境下的一些具体应用。本文将重点阐述工程师运用分布式队列编程构......