DENOISING DIFFUSION IMPLICIT MODELS(DDIM 去噪扩散隐式模型公式推导)

本文主要是介绍DENOISING DIFFUSION IMPLICIT MODELS(DDIM 去噪扩散隐式模型公式推导),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

DENOISING DIFFUSION IMPLICIT MODELS(DDIM 去噪扩散隐式模型公式推导)

DDIM思想,去掉DDPM去噪过程的马尔可夫性质,达到跳步去噪的目的。DDIM思想实现方法:假设一个不服从马尔可夫的逆向去噪转移分布 P ( x t ∣ x t − 1 , x 0 ) ∼ N ( k x 0 + m x t , σ 2 I ) P(x_t \mid x_{t-1},x_0)\sim N(kx_0+mx_t,\sigma^2I) P(xtxt1,x0)N(kx0+mxt,σ2I)

推导
P ( x t − 1 ∣ x t , x 0 ) = P ( x t ∣ x t − 1 , x 0 ) ⋅ P ( x t − 1 ∣ x 0 ) P ( x t ∣ x 0 ) (1) P(x_{t-1}\mid x_t,x_0) = \frac{P(x_t \mid x_{t-1},x_0)\cdot P(x_{t-1}\mid x_0)}{P(x_t\mid x_0)} \tag{1} P(xt1xt,x0)=P(xtx0)P(xtxt1,x0)P(xt1x0)(1)
其中 P ( x t ∣ x t − 1 , x 0 ) P(x_t \mid x_{t-1},x_0) P(xtxt1,x0) 由于不服从马尔可夫性质,不能像DDPM一样化简为 P ( x t ∣ x t − 1 ) P(x_t \mid x_{t-1}) P(xtxt1)

现在假设
P ( x t ∣ x t − 1 , x 0 ) ∼ N ( k x 0 + m x t , σ 2 I ) (2) P(x_t \mid x_{t-1},x_0)\sim N(kx_0+mx_t,\sigma^2I) \tag{2} P(xtxt1,x0)N(kx0+mxt,σ2I)(2)
显示表达为:
x t − 1 = k x 0 + m x t + σ ϵ (3) x_{t-1}=kx_0+mx_t+\sigma\epsilon \tag{3} xt1=kx0+mxt+σϵ(3)
由于DDIM的前向加噪过程和DDPM一样,那么:
x t = α t ‾ x 0 + 1 − α t ‾ ϵ ′ (4) x_t = \sqrt{\overline{\alpha_t}}x_{0}+\sqrt{1-\overline{\alpha_t}}\epsilon^\prime \tag{4} xt=αt x0+1αt ϵ(4)
带入可知:
x t − 1 = k x 0 + m ( α t ‾ x 0 + 1 − α t ‾ ϵ ′ ) + σ ϵ = ( k + m α t ‾ ) x 0 + ( m 1 − α t ‾ ) ϵ ′ + σ ϵ = ( k + m α t ‾ ) x 0 + m 2 ( 1 − α t ‾ ) + σ 2 ϵ ( 重参数化技巧 ) \begin{align} x_{t-1}&=kx_0+m(\sqrt{\overline{\alpha_t}}x_{0}+\sqrt{1-\overline{\alpha_t}}\epsilon^\prime)+\sigma\epsilon \\ &=(k+m\sqrt{\overline{\alpha_t}})x_0+(m\sqrt{1-\overline{\alpha_t}})\epsilon^\prime+\sigma\epsilon \\ &=(k+m\sqrt{\overline{\alpha_t}})x_0+\sqrt{m^2(1-\overline{\alpha_t})+\sigma^2}\epsilon ~~~~~~~~~~~(重参数化技巧) \tag{5} \end{align} xt1=kx0+m(αt x0+1αt ϵ)+σϵ=(k+mαt )x0+(m1αt )ϵ+σϵ=(k+mαt )x0+m2(1αt)+σ2 ϵ           (重参数化技巧)(5)
由于:
x t − 1 = α t − 1 ‾ x 0 + 1 − α t − 1 ‾ ϵ (6) x_{t-1} = \sqrt{\overline{\alpha_{t-1}}}x_{0}+\sqrt{1-\overline{\alpha_{t-1}}}\epsilon \tag{6} xt1=αt1 x0+1αt1 ϵ(6)

