[Diffusion Model 笔记]DDIM 笔记 数学推导 Denoising Diffusion Implicit Models

目录

  • 核心总结
  • 符号定义
  • 第一套,快速简单讲清采样方法
  • 继续分析,待定系数法求解
  • 图示理解
  • 关于参数sigma

本文是观看以下视频的笔记,强烈推荐观看最后的图示理解:
https://www.bilibili.com/video/BV13P411J7dm/?spm_id_from=333.788

论文:Denoising Diffusion Implicit Models
链接:https://arxiv.org/abs/2010.02502

核心总结

  • DDIM只是一个采样的算法,其训练和DDPM是一样的。

  • DDIM在推导采样公式时,没有用DDPM中q(xt|xt-1)的条件;

  • 同时把一个高斯噪声可以换成随机高斯噪声和预测的噪声的加权和,其中 σ k \sigma_k σk是一个超参数,控制二者的权重

  • 采样公式如下:从任意步数k推出步数s:
    x s = α ˉ s x ^ 0 ∣ k + 1 − α ‾ s − σ k 2 ϵ θ + σ k ϵ \mathbf{x}_{s}=\sqrt{\bar\alpha_s} \hat {\mathbf{x}}_{0\mid k}+ \sqrt{1-\overline{\alpha}_{s}-\sigma_{k}^{2}} \boldsymbol{\epsilon} _{\theta}+{\sigma_{k} \boldsymbol{\epsilon} } xs=αˉs x^0k+1αsσk2 ϵθ+σkϵ
    其中:
    x ^ 0 ∣ k = 1 α ˉ k ( x k − 1 − α ˉ k z ~ ) \hat {\mathbf{x}}_{0\mid k}=\frac{1}{\sqrt{\bar\alpha_{k}}}(\mathbf{x}_{k}-\sqrt{1-\bar\alpha_{k}}\tilde{\mathbf{z}}) x^0k=αˉk 1(xk1αˉk z~)

符号定义

  • xT: 符合高斯分布的噪声
  • x0: 一个符合GT的图像,无噪声的,clean image
  • T: 时间步
  • xt: 第t步的图像,要从他推出t-1的图像。(一直推下去的话可以推出x0)
  • β t \beta_t βt:noise rate,关于t的固定序列,含义是每一步t要加的噪声的比例。
  • α t \alpha_t αt:signal rate,关于t的固定序列, α t \alpha_t αt= 1- β t \beta_t βt,含义是每一步t保留的上一步图像比例。通常会被设置为 lim ⁡ t → T α t = 0 \lim _{t \rightarrow T} \alpha_t=0 limtTαt=0。具体定义是: x t = α t x t − 1 + 1 − α t ϵ t \mathbf{x}_t=\sqrt{\alpha_t} \mathbf{x}_{t-1}+\sqrt{1-\alpha_t} \boldsymbol{\epsilon}_{t} xt=αt xt1+1αt ϵt
  • q:正向扩散:加噪声
  • p:逆向扩散:去噪声
  • ϵ t \boldsymbol{\epsilon}_t ϵt z t \mathbf{z}_t zt: xt相比xt-1加的噪声,服从标准正态分布。本文中z和epsilon混用
  • ϵ \boldsymbol{\epsilon} ϵ:不是t这一步的噪声,而是前面的噪声叠加后的结果,还是以服从标准正态分布
  • z波浪:网络预测的噪声,希望他尽可能接近真实的z
  • x ^ 0 ∣ k \hat {\mathbf{x}}_{0\mid k} x^0k:从k这一步估算的x0,定义为: x ^ 0 ∣ k = 1 α ˉ k ( x k − 1 − α ˉ k z ~ ) \hat {\mathbf{x}}_{0\mid k}=\frac{1}{\sqrt{\bar\alpha_{k}}}(\mathbf{x}_{k}-\sqrt{1-\bar\alpha_{k}}\tilde{\mathbf{z}}) x^0k=αˉk 1(xk1αˉk z~)

