论文阅读:Improved Denoising Diffusion Probabilistic Models
本文是对ddpm简单的修改,但是能提高ddpm的性能
论文下载地址:https://proceedings.mlr.press/v139/nichol21a.html
我们发现反向过程中可学习的方差允许一个数量级的采样,样本质量的差异可以忽略不计,这对于模型的实际部署很厉害。
- 关于变分下界的优化
使用简单的重参数化技巧学习优化变分下界。反向过程的方差使用简单的重参数化技巧和一个混合的目标vlb函数。
这样的变化导致少的采样步数,但是发生了很小的质量改变
在实际训练中,关于μ(xt,t)\mu(x_t,t)μ(xt,t)的参数化的方式
使用网络预测x0x_0x0,然后使用公式
μˉ(xt,x0):=aˉt−1βt1−αˉt+αt(1−αˉt−1)1−αˉtxt\bar{\mu } (x_t,x_0):=\frac{\sqrt{\bar{a}_{t-1}}\beta_t}{1-\bar{\alpha} _t} +\frac{\sqrt{\alpha _t}(1-\bar{\alpha }_{t-1} ) }{1-\bar{\alpha } _t}x_tμˉ(xt,x0):=1−αˉtaˉt−1βt+1−αˉtαt(1−αˉt−1)xt可以得到均值。也可以使用网络预测ε\varepsilonε,然后使用
xt=αˉtx0+(1−αˉt)Ix_t=\sqrt{\bar{\alpha}}_tx_0+(\sqrt{1-\bar{\alpha}}_t)Ixt=αˉtx0+(1−αˉt)I
μˉ(xt,x0):=aˉt−1βt1−αˉt+αt(1−αˉt−1)1−αˉtxt\bar{\mu } (x_t,x_0):=\frac{\sqrt{\bar{a}_{t-1}}\beta_t}{1-\bar{\alpha} _t} +\frac{\sqrt{\alpha _t}(1-\bar{\alpha }_{t-1} ) }{1-\bar{\alpha } _t}x_tμˉ(xt,x0):=1−αˉtaˉt−1βt+1−αˉtαt(1−αˉt−1)xt去生成均值 μˉ(xt,x0)\bar{\mu } (x_t,x_0)μˉ(xt,x0)
目前这种方法是最好的,尤其是结合重新加权的损失函数
Lsimple =Et,x0,ϵ[∥ϵ−ϵθ(xt,t)∥2]L_{\text {simple }}=E_{t, x_{0}, \epsilon}\left[\left\|\epsilon-\epsilon_{\theta}\left(x_{t}, t\right)\right\|^{2}\right]Lsimple =Et,x0,ϵ[∥ϵ−ϵθ(xt,t)∥2]
原本的lvb损失
Lvlb:=L0+L1+…+LT−1+LTL_{\mathrm{vlb}} :=L_{0}+L_{1}+\ldots+L_{T-1}+L_{T}Lvlb:=L0+L1+…+LT−1+LT
L0:=−logpθ(x0∣x1)L_{0} :=-\log p_{\theta}\left(x_{0} \mid x_{1}\right)L0:=−logpθ(x0∣x1)
Lt−1:=DKL(q(xt−1∣xt,x0)∣∣pθ(xt−1∣xt))L_{t-1}:=D_{K L}(q\left(x_{t-1} \mid x_{t}, x_{0}\right)|| p_{\theta}(x_{t-1}|x_{t})) Lt−1:=DKL(q(xt−1∣xt,x0)∣∣pθ(xt−1∣xt))
LT:=DKL(q(xT∣x0)∥p(xT))L_{T} :=D_{K L}\left(q\left(x_{T} \mid x_{0}\right) \| p\left(x_{T}\right)\right)LT:=DKL(q(xT∣x0)∥p(xT))
对数似然的改进
为研究不同流形上的作用,在image net64*64 上训练固定的模型结构使用固定的超参数。
- 不同的实验设置对比
方法 | ho(2020) | our |
---|---|---|
损失函数及参数设置 | LsimpleL_{simple}Lsimple & σ2=βt\sigma^2=\beta_tσ2=βt & T=10000T=10000T=10000 | Lhybrid=Lsimple +λLvlb,λ=0.001L_{\mathrm{hybrid}}=L_{\text {simple }}+\lambda L_{\mathrm{vlb}},\lambda = 0.001Lhybrid=Lsimple +λLvlb,λ=0.001 |
训练轮数 | 200k | |
T | 1000 | 4000 |
数据集 | image_net64*64 | |
实验结果 | 3.99 | 3.77 |
学习Σθ(xt,t)\Sigma_{\theta}\left(x_{t}, t\right)Σθ(xt,t)
在无限步长的扩散的过程条件下,方差的作用远没有均值对实验结果的影响大。或者说,方差几乎不发挥作用。
实验中,我们发现扩散过程前几步对整个扩散过程很重要。于是,通过使用更好的Σθ(xt,t)\Sigma_{\theta}\left(x_{t}, t\right)Σθ(xt,t)可以很大程度上提高对数释然。
合理的Σθ(xt,t)\Sigma_{\theta}\left(x_{t}, t\right)Σθ(xt,t)的范围很小,对于神经网络去寻找一个合理的Σθ(xt,t)\Sigma_{\theta}\left(x_{t}, t\right)Σθ(xt,t)不是容易的,
我们发现更好的参数化Σθ(xt,t)\Sigma_{\theta}\left(x_{t}, t\right)Σθ(xt,t)是差值βˉt\bar{\beta}_tβˉt和βt\beta_tβt在对数域。我们的模型输出vvv,每个维度包含一个分量,然后将这个输出转换为如下方差:
Σθ(xt,t)=exp(vlogβt+(1−v)logβ~t)\Sigma_{\theta}\left(x_{t}, t\right)=\exp \left(v \log \beta_{t}+(1-v) \log \tilde{\beta}_{t}\right)Σθ(xt,t)=exp(vlogβt+(1−v)logβ~t)trick{\color{Red}trick }trick
stop- gradient
改善噪声机制
线性噪声机制对于高分辨率图像很好,在分辨率小的图像上结果次优。ddpm中的前向加噪过程对采样过程没有太大的贡献。
- 原本的加噪机制:
q(x1,…,xT∣x0):=∏t=1Tq(xt∣xt−1)q(x_{1}, \dots, x_{T} | x_{0}) :=\prod_{t=1}^{T} q\left(x_{t} \mid x_{t-1}\right)q(x1,…,xT∣x0):=∏t=1Tq(xt∣xt−1)
q(xt∣xt−1):=N(xt;1−βtxt−1,βtI)q(x_{t}| x_{t-1}):=\mathcal{N}\left(x_{t} ; \sqrt{1-\beta_{t}} x_{t-1}, \beta_{t} \mathbf{I}\right)q(xt∣xt−1):=N(xt;1−βtxt−1,βtI)
对任何时刻的加噪样本:
q(xt∣x0)=N(xt;αˉtx0,(1−αˉt)I)xt=αˉtx0+1−αˉtϵ\begin{aligned} q\left(x_{t} \mid x_{0}\right) &=\mathcal{N}\left(x_{t} ; \sqrt{\bar{\alpha}_{t}} x_{0},\left(1-\bar{\alpha}_{t}\right) \mathbf{I}\right) \\ x_{t} &=\sqrt{\bar{\alpha}_{t}} x_{0}+\sqrt{1-\bar{\alpha}_{t}} \epsilon \end{aligned}q(xt∣x0)xt=N(xt;αˉtx0,(1−αˉt)I)=αˉtx0+1−αˉtϵ
加噪机制的改进:
αˉt=f(t)f(0),f(t)=cos(t/T+s1+s⋅π2)2\bar{\alpha}_{t}=\frac{f(t)}{f(0)}, \quad 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+s⋅2π)2
其中:
βt=1−αˉtαˉt−1\beta_{t}=1-\frac{\bar{\alpha}_{t}}{\bar{\alpha}_{t-1}}βt=1−αˉt−1αˉt- 为了防止开始时βt,t=0\beta_t,t=0βt,t=0太小,使得网络在预测噪声的时候很困难。我们让β0\sqrt{\beta_0}β0=1/127.5=0.008。
- 在实际中使用cos2cos^2cos2
- 不同的LvlbL_{vlb}Lvlb有不同边际。采样t均匀的会引起没必要的噪声在LvlbL_{vlb}Lvlb中。我们使用重要性采样:
Lvlb=Et∼pt[Ltpt], where pt∝E[Lt2]and ∑pt=1L_{\mathrm{vlb}}=E_{t \sim p_{t}}\left[\frac{L_{t}}{p_{t}}\right] \text {, where } p_{t} \propto \sqrt{E\left[L_{t}^{2}\right]} \text { and } \sum p_{t}=1Lvlb=Et∼pt[ptLt], where pt∝E[Lt2] and ∑pt=1,由于
E[Lt2]E\left[L_{t}^{2}\right]E[Lt2]是未知的,可能在整个训练过程中发生变化。于是,我们的每个损失保持10个值的历史,并在训练期间动态更新。训练开始,我们均匀的采样十个样本,t∈[0,T−1]t \in[0, T-1]t∈[0,T−1]。
总结
- 损失函数的改进
- 噪声机制使用cos
论文阅读:Improved Denoising Diffusion Probabilistic Models相关推荐
- 论文阅读 (65):RePaint: Inpainting using Denoising Diffusion Probabilistic Models
文章目录 1 概述 1.1 题目 1.2 代码 1.3 摘要 1.4 Bib 2 去噪扩散修复模型 3 方法 3.1 调整已知区域 3.2 重采样 1 概述 1.1 题目 2022CVPR:用于图 ...
- DDPM(Denoising Diffusion Probabilistic Models)扩散模型简述
引言 扩散模型最早是在2015年的Deep Unsupervised Learning using Nonequilibrium Thermodynamics文章中提出的,但当时扩散模型并不work, ...
- Medical Diffusion - Denoising Diffusion Probabilistic Models for 3D Medical Image Generation
Medical Diffusion - Denoising Diffusion Probabilistic Models for 3D Medical Image Generation 论文链接:ht ...
- Diffusion Model (扩散生成模型)的基本原理详解(一)Denoising Diffusion Probabilistic Models(DDPM)
本章开始笔者来陆续的介绍最近爆火的Diffusion Model的近期发展. 本篇的学习内容与图片均来自于对文章Diffusion Models: A Comprehensive Survey of ...
- 2022图像翻译/扩散模型:UNIT-DDPM: UNpaired Image Translation with Denoising Diffusion Probabilistic Models
2022图像翻译/扩散模型:UNIT-DDPM: UNpaired Image Translation with Denoising Diffusion Probabilistic Models. U ...
- 生成网络论文阅读:DDPM(一):Denoising Diffusion Probabilistic Models论文概述
结构速览 1.论文的整体逻辑是什么 2.具体怎么加入噪声和去掉噪声的 2.1加入参数的大致指导思想 2.2具体怎么加入噪声 2.3怎么去掉噪声(问题最后转化为怎么估算噪声) 2.4怎么估计噪声(实际上 ...
- 1、Denoising Diffusion Probabilistic Models(扩散模型)
简介 主页:https://hojonathanho.github.io/diffusion/ 扩散模型 (diffusion models)是深度生成模型中新的SOTA. 扩散模型在图片生成任务中超 ...
- Unsupervised Representation Learning from Pre-trained Diffusion Probabilistic Models
Unsupervised Representation Learning from Pre-trained Diffusion Probabilistic Models 论文链接: https://a ...
- DDIM原理及代码(Denoising diffusion implicit models)
前言 之前学习了 DDPM(DDPM原理与代码剖析)和 IDDPM(IDDPM原理和代码剖析), 这次又来学习另一种重要的扩散模型.它的采样速度比DDPM快很多(respacing),扩散过程不依赖马 ...
- Denoising Diffusion Probabilistic Model,DDPM阅读笔记——(一)
Denoising Diffusion Probabilistic Model 一.写在前面 二.相关数学知识简介 二.生成模型简介: 三.变分自编码器概述(VAE) 一.写在前面 人工智能生成内容( ...
最新文章
- 网络安全界永恒不变的10大安全法则
- CMD 控制台CMD程序怎么执行完不关闭界面?@pause
- 《Java 核心技术卷1 第10版》学习笔记------日志
- Redis多实例及主从搭建
- Platform.Uno介绍
- Laravel debug bar 调试利器
- 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- distpicker省市区插件设置请选择省市区提示/或设置初始值问题
- 海量数据处理分析经验和技巧
- Java具有哪些语言特点
- 辅助功能 AccessibilityService笔记
- ivue-admin Table单元格内换行问题
- 怎么写好一份数据分析报告
- vue中的created和mounted函数不生效(created和mounted不管用)?
- 多言统计及R语言建模按组距为300编制频数表,计算频数,频率和累积频率表,并绘制直方图
- html5自动播放音乐外链,仿网易云音乐外链播放器UI的HTML5音乐播放器插件
- 转:15条优化电脑系统开机速度方法
- 教你如何显示隐藏文件
- python爬虫--获取天猫店铺商品价格及销量
- 抖音IP属地能改吗?抖音IP属地错误是什么原因?
热门文章
- php 英文小写转大写数字,php 英文字符大小写转换函数
- 基于深度学习技术的AI输入法引擎
- 统计学习理论(SLT)与支持向量机(SVM)
- 欢迎你、某某某同学python_python123第一周作业
- java docx4j 合并word_如何使用docx4j在word中添加合并字段?
- 金星DEM数据介绍与下载教程
- 王道——数据结构 第一章 思维拓展
- python提取关键词_【Python工具】30万关键词提取疑问词只需2秒,效率高到飞起!...
- MySQL的基础汇总(包含60道练习题)~~
- JavaScript三种弹出框(alert、confirm、prompt),一次性全弄清!