当前位置: 首页 > news >正文

Diffusion 公式推导 2

Diffusion 公式推导 中对 DDPM 进行了推导,本文接着对 DDIM 进行推导。

目录

  • 六. 模型改进

六. 模型改进

从扩散模型的推理过程不难看出,DDPM 有一个致命缺点 —— 推理速度过慢,因为逆扩散是从 x T x_{T} xT x 0 x_{0} x0 的完整过程,无法跳过中间的迭代过程。为了加快推理过程,DDIM (Denoising Diffusion Implicit Models) 对 DDPM 进行了改进,采用的是一个非马尔科夫过程,使得生成过程可以在更少的时间步内完成。

从原理角度来看 1,DDIM 假设 q ( x t − 1 ∣ x 0 , x t ) q (x_{t-1} \mid x_0, x_t) q(xt1x0,xt) 是一个高斯分布,对其进行待定系数:
q ( x t − 1 ∣ x 0 , x t ) ∼ N ( k x 0 + m x t , σ 2 ) (21) q (x_{t-1} \mid x_0, x_t) \sim \mathcal{N}\left(kx_0+mx_t, \sigma^2\right) \tag{21} q(xt1x0,xt)N(kx0+mxt,σ2)(21)

因此有:
x t − 1 = k x 0 + m x t + σ ϵ 其中  ϵ ∼ N ( 0 , I ) (22) x_{t-1} = kx_0+mx_t + \sigma \epsilon \quad \text{ 其中 } \epsilon \sim \mathcal{N}(0, \bold I) \tag{22} xt1=kx0+mxt+σϵ 其中 ϵN(0,I)(22)

将(7)式代入,得到:
x t − 1 = k x 0 + m x t + σ ϵ = k x 0 + m ( α ‾ t x 0 + 1 − α ‾ t ϵ ‾ 0 ) + σ ϵ = ( k + m α ‾ t ) x 0 + m 1 − α ‾ t ϵ ‾ 0 + σ ϵ = ( k + m α ‾ t ) x 0 + ϵ ′ (23) \begin{aligned} x_{t-1} & = kx_0+mx_t + \sigma \epsilon\\ & = kx_0+m(\sqrt{\overline{\alpha}_t} x_{0} + \sqrt{1-\overline{\alpha}_t} \overline \epsilon_{0}) + \sigma \epsilon\\ & = (k+m\sqrt{\overline{\alpha}_t})x_0 + m\sqrt{1-\overline{\alpha}_t} \overline \epsilon_{0} + \sigma \epsilon\\ & = (k+m\sqrt{\overline{\alpha}_t})x_0 + \epsilon' \end{aligned} \tag{23} xt1=kx0+mxt+σϵ=kx0+m(αt x0+1αt ϵ0)+σϵ=(k+mαt )x0+m1αt ϵ0+σϵ=(k+mαt )x0+ϵ(23)

其中, m 1 − α ‾ t ϵ ‾ 0 + σ ϵ m\sqrt{1-\overline{\alpha}_t} \overline \epsilon_{0} + \sigma \epsilon m1αt ϵ0+σϵ 可以合并成 ϵ ′ \epsilon' ϵ 是因为高斯分布的可加性,因此有 ϵ ′ ∼ N ( 0 , m 2 ( 1 − α ‾ t ) + σ 2 ) \epsilon' \sim \mathcal{N}(0, m^2(1-\overline{\alpha}_t) + \sigma^2) ϵN(0,m2(1αt)+σ2)

将(7)式变换成 x t − 1 x_{t-1} xt1 的形式,然后和(23)式联立:

x t − 1 = α ‾ t − 1 x 0 + 1 − α ‾ t − 1 ϵ ‾ 0 x t − 1 = ( k + m α ‾ t ) x 0 + ϵ ′ \begin{aligned} x_{t-1} &= \sqrt{\overline{\alpha}_{t-1}} x_{0} + \sqrt{1-\overline{\alpha}_{t-1}} \overline \epsilon_{0}\\ x_{t-1} &= (k+m\sqrt{\overline{\alpha}_t})x_0 + \epsilon' \end{aligned} xt1xt1=αt1 x0+1αt1 ϵ0=(k+mαt )x0+ϵ

