Diffusion Models

DDPM

x 0 ∼ q ( x 0 ) x_0 \sim q(x_0) x0q(x0)是真实数据分布,扩散模型学习一个分布 p θ ( x 0 ) p_\theta(x_0) pθ(x0)去逼近真实数据分布。
p θ ( x 0 ) : = ∫ p θ ( x 0 : T ) d x 1 : T (1) p_\theta(x_0) := \int p_\theta(x_{0:T})dx_{1:T} \tag{1} pθ(x0):=pθ(x0:T)dx1:T(1)
x 1 , . . . , x T x_1,...,x_T x1,...,xT是和数据 x 0 ∼ q ( x 0 ) x_0 \sim q(x_0) x0q(x0)相同维度的隐变量。联合概率分布 p θ ( x 0 : T ) p_\theta(x_{0:T}) pθ(x0:T)称为reverse process,逆过程,去噪过程。被定义为从 p ( x T ) = N ( x T ; 0 , I ) p(x_T)=N(x_T;\bold0,\bold I) p(xT)=N(xT;0,I)开始的马尔可夫链,转移矩阵为高斯分布。
p θ ( x 0 : T ) : = p ( x T ) ∏ t = 1 T p θ ( x t − 1 ∣ x t ) (2) p_\theta(x_{0:T}) :=p(x_T)\prod_{t=1}^T p_\theta(x_{t-1}|x_t) \tag{2} pθ(x0:T):=p(xT)t=1Tpθ(xt1xt)(2)
p θ ( x t − 1 ∣ x t ) : = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) (3) p_\theta(x_{t-1}|x_t) :=N(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t)) \tag{3} pθ(xt1xt):=N(xt1;μθ(xt,t),Σθ(xt,t))(3)
均值和方差是 x t , t x_t, t xt,t的函数,标准高斯分布有了均值和方差,就可以从 x t x_t xt中采样出 x t − 1 x_{t-1} xt1
diffusion模型不同于其他隐变量模型的地方在于,近似后验分布 q ( x 1 : T ∣ x 0 ) q(x_{1:T}|x_0) q(x1:Tx0),一般也被称为前向过程或者diffusion过程,是一个马尔可夫链。可以根据方差调度值 β 1 , . . . , β T \beta_1,..., \beta_T β1,...,βT逐步对数据 x 0 x_0 x0加噪声。
q ( x 1 : T ∣ x 0 ) : = ∏ t = 1 T q ( x t ∣ x t − 1 ) (4) q(x_{1:T}|x_0) := \prod_{t=1}^Tq(x_t|x_{t-1}) \tag{4} q(x1:Tx0):=t=1Tq(xtxt1)(4)
q ( x t ∣ x t − 1 ) : = N ( x t ; , 1 − β t x t − 1 , β t I ) (5) q(x_t|x_{t-1}) := N(x_t;, \sqrt{1-\beta_t}x_{t-1}, \beta_t\bold I) \tag{5} q(xtxt1):=N(xt;,1βt xt1,βtI)(5)
我们定义:
a t : = 1 − β t , a ˉ t : = ∏ s = 1 t α s (6) a_t := 1 - \beta_t, \quad \bar{a}_t := \prod_{s=1}^{t} \alpha_s \tag{6} at:=1βt,aˉt:=s=1tαs(6)
x t = α t x t − 1 + 1 − α t ϵ t , ϵ t ∼ N ( 0 , I ) (7) x_t = \sqrt{\alpha_t}x_{t-1} + \sqrt{1-\alpha_t}\epsilon_t, \quad \epsilon_t \sim N(\bold0, \bold I) \tag{7} xt=αt xt1+1αt ϵt,ϵtN(0,I)(7)
x t − 1 = α t − 1 x t − 2 + 1 − α t − 1 ϵ t − 1 , ϵ t − 1 ∼ N ( 0 , I ) (8) x_{t-1} = \sqrt{\alpha_{t-1}}x_{t-2} + \sqrt{1-\alpha_{t-1}}\epsilon_{t-1}, \quad \epsilon_{t-1} \sim N(\bold0, \bold I) \tag{8} xt1=αt1 xt2+1αt1 ϵt1,ϵt1N(0,I)(8)

