【论文阅读】Improved Denoising Diffusion Probabilistic Models

Improved Denoising Diffusion Probabilistic Models

文章目录

引用: Nichol A Q, Dhariwal P. Improved denoising diffusion probabilistic models[C]//International conference on machine learning. PMLR, 2021: 8162-8171.

论文链接: https://arxiv.org/abs/2102.09672

代码链接: https://github.com/openai/improved-diffusion

概述

去噪扩散概率模型 (DDPM) 是一类生成模型,最近已被证明可以产生出色的样本。实验表明,通过一些简单的修改,DDPM还可以在保持高样品质量的同时实现竞争性的对数似然。为了更紧密地优化变分下界 (VLB),我们使用简单的重新参数化和混合学习目标来学习逆向过程方差,该目标将 VLB 与 Ho 等人[1]的简化目标相结合,允许采样前向传递减少一个数量级,样本质量差异可以忽略不计,这对于这些模型的实际部署非常重要。使用混合目标,模型获得了比直接优化对数似然获得的对数似然更好的对数似然,并发现后一个目标在训练过程中具有更多的梯度噪声。与混合目标相比,一个简单的重要性采样技术可以减少这种噪声,并能够获得更好的对数似然。此外,论文还使用精确度和召回率来比较 DDPM 和 GAN 对目标分布的覆盖程度。最后,我们表明,这些模型的样本质量和可能性可以随着模型容量和训练计算而平滑扩展,使其易于扩展。

Improving the Log-likelihood

虽然Ho等人[1]发现DDPM可以根据FID[2]和Inception Score[3]生成高保真样本,但他们无法通过这些模型实现竞争对数可能性。对数似然是生成建模中广泛使用的指标,人们普遍认为,优化对数似然会迫使生成模型捕获数据分布的所有模式。此外,最近的工作[4]表明,对数似然的微小改进可以对样本质量和学习的特征表示产生巨大影响。因此,重要的是要探讨为什么 DDPM 似乎在这个指标上表现不佳,因为这可能表明一个根本性的缺点,例如模式覆盖率差。

为了研究不同修改的影响,在ImageNet 64×64和CIFAR-10数据集上训练具有固定超参数的固定模型架构。虽然 CIFAR-10 在此类模型中的应用更多,但论文选择研究 ImageNet 64 × 64,因为它在多样性和分辨率之间提供了良好的权衡,能够快速训练模型而不必担心过度拟合。此外,ImageNet 64×64 已在生成建模的背景下进行了广泛研究,能够将 DDPM 直接与许多其他生成模型进行比较。

Ho等人[1]的设置(在设置 σ t 2 = β t σ^2_t = β_t σt2=βt T = 1000 T = 1000 T=1000 的同时优化 L s i m p l e L_{simple} Lsimple )在 200K 训练迭代后,在 ImageNet 64 × 64 64 × 64 64×64 上实现了 3.99 3.99 3.99 b i t s / d i m bits/dim bits/dim) 的对数似然。论文在早期的实验中发现,可以通过将 T T T 1000 1000 1000 增加到 4000 4000 4000 来提高对数似然;通过此更改,对数似然提高到 3.77 3.77 3.77

Learning ∑ θ ( x t , t ) \sum_{\theta}(x_{t}, t) θ(xt,t)

在这里插入图片描述

Ho等人[1]将 ∑ θ ( x t , t ) = σ t 2 I \sum_{\theta}(x_{t}, t) = \sigma_{t}^{2}I θ(xt,t)=σt2I,其中 σ t σ_t σt 不是学习的。奇怪的是,他们发现将 σ t 2 σ^2_t σt2 固定到 β t β_t βt 产生的样品质量与将其固定到 β ~ t \tilde { \beta } _ { t } β~t 大致相同。考虑到 β t β_t βt β ~ t \tilde { \beta } _ { t } β~t 代表两个相反的极端,有理由问为什么这种选择不会影响样本。图 1 给出了一个线索,**它表明 β t β_t βt β ~ t \tilde { \beta } _ { t } β~t 几乎相等(除了接近 t = 0 t = 0 t=0),即模型正在处理难以察觉的细节。此外,随着扩散步骤数量的增加, β t β_t βt和β ̃t似乎在更多的扩散过程中彼此靠近。这表明,在无限扩散步骤的极限下, σ t σ_t σt的选择对样品质量可能完全无关紧要。换句话说,当添加更多的扩散步骤时,模型平均值 μ θ ( x t , t ) \mu _ { \theta } ( x _ { t } , t ) μθ(xt,t) ∑ θ ( x t , t ) \sum_{\theta}(x_{t}, t) θ(xt,t)更能决定分布。虽然上述论点表明,为了样本质量,固定 σ t σ_t σt 是一个合理的选择,但它并没有说明对数似然性。事实上,图2显示,扩散过程的前几步对变分下限的贡献最大。因此,似乎可以通过使用更好的 ∑ θ ( x t , t ) \sum_{\theta}(x_{t}, t) θ(xt,t) 选择来提高对数似然。为了实现这一目标,必须学习 ∑ θ ( x t , t ) \sum_{\theta}(x_{t}, t) θ(xt,t),而不会遇到 Ho 等人遇到的不稳定性。