对应项系数相等得到:
α ‾ t − 1 = k + m α ‾ t 1 − α ‾ t − 1 = m 2 ( 1 − α ‾ t ) + σ 2 (24) \begin{aligned} \sqrt{\overline{\alpha}_{t-1}} &= k+m\sqrt{\overline{\alpha}_t}\\ 1-\overline{\alpha}_{t-1} &= m^2(1-\overline{\alpha}_t) + \sigma^2 \end{aligned} \tag{24} αt1 1αt1=k+mαt =m2(1αt)+σ2(24)

因此有:
m = 1 − α ‾ t − 1 − σ 2 1 − α ‾ t k = α ‾ t − 1 − 1 − α ‾ t − 1 − σ 2 1 − α ‾ t α ‾ t (25) \begin{aligned} m &= \sqrt{\frac{1-\overline{\alpha}_{t-1} - \sigma^2}{1-\overline{\alpha}_t}}\\ k &= \sqrt{\overline{\alpha}_{t-1}} - \sqrt{\frac{1-\overline{\alpha}_{t-1} - \sigma^2}{1-\overline{\alpha}_t}} \sqrt{\overline{\alpha}_t}\\ \end{aligned} \tag{25} mk=1αt1αt1σ2 =αt1 1αt1αt1σ2 αt (25)

和 DDPM 逆扩散过程一样,代入(7)式将 x 0 x_0 x0 替换成 x t x_t xt 表示,再将(25)式代入(22)式,得到:
x t − 1 = k x 0 + m x t + σ ϵ = ( α ‾ t − 1 − 1 − α ‾ t − 1 − σ 2 1 − α ‾ t α ‾ t ) ( x t − 1 − α ‾ t ϵ ‾ 0 α ‾ t ) + 1 − α ‾ t − 1 − σ 2 1 − α ‾ t x t + σ ϵ = α ‾ t − 1 α ‾ t x t + ( 1 − α ‾ t − 1 − σ 2 − α ‾ t − 1 ( 1 − α ‾ t ) α ‾ t ) ϵ ‾ 0 + σ ϵ = 1 α t x t + ( 1 − α ‾ t − 1 − σ 2 − 1 − α ‾ t α t ) ϵ ‾ 0 + σ ϵ (26) \begin{aligned} x_{t-1} &= kx_0+mx_t + \sigma \epsilon\\ &= (\sqrt{\overline{\alpha}_{t-1}} - \sqrt{\frac{1-\overline{\alpha}_{t-1} - \sigma^2}{1-\overline{\alpha}_t}} \sqrt{\overline{\alpha}_t})(\frac{x_t - \sqrt{1-\overline{\alpha}_t} \overline \epsilon_{0}}{\sqrt{\overline{\alpha}_t}}) + \sqrt{\frac{1-\overline{\alpha}_{t-1} - \sigma^2}{1-\overline{\alpha}_t}}x_t + \sigma \epsilon\\ &= \sqrt{\frac{\overline{\alpha}_{t-1}}{\overline{\alpha}_t}}x_t + (\sqrt{1-\overline{\alpha}_{t-1} - \sigma^2}-\sqrt{\frac{\overline{\alpha}_{t-1}(1-\overline{\alpha}_t)}{\overline{\alpha}_t}}) \overline \epsilon_{0} + \sigma \epsilon\\ &= \frac{1}{\sqrt{\alpha_t}}x_t + \left(\sqrt{1-\overline{\alpha}_{t-1} - \sigma^2}-\sqrt{\frac{1-\overline{\alpha}_t}{\alpha_t}}\right) \overline \epsilon_{0} + \sigma \epsilon\\ \end{aligned} \tag{26} xt1=kx0+mxt+σϵ=(αt1 1αt1αt1σ2 αt )(αt xt1αt ϵ0)+1αt1αt1σ2 xt+σϵ=αtαt1 xt+(1αt1σ2 αtαt1(1αt) )ϵ0+σϵ=αt 1xt+(1αt1σ2 αt1αt )ϵ0+σϵ(26)

ϵ ‾ 0 \overline \epsilon_{0} ϵ0 通过 U-Net 进行预测,其他都是已知参数。网上的教程都是推导到(26)式处就说不是马尔科夫假设,所以不需要严格遵守 x t → x t − 1 x_{t} \rightarrow x_{t-1} xtxt1 2 3。也有从相隔多个迭代步数采样向前推的,参见 一个视频看懂DDIM凭什么加速采样|扩散模型相关。

\  


\  