第一套,快速简单讲清采样方法

上次在DDPM中,我们是这样开头的:

略。我们考虑了t和t-1之间的关系,所以只能一步一步走。

现在我们这样想:

下式恒成立:
q ( x s ∣ x 0 ) = α ˉ s x 0 + 1 − α ˉ s ϵ q(\mathbf{x}_{s}|\mathbf{x}_{0}) =\sqrt{\bar\alpha_s} \mathbf{x}_0+\sqrt{1-\bar\alpha_s} \boldsymbol{\epsilon} q(xsx0)=αˉs x0+1αˉs ϵ
而,其中的x0可以由任何一步k的xk来估出来:
x 0 ≈ x ^ 0 ∣ k = 1 α ˉ k ( x k − 1 − α ˉ k z ~ ) \mathbf{x}_{0} \approx \hat {\mathbf{x}}_{0\mid k}=\frac{1}{\sqrt{\bar\alpha_{k}}}(\mathbf{x}_{k}-\sqrt{1-\bar\alpha_{k}}\tilde{\mathbf{z}}) x0x^0k=αˉk 1(xk1αˉk z~)

带进来,同时他这个噪声 ϵ \boldsymbol{\epsilon} ϵ只是一个满足高斯分布的噪声就行,那我估出来的噪声 ϵ θ \boldsymbol{\epsilon} _{\theta} ϵθ也满足高斯分布呀。因此可以把这个噪声换成他和我们的加权和,只要保证他们的方差之和等于原来的方差,就还是原来的分布不变:(引入了一个控制权重的参数 σ k \sigma_k σk)
q ( x s ∣ x k , x 0 ) = α ˉ s x ^ 0 ∣ k + 1 − α ˉ s ϵ = α ˉ s x ^ 0 ∣ k + 1 − α ‾ s − σ k 2 ϵ θ + σ k ϵ \begin{aligned} &q(\mathbf{x}_{s}|\mathbf{x}_{k},\mathbf{x}_{0})\\ &=\sqrt{\bar\alpha_s} \hat {\mathbf{x}}_{0\mid k}+\sqrt{1-\bar\alpha_s} \boldsymbol{\epsilon} \\ &=\sqrt{\bar\alpha_s} \hat {\mathbf{x}}_{0\mid k}+ \sqrt{1-\overline{\alpha}_{s}-\sigma_{k}^{2}} \boldsymbol{\epsilon} _{\theta}+{\sigma_{k} \boldsymbol{\epsilon} } \end{aligned} q(xsxk,x0)=αˉs x^0k+1αˉs ϵ=αˉs x^0k+1αsσk2 ϵθ+σkϵ

这得到了DDIM的采样公式:
x s = α ˉ s x ^ 0 ∣ k + 1 − α ‾ s − σ k 2 ϵ θ + σ k ϵ \mathbf{x}_{s}=\sqrt{\bar\alpha_s} \hat {\mathbf{x}}_{0\mid k}+ \sqrt{1-\overline{\alpha}_{s}-\sigma_{k}^{2}} \boldsymbol{\epsilon} _{\theta}+{\sigma_{k} \boldsymbol{\epsilon} } xs=αˉs x^0k+1αsσk2 ϵθ+σkϵ

也就是说,采样的时候不一定要一步一步,可以从任意k采样s。

在这里插入图片描述

在这里插入图片描述

继续分析,待定系数法求解

  • 在DDPM,我们得出xt-1可以写成xt和x0和随机噪声的线性组合的形式;
  • 因此,我们这里可以用待定系数法求解他们的系数,但是不使用q(xt|xt-1)这个条件。
  • 结果就发现,xt 和 x0的系数还是可以求出来;只是求不出后面那个随机噪声的系数epsilon1了
  • 当随机噪声的系数epsilon1等于DDPM时,DDIM就变为了DDPM

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
可以看到和我们之前直接写的是一样的。