由于图 1 显示 ∑ θ ( x t , t ) \sum_{\theta}(x_{t}, t) θ(xt,t)的理想范围非常小,因此神经网络很难直接预测 ∑ θ ( x t , t ) \sum_{\theta}(x_{t}, t) θ(xt,t),即使在对数域中也是如此。相反,我们发现最好将方差参数化为在log域 β t β_t βt β ~ t \tilde { \beta } _ { t } β~t之间的插值。具体而言,模型输出一个向量 v v v,每个维度包含一个分量,将此输出转换为方差,如下所示:

∑ θ ( x t , t ) = e x p ( v log ⁡ β t + ( 1 − v ) log ⁡ β ~ t ) \sum _ { \theta } ( x _ { t } , t ) = e x p ( v \log \beta _ { t } + ( 1 - v ) \log \tilde { \beta } _ { t } ) θ(xt,t)=exp(vlogβt+(1v)logβ~t)

没有对 v v v 施加任何约束,理论上允许模型预测插值范围之外的方差。由于 Lsimple 不依赖于 ∑ θ ( x t , t ) \sum_{\theta}(x_{t}, t) θ(xt,t),因此定义了一个新的混合目标:

L h y b r i d = L s i m p l e + λ L v l b L _ { h y b r i d } = L _ { s i m p l e } + \lambda L _ { v l b } Lhybrid=Lsimple+λLvlb

对于实验,设置 λ = 0.001 λ = 0.001 λ=0.001 以防止 L v l b L_{vlb} Lvlb 压倒 L s i m p l e L_{simple} Lsimple。按照同样的推理思路,还对 L v l b L_{vlb} Lvlb项的 μ θ ( x t , t ) \mu _ { \theta } ( x _ { t } , t ) μθ(xt,t)输出应用了停止梯度。这样,$L_{vlb} $可以引导 ∑ θ ( x t , t ) \sum_{\theta}(x_{t}, t) θ(xt,t),而 L s i m p l e L_{simple} Lsimple 仍然是影响 μ θ ( x t , t ) \mu _ { \theta } ( x _ { t } , t ) μθ(xt,t)的主要来源。

在这里插入图片描述

Improving the Noise Schedule

虽然Ho等人中使用的线性噪声调度对于高分辨率图像效果良好,但对于分辨率为64×64和32×32的图像来说,它是次优的。特别地,前向噪声处理的末尾噪声太大,因此对样本质量没有太大贡献。这可以在图3中直观地看到。这种影响的结果在图4中进行了研究,当跳过高达20%的反向扩散过程时,用线性时间表训练的模型不会变得更糟(通过FID测量)。为了解决这个问题,根据 α t ˉ \bar { \alpha _ { t } } αtˉ构建了一个不同的噪声表:

α t ˉ = f ( t ) f ( 0 ) , f ( t ) = cos ⁡ ( t / T + s 1 + s ⋅ π 2 ) 2 \bar { \alpha _ { t } } = \frac { f ( t ) } { f ( 0 ) } , f ( t ) = \cos \left( \frac { t / T + s } { 1 + s } \cdot \frac { \pi } { 2 } \right) ^ { 2 } αtˉ=f(0)f(t),f(t)=cos(1+st/T+s2π)2

β t = 1 − α ‾ t α ‾ t − 1 \beta _ { t } = 1 - \frac { \overline { \alpha } _ { t } } { \overline { \alpha } _ { t - 1 } } βt=1αt1αt

在实践中,将 β t \beta_t βt 裁剪为不大于 0.999,以防止在扩散过程结束时接近 $t = T $的奇点。

在这里插入图片描述