总之,DDIM 推理时可以隔多步进行采样,通过一个确定性映射直接将噪声转换为数据,避免了 DDPM 中的随机性,在减少生成时间步的同时,保持生成图像的高质量。推理过程中的确定性映射表示如下:
x τ i − 1 = α ˉ τ i − 1 ( x τ i − 1 − α ˉ τ i ϵ θ ( x τ i , τ i ) α ˉ τ i ) + 1 − α ˉ τ i − 1 − σ τ i 2 ϵ θ ( x τ i , τ i ) \mathbf{x}_{\tau_{i-1}} = \sqrt{\bar{\alpha}_{\tau_{i-1}}} \left( \frac{\mathbf{x}_{\tau_i} - \sqrt{1 - \bar{\alpha}_{\tau_i}} \epsilon_\theta(\mathbf{x}_{\tau_i}, \tau_i)}{\sqrt{\bar{\alpha}_{\tau_i}}} \right) + \sqrt{1 - \bar{\alpha}_{\tau_{i-1}} - \sigma_{\tau_i}^2} \epsilon_\theta(\mathbf{x}_{\tau_i}, \tau_i) xτi1=αˉτi1 (αˉτi xτi1αˉτi ϵθ(xτi,τi))+1αˉτi1στi2 ϵθ(xτi,τi)

其中 τ = { τ 1 , τ 2 , . . . , τ N } \tau = \{ \tau_1, \tau_2, ..., \tau_N \} τ={τ1,τ2,...,τN} 是时间步长序列。通过这个机制,DDIM 可以在生成过程中跳过多个步骤。

https://zhuanlan.zhihu.com/p/675510886


  1. 一文带你看懂DDPM和DDIM(含原理简易推导,pytorch代码) ↩︎

  2. DDPM与DDIM简洁版总结 ↩︎

  3. DDPM和DDIM公式推导。(精简版) ↩︎

相关文章:

Diffusion 公式推导 2

Diffusion 公式推导 中对 DDPM 进行了推导,本文接着对 DDIM 进行推导。 目录 六. 模型改进 六. 模型改进 从扩散模型的推理过程不难看出,DDPM 有一个致命缺点 —— 推理速度过慢,因为逆扩散是从 x T x_{T} xT​ 到 x 0 x_{0} x0​ 的完整过…...

layui-表单(输入框)

1.基本使用方法 先写一个表单元素块 form 加上layui-form 里面写行区块结构,如下: 2.输入框样式选项 input框 placeholder默认文本 autocomplete自动填充 lay-verify required必填 3.下拉菜单样式选项 默认选择第一项 select框 disable禁…...

中职网络安全B模块渗透测试server2380

使用nmap扫描添加参数-sV Flag:2.4.38 添加参数-A不然扫不全 (这两题可以直接加-sV -A) Flag: 4.3.11-Ubuntu 根据nmap扫描发现系统为ubuntu系统,ubuntu操作系统在某些版本中默认包含一个名为"ubuntu"的用户帐户。这是为了方…...

微信小程序毕业设计-教育培训系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…...

【面试题】正向代理和反向代理的区别?

正向代理(Forward Proxy)和反向代理(Reverse Proxy)是两种常见的代理服务器类型,它们在网络通信中扮演着不同的角色,具有不同的功能和应用场景。 一、正向代理 1. 定义与位置 正向代理是位于客户端和目标…...

Python面试宝典第8题:二叉树遍历