x t = α t ( α t − 1 x t − 2 + 1 − α t − 1 ϵ t − 1 ) + 1 − α t ϵ t = α t α t − 1 x t − 2 + α t − α t α t − 1 ϵ t − 1 + 1 − α t ϵ t = N ( x t ; α t α t − 1 x t − 2 , 1 − α t α t − 1 I ) = α t α t − 1 x t − 2 + 1 − α t α t − 1 ϵ ~ t . . . . . . = N ( x t ; α ˉ t x 0 , 1 − α ˉ t I ) (9) \begin{aligned} x_t &= \sqrt{\alpha_t}(\sqrt{\alpha_{t-1}}x_{t-2} + \sqrt{1-\alpha_{t-1}}\epsilon_{t-1}) + \sqrt{1-\alpha_t}\epsilon_t \\ &= \sqrt{\alpha_t\alpha_{t-1}}x_{t-2} + \sqrt{\alpha_t - \alpha_t\alpha_{t-1}}\epsilon_{t-1} + \sqrt{1-\alpha_t}\epsilon_t \\ &=N(x_t; \sqrt{\alpha_t\alpha_{t-1}}x_{t-2}, \sqrt{1-\alpha_t\alpha_{t-1}}\bold I) \\ &=\sqrt{\alpha_t\alpha_{t-1}}x_{t-2} + \sqrt{1-\alpha_t\alpha_{t-1}}\tilde{\epsilon}_t \\ & ...... \\ &= N(x_t; \sqrt{\bar{\alpha}_t}x_0, \sqrt{1 - \bar{\alpha}_t} \bold I) \tag{9} \end{aligned} xt=αt (αt1 xt2+1αt1 ϵt1)+1αt ϵt=αtαt1 xt2+αtαtαt1 ϵt1+1αt ϵt=N(xt;αtαt1 xt2,1αtαt1 I)=αtαt1 xt2+1αtαt1 ϵ~t......=N(xt;αˉt x0,1αˉt I)(9)
这个性质很重要,意味着可以不需要迭代过程,直接获得任意时间t的加噪数据。正常来说T都比较大,DDPM设为1000, a t = 1 − β t ∈ [ 0 , 1 ] a_t = 1 - \beta_t \in [0, 1] at=1βt[0,1], 根据极限可知,随着t越来越大,最终加噪后的数据分布趋近于各向同性的标准高斯分布。也为reverse process从一个标准高斯分布采样开始逐步去噪得到最终sample的过程,两相契合。

forward process是加噪过程,也是训练过程,从数据集中采样 x 0 ∼ q ( x 0 ) x_0 \sim q(x_0) x0q(x0),随机选取timestep t, 根据式(9)得到 x t x_t xt, x t x_t xt t t t做为网络输入,估算后验分布 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t, x_0) q(xt1xt,x0),假设后验分布为高斯分布,则估算的就是高斯分布的均值和方差,式(11)和(12)就是网络学习时,均值和方差的gt。DDPM这篇工作假设方差是预定义好的,不需要网络学习。只需要学习均值即可。
q ( x t − 1 ∣ x t , x 0 ) = N ( x t − 1 ; μ ~ t ( x t , x 0 ) , β t ~ I ) (10) q(x_{t-1}|x_t, x_0) = N(x_{t-1}; \tilde{\mu}_t(x_t, x_0), \tilde{\beta_t}\bold I) \tag{10} q(xt1xt,x0)=N(xt1;μ~t(xt,x0),βt~I)(10)
where
μ ~ t ( x t , x 0 ) : = α ˉ t − 1 β t 1 − α ˉ t x 0 + α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t (11) \tilde{\mu}_t(x_t, x_0) :=\frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1-\bar{\alpha}_t}x_0 + \frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})} {1-\bar{\alpha}_t} x_t \tag{11} μ~t(xt,x0):=1αˉtαˉt1 βtx0+1αˉtαt (1αˉt1)xt(11)
and
β ~ t : = 1 − α ˉ t − 1 1 − α ˉ t β t (12) \tilde{\beta}_t := \frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t} \beta_t \tag{12} β~t:=1αˉt1αˉt1βt(12)
(这个地方有空再来推导吧)

网络收敛后,就可以从 x T ∼ N ( 0 , I ) x_T\sim N(\bold 0, \bold I) xTN(0,I)采样开始。逐步去噪,得到最终的样本。
网络学习和输出的是t时刻的噪声。根据下式得到均值:
μ θ ( x t , t ) = 1 α t ( x t − β t 1 − α ˉ t ϵ θ ( x t , t ) ) \mu_\theta(x_t, t) = \frac{1}{\sqrt{\alpha}_t}(x_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_\theta(x_t, t)) μθ(xt,t)=α t1(xt1αˉt βtϵθ(xt,t))
采样 x t − 1 ∼ p θ ( x t − 1 ∣ x t ) x_{t-1}\sim p_\theta(x_{t-1}|x_t) xt1pθ(xt1xt)可以通过 x t − 1 = μ θ ( x t , t ) + σ z x_{t-1}=\mu_\theta(x_t, t) + \sigma z xt1=μθ(xt,t)+σz得到, z ∼ N ( 0 , I ) z\sim N(\bold 0, \bold I) zN(0,I)

在这里插入图片描述
DDPM的优点就不说了,缺点主要有两个,推理过程步长太长,过于耗时。 β \beta β的设计导致加噪到T时刻,信噪比SNR不为0,加噪对原始数据分布破坏的不彻底,得到的不是真实的高斯分布噪声,原始数据分布中的一些低频信息泄露,导致文生图任务中,即便强prompt引导,生成的图片亮度也是围绕到0周围,无法产生过亮或者过暗的图片。