提出的余弦时间表被设计为在过程中具有 α t ˉ \bar { \alpha _ { t } } αtˉ的线性下降,同时在$ t = 0 $和 t = T t = T t=T 的极端附近变化很小,以防止噪声水平的突然变化。图 5 显示了两个计划的 α α α进展情况。可以看到,线性时间表以更快的速度趋向于零,破坏信息的速度比必要的要快得多。使用较小的偏移量 s s s 来防止 β t β_t βt 在$ t = 0 附近太小,因为在过程开始时有少量的噪声会使网络难以足够准确地预测。 ∗ ∗ 特别是,选择了 附近太小,因为在过程开始时有少量的噪声会使网络难以足够准确地预测。**特别是,选择了 附近太小,因为在过程开始时有少量的噪声会使网络难以足够准确地预测。特别是,选择了 s ,使得 ,使得 ,使得\sqrt { \beta _ { 0 } }$略小于像素箱大小 1 / 127.5 1/127.5 1/127.5,因此 s = 0.008 s = 0.008 s=0.008。我们特别选择使用 c o s 2 cos^2 cos2,因为它是一个具有我们正在寻找的形状的通用数学函数。这种选择是任意的,我们预计许多其他具有类似形状的函数也可以使用。**

Reducing Gradient Noise

在这里插入图片描述

在这里插入图片描述

我们希望通过直接优化 L v l b L_{vlb} Lvlb 而不是优化 L h y b r i d L_{hybrid} Lhybrid 来实现最佳的对数似然。然而, L v l b L_{vlb} Lvlb在实践中实际上很难优化,至少在多样化的 ImageNet 64×64 数据集上是这样。图 6 显示了 $L_{vlb} $和 L h y b r i d L{hybrid} Lhybrid 的学习曲线。两条曲线都是嘈杂的,但在训练时间相同的情况下,混合目标显然在训练集上实现了更好的对数似然。通过评估使用两个目标训练的模型的梯度噪声标度证实了 L v l b L_{vlb} Lvlb 的梯度比 L h y b r i d L_{hybrid} Lhybrid 的梯度大得多,如图7所示。因此,我们寻找一种方法来减少 L v l b L_{vlb} Lvlb 的方差,以便直接优化对数似然性。注意到 L v l b L_{vlb} Lvlb的不同项具有很大差异的幅度(图 2),假设采样$ t $在 $L_{vlb} $中均匀地产生不必要的噪声。为了解决这个问题,采用了重要性抽样:

L v l b = E t ∼ p t [ L t p t ] , w h e r e p t ∝ E [ L t 2 ] a n d ∑ p t = 1 L_{vlb} = E_{ t \sim p_{t} } \left[ \frac { L_{t} } { p_{t} } \right] , where p_{t} \propto \sqrt { E \left[ L_{t} ^ {2} \right] } and \sum p_{t} = 1 Lvlb=Etpt[ptLt],whereptE[Lt2] andpt=1

由于 E [ L t 2 ] E \left[ L _ { t } ^ { 2 } \right] E[Lt2] 事先是未知的,并且可能在整个训练过程中发生变化,因此我们维护每个损失项的前 10 个值的历史记录,并在训练期间动态更新。在训练开始时,均匀地采样 t t t,直到为每个 $t ∈ [0, T −1] $抽取 10 个样本。有了这个重要性抽样目标,就能够通过优化 L v l b L_{vlb} Lvlb 来实现最佳的对数似然。如图 6 所示,即 L v l b L_{vlb} Lvlb(重采样)曲线。该图还显示,重要性采样物镜的噪声比原始的均匀采样要小得多。可以发现,在直接优化噪声较小的L_{{hybrid}时,重要性采样技术没有帮助。

Improving Sampling Speed

在这里插入图片描述

为了减少从 T T T K K K 的采样步骤数,使用$ K$ 个介于 1 1 1 T T T(含)之间的均匀分布的实数,然后将每个结果数字四舍五入到最接近的整数。在图 8 中,评估了使用 4000 扩散步骤,使用 25、50、100、200、400、1000 和 4000 个采样步骤训练的$ L_{hybrid}$ 模型和 L s i m p l e L_{simple} Lsimple 模型的 FID。.我们既针对训练有素的检查点,也针对培训中途的检查点。对于 CIFAR-10,使用了 200K 和 500K 的训练迭代,对于 ImageNet 64,使用了 500K 和 1500K 的训练迭代。可以发现,当使用较少的采样步骤时,具有固定sigmas的 L s i m p l e L_{simple} Lsimple 模型在样本质量方面受到的影响要大得多,而学习sigmas的 L h y b r i d L_{hybrid} Lhybrid模型保持了较高的样本质量。使用此模型,100 个采样步骤足以为完全训练的模型实现近乎最佳的 FID。

Scaling Model Size

在这里插入图片描述

为了衡量性能如何通过训练计算进行扩展,我们在 ImageNet 64 × 64 上训练了四个不同的模型,并使用 L h y b r i d L_{hybrid} Lhybrid 目标。为了改变模型容量,在所有层上应用深度乘法器,使得第一层有 64、96、128 或 192 个通道。请注意,之前的实验在第一层中使用了 128 个通道。由于每一层的深度都会影响初始权重的规模,因此将每个模型的Adam学习率按 1 / c h a n n e l m u l t i p l i e r 1 / \sqrt{channel multiplier} 1/channelmultiplier 缩放,因此128通道模型的学习率为0.0001。图 10 显示了 FID 和 NLL 相对于理论训练计算的改进情况。FID 曲线在对数-对数图上看起来近似线性,表明 FID 根据幂律(绘制为黑色虚线)进行缩放。NLL曲线不能完全拟合幂律,这表明验证NLL的扩展方式不如FID。这可能是由多种因素引起的,例如 1) 这种类型的扩散模型出乎意料的高不可约损失,或 2) 模型过度拟合到训练分布。还注意到,这些模型通常无法实现最佳对数似然,因为它们是使用 L h y b r i d L_{hybrid} Lhybrid 而不是直接使用 L v l b L_{vlb} Lvlb 进行训练的,以保持良好的对数似然性和样本质量。