图示理解

顺序是红黄绿蓝靛紫。

我们一步步看,等号后面这三项分别是,

  • 红色:先走一大步,得到估计的x0。具体来说是在xt基础上减去估计的噪声
  • 黄色:然后原路返回一点儿,也即再加上某比例的估计的噪声
  • 绿色:然后加上一点点随机扰动
  • 这样就完成了一步,下面继续循环即可。注意这一步不一定非得取当前步-1
  • σt越大,则绿色和紫色的越长,黄色和深蓝色的越短
    在这里插入图片描述

关于参数sigma

咱们控制predicted 噪声和随机噪声权重的参数σt(越大,随机噪声越多),在DDIM的论文中有结果图.

  • 其中 σ ^ \hat\sigma σ^就是DDPM,
  • dim(τ)是steps of sampling trajectory
  • 可以看到DDPM在步数少的时候会差很多
  • 另外,比较1到1的σ值,emm,不太明确,大概sigma越小就越确定一些?吧。
    在这里插入图片描述

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

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

相关文章

路由重分布的概念与配置

路由重分布的概念 l 路由重分布是指连接不同路由域(自治系统)的边界路由器,它在路由协议之间交换和通告路由信息 从一种协议(含静态/直连路由)到另一种协议 同一种协议的多个实例 路由重分布的背景 网络出口位置…

时间序列预测:基于PyTorch框架的循环神经网络(RNN)实现销量预测

之前随手一写,没想到做预测的同学还挺多,但是之前那个效果并不好,于是在之前的基础上重新修改完善,到了现在这一步才感觉预测算是初步能应用。 上文地址:LSTM模型预测时间序列:根据历史销量数据预测商品未…

AI预测福彩3D第9套算法实战化测试第4弹2024年4月26日第4次测试

今天继续进行新算法的测试,今天是第4次测试。好了,废话不多说了,直接上图上结果。 2024年4月26日福彩3D预测结果 6码定位方案如下: 百位:4、5、7、8、3、9 十位:6、9、5、4、1、2 个位:7、8、5、…

光明的未来:光分路器在现代通信中的角色

光分路器又叫分光器,是一种集成波导光功率分配器件,作用是实现光信号的分路。例如,一个1x4光分路器可以将一路输入光信号等比分成四路输出光信号,并在四个不同的通道内进行传输。如今,光分路器广泛应用在无源光网络&am…

从 RAG 1.0到RAG 2.0,这次做对了什么?

RAG是目前最流行的补充生成式人工智能模型的方式,最近 RAG 的开创者提出了新的上下文语言模型 (CLM) ,他们称之为“ RAG 2.0 ”。 今天让我们一块来从RAG目前的原理和缺点出发,看看他们所提出的RAG2.0是否能够为行业带来新的希望。 LLM的时间…

提交链码-编辑前后端,调用链码功能

一 . 链码介绍 1.什么链码? • 链码是一段用 Go、Node.js 或者 Java 实现了规定接口的程序。链码在安全的Docker容器中运行, 与背书节点的进程隔离。通过应用程序提交的交易,链码初始化和管理账本状态。• 链码通常处理网络成员协商达成的业…

若依文件下载

后端自带工具controller package com.ruoyi.web.controller.common;import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.Logger…

docker常用基本命令

把jar包和 dockerfile文件放到同一目录下#构建Docker镜像 注意后面的 . 不能省略 docker build -t your-image-name .#运行并创建一个容器 docker run -d -p 8080:8080 --name container_name your-image-name# 停止容器 767fce4cb990 容器ID (容器名也可以) docker stop 767f…

HarmonyOS开发案例:【rating组件】

介绍 将引导开发者使用rating组件实现星级打分功能。 相关概念 [rating组件]:评分条,可根据用户判断进行打分。 环境搭建 软件要求 [DevEco Studio]版本:DevEco Studio 3.1 Release及以上版本。OpenHarmony SDK版本:API vers…