题目 给定一棵二叉树的根节点 root ,返回它节点值的前序遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3] 示例 2: 输入:root [] 输出:[] 示例 3: 输入:root […...

FastReport 指定sql 和修改 数据库连接地址的 工具类 :FastReportHelper

FastReport 指定sql 和修改 数据库连接地址的 工具类 :FastReportHelper 介绍核心代码:完整代码: 介绍 在FastReport中,经常会遇到需要给 sql 加条件的情况,或者给数据库地址做更换。 (废话不多说&#x…...

C++11中重要的新特性 Part one

序言 C11 是 C 编程语言的一个重要版本,于 2011 年由国际标准化组织 (ISO) 和国际电工委员会 (IEC) 旗下的 C 标准委员会 (ISO/IEC JTC1/SC22/WG21) 正式公布,并于同年 9 月出版。其正式名称为 ISO/IEC 14882:2011 - Information technology – Programm…...

VB 关键字

VB 关键字 Visual Basic(VB)是一种由微软开发的高级编程语言,广泛用于开发Windows桌面应用程序。在VB编程中,关键字是语言预定义的单词,具有特定的含义和用途。这些关键字不能被用作变量名或函数名,因为它们已经被编程语言赋予了特定的功能。 本文将详细介绍VB中的关键…...

Linux——多线程(四)

前言 这是之前基于阻塞队列的生产消费模型中Enqueue的代码 void Enqueue(const T &in) // 生产者用的接口{pthread_mutex_lock(&_mutex);while(IsFull())//判断队列是否已经满了{pthread_cond_wait(&_product_cond, &_mutex); //满的时候就在此情况下等待// 1.…...

InetAddress.getLocalHost().getHostAddress()阻塞导致整个微服务崩溃

InetAddress.getLocalHost().getHostAddress()阻塞导致整个微服务崩溃 import java.net.InetAddress;public class GetHostIp {public static void main(String[] args) {try {long start System.currentTimeMillis();String ipAddress InetAddress.getLocalHost().getHostA…...

在 Qt6 中,QList 和 QVector 统一 成qlist了吗?

是的,在 Qt6 中,QList 和 QVector 已经被统一了。具体来说,QList 现在基本上就是 QVector 的一个别名。这一改变意味着 QList 和 QVector 具有相同的性能和行为特性。 在 Qt5 中,QList 有自己的内部实现,对小型对象&a…...

第三期书生大模型实战营 第1关 Linux 基础知识

第三期书生大模型实战营 第1关 Linux 基础知识 第三期书生大模型实战营 第1关 Linux 基础知识InternStudio开发机创建SSH密钥配置通过本地客户端连接远程服务器通过本地VSCode连接远程服务器运行一个Python程序总结 第三期书生大模型实战营 第1关 Linux 基础知识 Hello大家好&a…...

架构设计(1)分布式架构

分布式架构 分布式架构是一种将系统中的不同组件分布在多台计算机或节点上,通过网络进行通信和协作,以实现系统功能的架构设计。分布式架构通常用于构建大型、复杂的软件系统,具有高可伸缩性、高可用性和高性能等优点。下面是关于分布式架构…...

机器学习笔记:初始化0的问题

1 前言 假设我们有这样的两个模型: 第一个是逻辑回归 第二个是神经网络 他们的损失函数都是交叉熵 sigmoid函数的导数: 他们能不能用0初始化呢? 2 逻辑回归 2.1 求偏导 2.1.1 结论 2.1.2 L对a的偏导 2.1.3 对w1,w2求偏导 w2同…...

JavaWeb—js(3)

Bom dom: document object model(文档对象模型), 是处理html、xml的标准编写接口。 节点和元素 整个页面也就是整个文档我们称之为文档节点; 文档节点使用document来表示; 页面中的所有标签我们称之为元素,使用element来表示; 如此处的文本、属性、注释等&…...

PLSQL Day4

--使用显式游标更新行,对所有salesman增加500奖金: declare cursor s_cursor is select * from emp where job SALESMAN for update; begin for e_s in s_cursor loop update emp set comm nvl(comm,0)500 where current of s_cur…...

git合并报错:git -c core.quotepath=false -c log.showSignature=false merge r

这个错误通常发生在 Git 尝试合并两个没有共同祖先的历史时,比如在合并不同的分支或仓库时,可以尝试以下几种方法: 允许不相关历史的合并: git merge release-3.6 --allow-unrelated-histories这个选项告诉 Git 允许合并两个没有共同历史的分…...

云原生存储:使用MinIO与Spring整合

在现代云原生应用开发中,高效、可靠的存储解决方案是至关重要的。MinIO是一个高性能、分布式的对象存储系统,它与Amazon S3兼容,非常适合在Kubernetes等云原生环境中使用。本文将详细介绍如何在Spring Boot应用中整合MinIO,并提供…...

等保测评新趋势:应对数字化转型中的安全挑战

随着信息技术的飞速发展,数字化转型已成为企业提升竞争力、优化运营效率的重要手段。然而,这一转型过程中,企业也面临着前所未有的安全挑战。等保测评(信息安全等级保护测评)作为保障信息系统安全的重要手段&#xff0…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

【单片机期末】单片机系统设计

主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

CSS | transition 和 transform的用处和区别

省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...

【中间件】Web服务、消息队列、缓存与微服务治理:Nginx、Kafka、Redis、Nacos 详解

Nginx 是什么:高性能的HTTP和反向代理Web服务器。怎么用:通过配置文件定义代理规则、负载均衡、静态资源服务等。为什么用:提升Web服务性能、高并发处理、负载均衡和反向代理。优缺点:轻量高效,但动态处理能力较弱&am…...