实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考文献

[1] Ho, J., Jain, A., and Abbeel, P. Denoising diffusion probabilistic models, 2020.
[2] Heusel, M., Ramsauer, H., Unterthiner, T., Nessler, B., and Hochreiter, S. Gans trained by a two time-scale update rule converge to a local nash equilibrium. Advances in Neural Information Processing Systems 30 (NIPS 2017), 2017.
[3] Salimans, T., Goodfellow, I., Zaremba, W., Cheung, V., Radford, A., and Chen, X. Improved techniques for training gans, 2016.
[4] Kaplan, J., McCandlish, S., Henighan, T., Brown, T. B., Chess, B., Child, R., Gray, S., Radford, A., Wu, J., and Amodei, D. Scaling laws for neural language models, 2020.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/469962.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AV1:帧内预测(一)

​VP9支持10种帧内预测模式,包括8种角度模式和非角度模式DC、TM(True Motion)模式,AV1在其基础上进一步扩展,AV1帧内预测角度模式更细化,同时新增了部分非角度模式。 扩展的角度模式 AV1在VP9角度模式的基础上进一步扩展&#xf…

Linux系统学习总结(上)

B站大学地址:第二章-04-ls命令的参数和选项_哔哩哔哩_bilibili 操作系统概述 1、计算机是由硬件和软件两部分组成的 2、操作系统是软件的一类,主要作用是协助用户调度硬件工作,充当用户和计算机硬件之间的桥梁 3、常见的操作系统分为两类…

C++ Primer Plus第十七章笔记

目录 1. C输入和输出概述 1.1 流、缓冲区和iostream 1.2 重定向 2. 使用cout进行输出 2.1 修改显示时使用的计数系统 2.2 调整字段宽度 2.3 填充字符 2.4 设置浮点数的显示精度 2.5 打印末尾的0或小数点 2.6 setf() 2.7 头文件iomanip 3. 使用cin进行输入 3.1 cin…

什么是组态软件?Web组态软件又是什么?

从事相关工作的对“组态软件”应该都不陌生,那Web组态软件又是什么呢?本文将对Web组态可视化软件(下称“Web组态软件”)做简单介绍,可视化编辑器是Web组态软件中的一个重要功能模块。除了编辑器,还有哪些功能模块?又…

嵌入式汇编语言简介

嵌入式汇编语言是一种在嵌入式系统开发中广泛使用的编程语言,它直接操作底层硬件资源,具有高效性和灵活性。本文将介绍嵌入式汇编语言的基本概念、特点以及应用场景。 以下是我整理的关于嵌入式开发的一些入门级资料,免费分享给大家&#xf…

Spring之@Value注解