对比公式(5)(6)得到:
{ k + m α t ‾ = α t − 1 ‾ m 2 ( 1 − α t ‾ ) + σ 2 = 1 − α t − 1 ‾ (7) \begin{cases} k+m\sqrt{\overline{\alpha_t}}&= \sqrt{\overline{\alpha_{t-1}}} \\ m^2(1-\overline{\alpha_t})+\sigma^2 &= 1-\overline{\alpha_{t-1}} \tag{7} \end{cases} {k+mαt m2(1αt)+σ2=αt1 =1αt1(7)
解方程组得到:
{ m = 1 − α t − 1 ‾ − σ 2 1 − α t ‾ k = α t − 1 ‾ − 1 − α t − 1 ‾ − σ 2 α t ‾ 1 − α t ‾ (8) \begin{cases} m &= \frac{\sqrt{1-\overline{\alpha_{t-1}}-\sigma^2}}{\sqrt{1-\overline{\alpha_t}}} \\ k &= \sqrt{\overline{\alpha_{t-1}}} -\sqrt{1-\overline{\alpha_{t-1}}-\sigma^2} \frac{\sqrt{\overline{\alpha_t}}}{\sqrt{1-\overline{\alpha_t}}} \tag{8} \end{cases} mk=1αt 1αt1σ2 =αt1 1αt1σ2 1αt αt (8)
带入 m , k m,k m,k 得到
x t − 1 = α t − 1 ‾ x 0 + 1 − α t − 1 ‾ − σ 2 x t − α t ‾ x 0 1 − α t ‾ (9) x_{t-1} =\sqrt{\overline{\alpha_{t-1}}}x_0+\sqrt{1-\overline{\alpha_{t-1}}-\sigma^2}\frac{x_t-\sqrt{\overline{\alpha_t}}x_0}{\sqrt{1-\overline{\alpha_t}}} \tag{9} xt1=αt1 x0+1αt1σ2 1αt xtαt x0(9)
利用公式(4),将公式(9)中的 x 0 x_0 x0 x t x_t xt表示,那么可以化简为( ϵ θ ( x t ) \epsilon_\theta(x_t) ϵθ(xt) 为公式4中的 ϵ ′ \epsilon^\prime ϵ)
x t − 1 = α t − 1 ‾ ( x t − 1 − α t ‾ ϵ θ ( x t ) α t ‾ ) + 1 − α t − 1 ‾ − σ 2 ϵ θ ( x t ) + σ ϵ (10) x_{t-1} = \sqrt{\overline{\alpha_{t-1}}}(\frac{x_t-\sqrt{1-\overline{\alpha_t}}\epsilon_\theta(x_t)}{\sqrt{\overline{\alpha_t}}})+\sqrt{1-\overline{\alpha_{t-1}}-\sigma^2}\epsilon_\theta(x_t)+\sigma\epsilon \tag{10} xt1=αt1 (αt xt1αt ϵθ(xt))+1αt1σ2 ϵθ(xt)+σϵ(10)
s s s表示 t − 1 t-1 t1, k k k 表示 t t t得出通用公式:
x s = α s ‾ ( x k − 1 − α k ‾ ϵ θ ( x k ) α k ‾ ) + 1 − α s ‾ − σ 2 ϵ θ ( x k ) + σ ϵ (11) x_{s} = \sqrt{\overline{\alpha_{s}}}(\frac{x_k-\sqrt{1-\overline{\alpha_k}}\epsilon_\theta(x_k)}{\sqrt{\overline{\alpha_k}}})+\sqrt{1-\overline{\alpha_{s}}-\sigma^2}\epsilon_\theta(x_k)+\sigma\epsilon \tag{11} xs=αs (αk xk1αk ϵθ(xk))+1αsσ2 ϵθ(xk)+σϵ(11)
通过公式(11)实现DDIM去马尔可夫化,跨越多步采样。

DDIM完结

参考:

DDPM推导

简短清晰的DDIM视频讲解

比较白话的DDIM视频讲解

文章信息

发表时间:2021,发表地点:ICLR,作者:Jiaming Song,机构:stanford

@inproceedings{
song2021denoising,
title={Denoising Diffusion Implicit Models},
author={Jiaming Song and Chenlin Meng and Stefano Ermon},
booktitle={International Conference on Learning Representations},
year={2021},
url={https://openreview.net/forum?id=St1giarCHLP}
}

这篇关于DENOISING DIFFUSION IMPLICIT MODELS(DDIM 去噪扩散隐式模型公式推导)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097276

相关文章

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

利用Python实现添加或读取Excel公式

《利用Python实现添加或读取Excel公式》Excel公式是数据处理的核心工具,从简单的加减运算到复杂的逻辑判断,掌握基础语法是高效工作的起点,下面我们就来看看如何使用Python进行Excel公... 目录python Excel 库安装Python 在 Excel 中添加公式/函数Python 读取

MySQL的隐式锁(Implicit Lock)原理实现

《MySQL的隐式锁(ImplicitLock)原理实现》MySQL的InnoDB存储引擎中隐式锁是一种自动管理的锁,用于保证事务在行级别操作时的数据一致性和安全性,本文主要介绍了MySQL的隐式锁... 目录1. 背景:什么是隐式锁?2. 隐式锁的工作原理3. 隐式锁的类型4. 隐式锁的实现与源代码分析4

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot