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.mzph.cn/news/632925.shtml

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

相关文章

chatgpt的实用技巧四temperature 格式

四、temperature 格式 GPT3.5 temperature 的范围为:0-0.7; GPT4.0 temperature 的范围为:0-1; 当 temperature 为 0 时候,结果可稳定。 当 temperature 为 0.7/1 时候,结果发散具备创力。 数值越大&a…

设计模式的学习笔记

设计模式的学习笔记 一. 设计模式相关内容介绍 1 设计模式概述 1.1 软件设计模式的产生背景 设计模式最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977 年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任 Christopher Alexander 在…

【Redis数据类型】String实现及应用场景

文章目录 String1、介绍2、内部实现整数值embstr 编码字符串raw编码字符串 3、常用命令4、应用场景缓存对象常规计数分布式锁共享session信息 参考:小林Coding Redis九种数据类型 Redis 提供了丰富的数据类型,常见的有五种:String&#xff08…

Debian 10.13.0 安装图解

引导和开始安装 这里直接回车确认即可,选择图形化安装方式。 选择语言 这里要区分一下,当前选中的语言作为安装过程中安装器所使用的语言,这里我们选择中文简体。不过细心的同学可能发现,当你选择安装器语言之后,后续安…

电力能源三维可视化合集 | 图扑数字孪生

电力能源是现代社会发展和运行的基石,渗透于工业、商业、农业、家庭生活等方方面面,它为经济、生活质量、环境保护和社会发展提供了巨大的机会和潜力。图扑软件应用自研 HT for Web 强大的渲染引擎,助力现代化的电力能源数字孪生场景&#xf…

运筹说 第95期 | 非线性规划奠基人——库恩与塔克

经过之前的学习,相信大家已经对运筹学的网络计划的内容有了一定的了解,接下来小编将带你学习新一章——非线性规划的内容,让我们先来了解一下非线性规划的诞生和发展历程,然后共同走近非线性规划领域的代表人物——库恩和塔克&…

2.控制语句

1.分支语句/判断语句 if 语句 if(boolean_expression) { /* 如果布尔表达式为真将执行的语句 */ } if…else 语句 if(boolean_expression) { /* 如果布尔表达式为真将执行的语句 / } else { / 如果布尔表达式为假将执行的语句 */ } if…else if…else语句 if(boolean_expressi…

【BERT】详解

BERT 简介 BERT 是谷歌在 2018 年时提出的一种基于 Transformer 的双向编码器的表示学习模型,它在多个 NLP 任务上刷新了记录。它利用了大量的无标注文本进行预训练,预训练任务有掩码语言模型和下一句预测,掩码语言模型指的是随机地替换文本中…

Python基础学习:同步异步阻塞与非阻塞

嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 一、状态介绍 在了解其他概念之前,我们首先要了解进程的几个状态。 在程序运行的过程中,由于被操作系统的调度算法控制,程序…

k8s---pod控制器

pod控制器发的概念: 工作负载,workload用于管理pod的中间层,确保pod资源符合预期的状态。 预期状态: 1、副本数 2、容器重启策略 3、镜像拉取策略 pod出故障的出去等等 pod控制器的类型: 1、replicaset&#xf…

可达性分析

可达性分析 这个算法的基本思路就是通过 一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过 程所走过的路径称为“引用链”(Reference Chain),如果某个对象到GC …

力扣22. 括号生成

回溯 思路&#xff1a; 定义函数 dfs(item, open, close, n) 表示当前 item 有左括号个数 open 和右括号个数 close &#xff1b;使用递归&#xff0c;长度为 n 的序列就是在长度为 n - 1 的序列后加左括号或者右括号&#xff1a; 先放左括号&#xff0c;只要其个数 < n&am…

SSL证书自动化管理有什么好处?如何实现SSL证书自动化?

SSL证书是用于加密网站与用户之间传输数据的关键元素&#xff0c;在维护网络安全方面&#xff0c;管理SSL证书与部署SSL证书一样重要。定期更新、监测和更换SSL证书&#xff0c;可以确保网站的安全性和合规性。而自动化管理可以为此节省时间&#xff0c;并避免人为错误和不必要…

微信原生小程序上传与识别以及监听多个checkbox事件打开pdf

1.点击上传并识别 组件样式<van-field border"{{ false }}" placeholder"请输入银行卡卡号" model:value"{{bankNo}}" label"卡号"><van-icon bindtap"handleChooseImg" slot"right-icon" name"sca…

IDEA中启动项目报堆内存溢出或者没有足够内存的错误

1.报错现象 java.lang.OutOfMemoryError: Java heap space 或者 Could not reserve enough space for object heap 2.解决办法 在运行配置中VM选项后加下面的配置&#xff1a; -server -XX:MaxHeapSize256m -Xms512m -Xmx512m -XX:PermSize128M -XX:MaxPermSize256m 3.JVM虚…

单表查询练习

目录 题目&#xff1a; 制定约束&#xff1a; 添加表格信息&#xff1a; 所需查询的信息&#xff1a; 实验步骤&#xff1a; 第一步&#xff1a;制作表格 创建新的数据库 创建表格约束&#xff1a; 为表格加入数据&#xff1a; 第二步&#xff1a;查询信息 题目&…

Red Hat Enterprise Linux 7.9 安装图解

引导和开始安装 选择倒计时结束前&#xff0c;通过键盘上下键选择下图框选项&#xff0c;启动图形化安装过程。 安装语言选择 这里要区分一下&#xff0c;当前选中的语言作为安装过程中安装器所使用的语言&#xff0c;这里我们选择中文简体。不过细心的同学可能发现&#xff0c…

OpenGL ES之深入解析如何绘制“跳动的心“特效

最近在浏览技术网站时,偶然间发现如下这个"跳动的心"特效,觉得蛮好玩的,当得知这个特效是用纯代码实现(GLSL 实现)的,确实又被惊到:追溯该特效最初的来源,最终在 ShaderToy 网站看到它的原始实现,另外在 ShaderToy 上还发现了无数类似惊人的特效,并且这些特…

JVM:性能监控工具分析和线上问题排查实践

前言 在日常开发过程中&#xff0c;多少都会碰到一些jvm相关的问题&#xff0c;比如&#xff1a;内存溢出、内存泄漏、cpu利用率飙升到100%、线程死锁、应用异常宕机等。 在这个日益内卷的环境&#xff0c;如何运用好工具分析jvm问题&#xff0c;成为每个java攻城狮必备的技能…

小程序进阶学习(视频完结)(核心,重点)

首先上面是一个视频播放器 把视频的宽度设置为100%即可铺满全屏 然后视频的标题和作者 最后就是一个视频播放列表 &#xff0c;设置一个固定位置开始滚动即可 还有一个问题没有解决&#xff0c;大家出出主意。 在播放页面在点击一个新的视频去播放&#xff0c;点进去的新视频获…