前言 Value注解在Spring的依赖注入中占据重要地位,这里对Value注解的作用进行演示以及扩展 作用 注入字符串注入属性注入bean其他 代码准备 创建两个普通的bean Component public class ValueComponent { } Component public class Foo {private String sign;public Foo…

Linux编译器--gcc/g++的使用

1. gcc与g gcc与g分别是c语言与c代码的编译器,但同时g也兼容c语言。 我们知道在Linux中,系统并不以文件后缀来区分文件类别。但对于gcc与g等编译器而言却是需要的。Linux中c代码文件的后缀是.c,c代码文件的后缀是.cpp(.cc)(.cxx)。 在Linu…

linux安装Redis且搭建主从、哨兵、集群以及使用(超详细)

一.Redis简介 1.NoSQL简介 ​ 目前市场主流数据存储都是使用关系型数据库。每次操作关系型数据库时都是I/O操作,I/O操作是主要影响程序执行性能原因之一,连接数据库关闭数据库都是消耗性能的过程。尽量减少对数据库的操作,能够明显的提升程…

Nodejs 第五十八章(大文件上传)

在现代网站中,越来越多的个性化图片,视频,去展示,因此我们的网站一般都会支持文件上传。 文件上传的方案 大文件上传:将大文件切分成较小的片段(通常称为分片或块),然后逐个上传这…

体育运动直播中的智能运动跟踪和动作识别系统 - 视频分析如何协助流媒体做出实时决策

AI-Powered Streaming Vision: Transforming Real-Time Decisions with Video Analytics 原著:弗朗西斯科冈萨雷斯|斯特朗(STRONG)公司首席ML科学家 翻译:数字化营销工兵 实时视频分析通过即时处理实时视频数据&…

【故障排查】10分钟解决Quartz重复调度的疑难杂症

我司使用Apache DolphinScheduler作为调度框架很久了,感兴趣的小伙伴可以看看这些干货文章: 因为之前监控到会出现重复的调度的问题,所以此文记录排查重复调度问题的全过程,希望对社区其他的小伙伴能够起到抛砖引玉的作用&#x…

1.中医学习-总论

目录 1.为什么要学中医 2.什么是中医 介绍 中医例子1: 中医例子2: 中医最高境界“大道至简” 中医讲究的是本质 中医核心:阴阳、表里、寒热、虚实 ​编辑医不叩门 3.阴阳 1.一天中的阴阳 2.一年中的阴阳 3.阴阳之间的关系 4.阴阳四季的变化 …

JetBrains学生包续期

Pycharm进入显示your license has expired 这个意思是你的许可过期了,重新输入最新的激活码就可以了。 1. 说明我的JetBrains学生包需要进行续期了。首先登录JetBrains官网打开个人主页,点击Renew my Education Pack 2. 然后填写一系列信息,…

户用光伏OA管理系统——光伏企业管理的新利器

随着全球对可再生能源的重视和推广,光伏行业得到了快速的发展,为人们提供了清洁、可再生能源。户用光伏作为光伏行业中应用最为广泛的发电系统,可以安装在居民住宅等地。越来越多的人们对户用光伏的发展给予支持,给光伏企业管理带…

PHP+MySQL开发组合:多端多商户DIY商城源码系统 带完整的搭建教程以及安装代码包

近年来,电商行业的迅猛发展,越来越多的商户开始寻求搭建自己的在线商城。然而,传统的商城系统往往功能单一,无法满足商户个性化、多样化的需求。同时,搭建一个功能完善的商城系统需要专业的技术团队和大量的时间成本&a…

OpenCV4.9.0在windows系统下的安装

返回:OpenCV系列文章目录(持续更新中......) 上一章:将 OpenCV 与 Eclipse 结合使用(插件 CDT) 下一章:未发表 警告: 本教程可以包含过时的信息. 此处的描述已在 Windows 7 SP1 上…

FMQL45 XADC

通过PL自带的XADC可以读写温度,电压等,但是总是读的不对。开始查找FM_QL_bsp里面少了一个部分就是pl!添加,在ewp已经修改了,但是文件不存在,现在给补上了,有点奇怪,有的项目会自动生…

ConKI: Contrastive Knowledge Injection for Multimodal Sentiment Analysis

文章目录 ConKI:用于多模态情感分析的对比知识注入文章信息研究目的研究内容研究方法1.总体结构2.Encoding with Knowledge Injection2.1 Pan-knowledge representations2.2 Knowledge-specific representations 3.Hierarchical Contrastive Learning4.损失函数5.训…

发布镜像到阿里云仓库

发布上一篇Dockerfile实战-自定义的centos镜像。 1、登录阿里云 2、找到容器镜像服务 3、创建命令空间 4、创建镜像仓库 5、点击进入这个镜像仓库,可以看到所有的信息 6、根据操作指南测试推送发布 6.1登录阿里云 [rootzhoujunru home]# docker login --usernam…

【问题记录】自定义Prometheus exporter收集数据,Prometheus显示收集到数据,grafana未显示数据出来

问题背景: 使用golang编写Prometheus exporter,获取指定API Url返回值中的data值,把它做为自定义指标。 1、exporter 500ms自动更新一次data值 2、Prometheus的Graph界面输入自定义指标可以查询到值的变化 3、自定义指标最小时间是ms级别&…