Elucidating the Design Space of Diffusion-Based Generative Models 阅读笔记

文章使用模块化(modular)的思想,分别从采样、训练、score network设计三个方面分析和改进diffusion-based models。

之前的工作1已经把diffusion-based models统一到SDE或者ODE框架下了,这篇文章的作者同样也从SDE和ODE的角度出发,不过换了一种SDE和ODE的表示形式。

假设有方差是 σ d a t a \sigma_{data} σdata的数据分布 p d a t a ( x ) p_{data}(\mathbf x) pdata(x)。考虑一族分布 p ( x ; σ ) p(\mathbf x; \sigma) p(x;σ),其通过对数据添加方差为 σ \sigma σ的高斯噪声产生。在变化的过程中加入缩放 x = s ( t ) x ^ \mathbf x=s(t)\hat{\mathbf x} x=s(t)x^,则有下面的ODE:
d x = [ s ˙ ( t ) s ( t ) x − s ( t ) 2 σ ˙ ( t ) σ ( t ) ∇ x log ⁡ p ( x s ( t ) ; σ ( t ) ) ] d t (4) \mathrm{d} \mathbf x = \left[ \frac{\dot s(t)}{s(t)} \mathbf x - s(t)^2 \dot\sigma(t) \sigma(t) \nabla_{\mathbf x} \log p(\frac{\mathbf x}{s(t)}; \sigma(t)) \right] dt \tag{4} dx=[s(t)s˙(t)xs(t)2σ˙(t)σ(t)xlogp(s(t)x;σ(t))]dt(4)perturbation kernel的形式是:
p 0 t ( x ( t ) ∣ x ( 0 ) ) = N ( x ( t ) ; s ( t ) x ( 0 ) , s ( t ) 2 σ ( t ) 2 I ) (11) p_{0t}(\mathbf x(t) | \mathbf x(0)) = \mathcal N(\mathbf x(t) ; s(t)\mathbf x(0), s(t)^2\sigma(t)^2 \mathbf I) \tag{11} p0t(x(t)x(0))=N(x(t);s(t)x(0),s(t)2σ(t)2I)(11)在之前的工作1中SDE的形式是:
d x = f ( t ) x + g ( t ) d w t (10) \mathrm{d} \mathbf x = f(t)\mathbf x + g(t)dw_t \tag{10} dx=f(t)x+g(t)dwt(10)其中 s ( t ) = exp ⁡ ( ∫ o t f ( ξ ) d ξ ) s(t)=\exp(\int_o^t f(\xi)d\xi) s(t)=exp(otf(ξ)dξ) σ ( t ) = ∫ o t g ( ξ ) 2 s ( ξ ) 2 d ξ \sigma(t)=\sqrt{\int_o^t \frac{g(\xi)^2}{s(\xi)^2}d\xi} σ(t)=ots(ξ)2g(ξ)2dξ

不同于之前的论文,这篇文章考虑的是一个直接估计去噪输出的去噪函数 D ( x ; σ ) D(\mathbf x;\sigma) D(x;σ)
E y ∼ p d a t a E n ∼ N ( 0 , σ 2 I ) ∥ D ( y + n ; σ ) − y ∥ 2 2 , ∇ x log ⁡ p ( x ; σ ) = ( D ( x ; σ ) − x ) / σ 2 (2,3) \mathbb E_{y \sim p_{data}} \mathbb E_{\mathbf n \sim \mathcal N(\mathbf 0, \sigma^2 \mathbf I)} \| D(\mathbf y + \mathbf n;\sigma) - \mathbf y \|_2^2,~~~~\nabla_{\mathbf x}\log p(\mathbf x ; \sigma) = (D(\mathbf x; \sigma) - \mathbf x)/ \sigma^2 \tag{2,3} EypdataEnN(0,σ2I)D(y+n;σ)y22,    xlogp(x;σ)=(D(x;σ)x)/σ2(2,3)其中 y \mathbf y y是训练样本, n \mathbf n n是添加的噪声。在这种设置下,score function变成了用 D ( x ; σ ) D(\mathbf x;\sigma) D(x;σ)估计添加的噪声。用网络 D θ ( x ; σ ) D_\theta(\mathbf x;\sigma) Dθ(x;σ)按照公式(2)可以估计 D ( x ; σ ) D(\mathbf x;\sigma) D(x;σ)。需要注意的是, D θ ( x ; σ ) D_\theta(\mathbf x;\sigma) Dθ(x;σ)可能包括额外的预处理步骤和后处理步骤。

ODE解轨迹的形状由 σ ( t ) \sigma(t) σ(t) s ( t ) s(t) s(t)决定。因为在求解微分方程的时候截断误差(truncation error)和 d x / d t dx/dt dx/dt的曲率有关,作者认为最好的选择是 σ ( t ) = t \sigma(t)=t σ(t)=t s ( t ) = 1 s(t)=1 s(t)=1,这样 d x / d t = ( x − D ( x ; t ) ) / t dx/dt=(\mathbf x-D(\mathbf x;t))/t dx/dt=(xD(x;t))/t并且 σ \sigma σ t t t是相同的,两个符号可以串着用。好处是在任何 x , t x,t x,t位置,一个到 t = 0 t=0 t=0的Euler步就是对去噪图像的估计 D θ ( x ; t ) D_\theta(\mathbf x;t) Dθ(x;t),解估计的切线总是指向去噪图像。如下图所示(c)也就是 σ ( t ) = t \sigma(t)=t σ(t)=t s ( t ) = 1 s(t)=1 s(t)=1的情况,这和DDIM相同。
在这里插入图片描述

SDE可以表示成:
在这里插入图片描述
这揭示了为什么随机性在实践中有帮助:隐式朗之万扩散驱动样本在给定时间朝向所需的边际分布,主动纠正早期采样步骤中产生的任何错误。

直接用网络 D θ D_\theta Dθ预测 D ( x ; σ ) D(\mathbf x;\sigma) D(x;σ)在实践中效果并不好,作者考虑对网络 F θ F_\theta Fθ添加预处理步骤和后处理步骤来预测 D ( x ; σ ) D(\mathbf x;\sigma) D(x;σ)
D θ ( x ; σ ) = c s k i p ( σ ) x + c o u t ( σ ) F θ ( c i n ( σ ) x ; c n o i s e ( σ ) ) D_\theta(\mathbf x;\sigma)=c_{skip}(\sigma) \mathbf x + c_{out}(\sigma) F_\theta(c_{in}(\sigma)\mathbf x; c_{noise}(\sigma)) Dθ(x;σ)=cskip(σ)x+cout(σ)Fθ(cin(σ)x;cnoise(σ))

在这里插入图片描述


  1. Score-Based Generative Modeling through Stochastic Differential Equations ↩︎ ↩︎

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件路径操作

避开-转义字符 python文件路径导致的错误常常与“\”有关,因为在路径中的“\”常会被误认为转义字符。 所以在上述路径中,\table\name\rain中的\t,\n,\r都易被识别为转义字符。 解决的办法主要由以下三种: #1 前面加r表示不转义 pathr&quo…

html资源提示符

前言&#xff1a;正常dom解析 中遇到script标签 &#xff0c;会暂停主线程 去下载js&#xff0c;拿到资源后&#xff0c;主线程再执行js。 那么主线程在等待网络线程下载这个空闲很浪费 解决方案&#xff1a; script标签增加属性 async defer 1.async <script src"./i…

巧妙实现防止按钮重复点击

在项目开发中&#xff0c;经常会有防重复点击的优化操作&#xff0c;我们可能会使用以下几种方式来实现&#xff1a; 控制按钮的 loading 参数在每个需要防止重复点击的按钮操作上&#xff0c;使用 throttle 函数封装一个公共的按钮组件&#xff0c;在需要的地方使用 通过css实…

[C++]:1.初识C++和C语言缺陷补充。

初识C和C语言缺陷补充 一.主要内容&#xff1a;二.具体内容&#xff1a;一&#xff1a; 作用域1.命名空间&#xff1a;2.函数声明和定义&#xff1a;3.不存在命名冲突的情况&#xff1a; 二.输入输出&#xff1a;1.基本输入输出&#xff1a;2.关于std的展开&#xff1a; 三.函数…

5+非肿瘤分析,分型+WGCNA+机器学习筛选相关基因

今天给同学们分享一篇非肿瘤分型机器学习WGCNA实验的生信文章“Identification of diagnostic markers related to oxidative stress and inflammatory response in diabetic kidney disease by machine learning algorithms: Evidence from human transcriptomic data and mou…

用Flask构建一个AI翻译服务

缘起 首先&#xff0c;看一段代码&#xff0c;只有几行Python语句却完成了AI翻译的功能。 #!/usr/bin/python3import sys from transformers import MarianMTModel, MarianTokenizerdef translate(word_list):model_name "Helsinki-NLP/opus-mt-en-zh"tokenizer …

Windows网络系统架构

在介绍Windows网络体系架构之前&#xff0c;我首先介绍一下Windows中的两个重要编程规范——TDI&#xff0c;NDIS.&#xff0c;然后再介绍网络体系的架构。TDI&#xff0c;Transport Driver Interface&#xff0c;传输驱动程序接口。/Windows/System32/Drivers/Tdi.sys。在实现…

root赋权

报错&#xff1a; GRANT ALL PRIVILEGES ON test.* TO ‘root’‘%’ WITH GRANT OPTION 解决方案 赋权 GRANT ALL PRIVILEGES ON *.* TO rootlocalhost WITH GRANT OPTION; FLUSH PRIVILEGES;2.创建用户&#xff0c;再赋权 CREATE USER root% IDENTIFIED BY password; GR…

数据迁移库工具-C版-01-HappySunshineV1.0-(支持Gbase8a)

一、测试环境信息 名称值CPUIntel(R) Core(TM) i5-1035G1 CPU 1.00GHz操作系统CentOS Linux release 7.9.2009 (Core)内存3G逻辑核数2Gbase8a版本8.6.2-R43.34.27468a27HappySunshine版本V1.0 二、支持功能 序号功能1GBASE8a到GBASE8a的库级数据迁移。2批量加载。&#xff…

搜索引擎站群霸屏排名源码系统+关键词排名 前后端完整的搭建教程

开发搜索引擎站群霸屏排名系统是一项重要的策略&#xff0c;通过在搜索引擎中获得多个高排名站点&#xff0c;可以大大提高企业的品牌知名度&#xff0c;从而吸引更多的潜在客户和消费者。而且当潜在客户在搜索结果中看到多个与您的品牌相关的站点时&#xff0c;他们可能会认为…

Thread常用API

setname方法每个线程取名 需要创建构造器 线程设置名字 package Thread_api_test;// 继承Thread类 public class MyThread extends Thread {//创建构造器 线程设置名字public MyThread(String name){super(name);}Overridepublic void run() {super.run();Thread mThread.cur…

css 左右滚轮无缝衔接

最近的项目有做到一个功能 类似跑马灯或者公告栏那种 有文字 也有列表的 所以 写了两种 第一种公告栏文字是用的js 第二种图文类型是用的css 两种方法 记录一下 第一种 纯文字滚动 其实也是根据js去计算dom的宽度 通过js去给css赋值 <div class"div1"><div …

计网面试复习自用

五层&#xff1a; 应用层&#xff1a;应用层是最高层&#xff0c;负责为用户提供网络服务和应用程序。在应用层&#xff0c;用户应用程序与网络进行交互&#xff0c;发送和接收数据。典型的应用层协议包括HTTP&#xff08;用于网页浏览&#xff09;、SMTP&#xff08;用于电子邮…

【MySQL】事务四大特性ACID、并发事务问题、事务隔离级别

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 MySQL 一、事务四大特性ACID1.1 原子性1.2 …

nodejs使用nginx负载均衡策略有哪些?

负载均衡是一种优化资源使用、最大化吞吐量、最小化响应时间、并避免任何单个资源过载的技术。负载均衡通常由专用的软件或硬件&#xff08;如负载均衡器&#xff09;来实现。在本文中&#xff0c;我们将主要讨论软件负载均衡&#xff0c;尤其是使用Nginx。 负载均衡策略 以下…

车辆车型识别系统python+TensorFlow+Django网页界面+算法模型

一、介绍 车辆车型识别系统。本系统使用Python作为主要开发编程语言&#xff0c;通过TensorFlow搭建算法模型网络对收集到的多种车辆车型图片数据集进行训练&#xff0c;最后得到一个识别精度较高的模型文件。并基于该模型搭建Django框架的WEB网页端可视化操作界面。实现用户上…

SQL语句常见分类

SQL是Structured Query Language&#xff08;结构化查询语言&#xff09;的简写。 Structured发音 SQL 是关系型数据库管理系统的标准语言&#xff0c;如Oracle、MySQL、Microsoft SQL Server。 DDL DDL是Data Definition Language&#xff08;数据定义语言&#xff09;的简…

【LeetCode刷题(数据结构与算法)】:二叉树之左叶子之和

给定二叉树的根节点 root &#xff0c;返回所有左叶子之和 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中&#xff0c;有两个左叶子&#xff0c;分别是 9 和 15&#xff0c;所以返回 24 示例 2: 输入: root [1] 输出: 0 这都题目用递归的方法就可以解决…

『C++之STL』双端队列 - deque

前言 双端队列,Double-ended queue,简称为deque是一种线性结构的一种容器; 在数据结构中出现的顺序表与链表,或者栈与队列都算是线性结构; 在结构中,它与vector相比较会相似一些; 但是在实际当中,双端队列 - deque 包含了vector与list的优点; vector(顺序表) 支持随机访问,空…