sCrypt全新上线RUNES功能

sCrypt智能合约平台全新上线一键etch/mint RUNES功能! 请访问 https://runes.scrypt.io/ 或点击阅读原文体验! 关于sCrypt sCrypt是BSV区块链上的一种智能合约高级语言。比特币使用基于堆栈的Script语言来支持智能合约,但是用原生Script编…

宁盾LDAP统一用户认证与单点登录:构建高效安全的企业身份认证

在信息化时代,企业面临着众多的应用系统和数据资源,如何有效地管理和保护这些资源,确保信息安全和高效利用,成为了企业信息化建设的核心问题。LDAP统一用户认证和单点登录(SSO)作为一种高效、安全的身份验证…

Quarto Dashboards 教程 2:Dashboard Layout

「写在前面」 学习一个软件最好的方法就是啃它的官方文档。本着自己学习、分享他人的态度,分享官方文档的中文教程。软件可能随时更新,建议配合官方文档一起阅读。推荐先按顺序阅读往期内容: 1.quarto 教程 1:Hello, Quarto 2.qu…

srpingMVC基本使用

文章目录 1. springMVC基本功能(1) maven坐标导入(2) 编写表现层(3) springMVC配置类编写(4) 部署tomcat访问 2. 各种请求方法get请求post请求put请求delete请求请求参数提取 3. 请求参数接收(1) param参数接受封装到对象中 (2) 路劲参数接收集合接受时间类型接收json参数接收m…

1.C++入门(上)

目录 1.C关键字 2.命名空间 作用域方面的优化 a.命名空间定义 b.命名空间使用 3.C 输入&输出 1.C关键字 C有63个关键字,C语言有32个关键字,存在重叠如荧光笔标出 2.命名空间 作用域方面的优化 如果变量,函数和类的名称都存在于全…

java 词法分析练习

import parser.Parser;import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class Main {public static void main(String[] args) {// 关键词List<String> keyList new ArrayList<>(Arrays.asList("int","String…

鸿蒙APP开发页面组件之间的属性关系

我们将对于多页面以及更多有趣的功能展开叙述&#xff0c;这次我们对于 HarmonyOS 的很多有趣常用组件并引出一些其他概念以及解决方案、页面跳转传值、生命周期、启动模式&#xff08;UiAbility&#xff09;&#xff0c;样式的书写、状态管理以及动画等方面进行探讨 页面之间…

mac 教程 终端如何拆墙

一直觉得自己写的不是技术&#xff0c;而是情怀&#xff0c;一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的&#xff0c;希望我的这条路能让你们少走弯路&#xff0c;希望我能帮你们抹去知识的蒙尘&#xff0c;希望我能帮你们理清知识的脉络&#xff0…

【Paddle】PCA线性代数基础 + 领域应用:人脸识别算法(1.1w字超详细:附公式、代码)

【Paddle】PCA线性代数基础及领域应用 写在最前面一、PCA线性代数基础1. PCA的算法原理2. PCA的线性代数基础2.1 标准差 Standard Deviation2.2 方差 Variance2.3 协方差 Covariance2.4 协方差矩阵 The Covariance Matrix2.5 paddle代码demo①&#xff1a;计算协方差矩阵2.6 特…

4.8 Python dict字典

Python dict字典详解 Python字典&#xff08;dict&#xff09;是一种无序的、可变的序列&#xff0c;它的元素以“键值对&#xff08;key-value&#xff09;”的形式存储。相对地&#xff0c;列表&#xff08;list&#xff09;和元组&#xff08;tuple&#xff09;都是有序的序…

【Android12】Bugreport实现原理

Bugreport实现原理 Bugreport Bugreport介绍 Android Bugreport是一个用于记录和收集 Android设备上系统信息、日志和调试信息的工具。 系统发生某些问题时&#xff0c;可以通过bugreport把系统当前时刻点&#xff08;运行BugRepot的时刻&#xff09;的系统相关的状态和信息…