DDIM

解决DDPM的步长问题。

Progressive Distillation

进一步解决DDPM的步长问题。

Zero SNR

解决常规 β \beta β调度策略无法产生zero SNR的问题。

SD

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

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

相关文章

el-tree获取当前选中节点及其所有父节点的id(包含半选中父节点的id)

如下图,我们现在全勾中的有表格管理及其下的子级,而半勾中的有工作台和任务管理及其子级 现在点击保存按钮后,需要将勾中的节点id及该节点对应的父节点,祖先节点的id(包含半选中父节点的id)也都一并传给后端,那这个例子里就应该共传入9个id,我们可以直接将getCheckedK…

Linux shell编程学习笔记40:stat命令

程序员必备的面试技巧 “程序员必备的面试技巧,就像是编写一段完美的代码一样重要。在面试战场上,我们需要像忍者一样灵活,像侦探一样聪明,还要像无敌铁金刚一样坚定。只有掌握了这些技巧,我们才能在面试的舞台上闪耀…

深度学习(1)--基础概念

一.计算机视觉(CV) (1).计算机视觉中图像表示为三位数组,其中三维数组中像素的值为0~255,像素的值越低表示该点越暗,像素的值越高表示该点越亮。 (2).图像表示 A*B*C,其中A,B分别为图像的长和宽,C则表示图像的颜色通道…

PBR材质纹理下载

03:10 按照视频里的顺序 我们从第6个网站开始倒数 点击本行文字或下方链接 进入查看 6大网站地址 网址查看链接: http://www.uzing.net/community_show-1962-48-48-35.html 06 Tectures Wood Fence 001 | 3D TEXTURES 简介:最大的纹理网站之一&#x…

【前后端的那些事】15min快速实现图片上传,预览功能(ElementPlus+Springboot)

文章目录 Element Plus SpringBoot实现图片上传,预览,删除效果展示 1. 后端代码1.1 controller1.2 service 2. 前端代码2.1 路由创建2.2 api接口2.2 文件创建 3. 前端上传组件封装 前言:最近写项目,发现了一些很有意思的功能&…

Maven《二》-- Maven的安装与配置(亲测成功版)

目录 🐶2.1 Maven的安装条件 🐶2.2 Maven安装步骤 1. 检查本地%JAVA_HOME% 2. 解压maven 3. 配置maven的环境变量 4. 校验maven是否配置成功 5. 配置本地仓库 🐶2.3 Idea配置本地Maven软件 🐶2.1 Maven的安装条件 各个工具…

three.js 缓动算法.easing(渐入相机动画)

效果&#xff1a;淡入&#xff0c;靠近物体 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div c…

基于网络爬虫的天气数据分析

二、网络爬虫设计 网络爬虫原理 网络爬虫是一种自动化程序&#xff0c;用于从互联网上获取数据。其工作原理可以分为以下几个步骤&#xff1a; 定义起始点&#xff1a;网络爬虫首先需要定义一个或多个起始点&#xff08;URL&#xff09;&#xff0c;从这些起始点开始抓取数据…

Spring | Spring中的Bean--下

Spring中的Bean: 4.Bean的生命周期5.Bean的配装配式 ( 添加Bean到IOC容器的方式 依赖注入的方式 )5.1 基于XML的配置5.2 基于Annotation (注解) 的装配 (更常用&#xff09;5.3 自动装配 4.Bean的生命周期 Spring容器可以管理 singleton作用域的Bean的生命周期&#xff0c;在此…

DBA技术栈(三):MySQL 性能影响因素

文章目录 前言一、影响MySQL性能的因素1.1 商业上的需求1.2 应用架构规划1.3 查询语句使用方式1.4 Schema的设计1.5 硬件环境 总结 前言 大部分人都一致认为一个数据库应用系统&#xff08;这里的数据库应用系统概指所有使用数据库的系统&#xff09;的性能瓶颈最容易出现在数…

Go 中 slice 的 In 功能实现探索

文章目录 遍历二分查找map key性能总结 之前在知乎看到一个问题&#xff1a;为什么 Golang 没有像 Python 中 in 一样的功能&#xff1f;于是&#xff0c;搜了下这个问题&#xff0c;发现还是有不少人有这样的疑问。 补充&#xff1a;本文写于 2019 年。GO 现在已经支持泛型&am…

TDengine 企业级功能:存储引擎对多表低频场景优化工作分享

在去年 8 月份发布的 3.1.0.0 版本中&#xff0c;TDengine 进行了一系列重要的企业级功能更新&#xff0c;其中包括对多表低频场景写入性能的大幅优化。这一优化工作为有此需求的用户提供了更大的便捷性和易用性。在本文中&#xff0c;TDengine 的资深研发将对此次优化工作进行…