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(xt−1∣x0,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(xt−1∣x0,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} xt−1=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} xt−1=kx0+mxt+σϵ=kx0+m(αtx0+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} xt−1 的形式,然后和(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} xt−1xt−1=αt−1x0+1−αt−1ϵ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} αt−11−αt−1=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−αt−1−σ2=αt−1−1−αt1−αt−1−σ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} xt−1=kx0+mxt+σϵ=(αt−1−1−αt1−αt−1−σ2αt)(αtxt−1−αtϵ0)+1−αt1−αt−1−σ2xt+σϵ=αtαt−1xt+(1−αt−1−σ2−αtαt−1(1−αt))ϵ0+σϵ=αt1xt+(1−αt−1−σ2−αt1−αt)ϵ0+σϵ(26)
ϵ ‾ 0 \overline \epsilon_{0} ϵ0 通过 U-Net 进行预测,其他都是已知参数。网上的教程都是推导到(26)式处就说不是马尔科夫假设,所以不需要严格遵守 x t → x t − 1 x_{t} \rightarrow x_{t-1} xt→xt−1 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τi−1=αˉτi−1(αˉτixτi−1−αˉτiϵθ(xτi,τi))+1−αˉτi−1−στi2ϵθ(xτi,τi)
其中 τ = { τ 1 , τ 2 , . . . , τ N } \tau = \{ \tau_1, \tau_2, ..., \tau_N \} τ={τ1,τ2,...,τN} 是时间步长序列。通过这个机制,DDIM 可以在生成过程中跳过多个步骤。
https://zhuanlan.zhihu.com/p/675510886
一文带你看懂DDPM和DDIM(含原理简易推导,pytorch代码) ↩︎
DDPM与DDIM简洁版总结 ↩︎
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,并提供…...
等保测评新趋势:应对数字化转型中的安全挑战
随着信息技术的飞速发展,数字化转型已成为企业提升竞争力、优化运营效率的重要手段。然而,这一转型过程中,企业也面临着前所未有的安全挑战。等保测评(信息安全等级保护测评)作为保障信息系统安全的重要手段࿰…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
