Diffusion Model合集 part3

news2025/1/23 1:11:52

扩散模型原理介绍3

  • 八,Diffusion Probabilistic Model的算法代码

而我们可以有多种建模目标
L t − 1 = E q [ 1 2 σ t 2 ∣ ∣ μ t ∼ ( x t , x 0 ) − μ θ ( x t , t ) ∣ ∣ 2 ] + C L_{t-1}=\mathbb{E}_{q}\left[\frac{1}{2\sigma_{t}^{2}}||\overset{\sim}{\mu_{t}}(\mathbf{x}_{t},\mathbf{x}_{0})-\mu_{\theta}(\mathbf{x}_{t},t)||^{2}\right]+C Lt1=Eq[2σt21∣∣μt(xt,x0)μθ(xt,t)2]+C
【1】直观的做法是让 D θ D_{\theta} Dθ 网络的输出等于前向过程中的后验分布均值 μ t ∼ ( x t , x 0 ) \overset{\sim}{\mu_{t}}(x_{t},x_{0}) μt(xt,x0),这种建模方法俗称预测后验分布的期望值;

【2】根据 μ t ∼ ( x t , x 0 ) \overset{\sim}{\mu_{t}}(x_{t},{\color{red}x_{0}}) μt(xt,x0)的表达式,它里面的 x 0 {\color{red}x_{0}} x0对于 D θ D_{\theta} Dθ网络是未知的,因此第二种做法是让 D θ D_{\theta} Dθ网络的输出等于 x 0 x_{0} x0,这种做法即直接预测原始数据。
有人问:既然可以通过 D θ D_{\theta} Dθ网络直接预测 x 0 x_{0} x0了,那是不是采样过程就直接计算 D θ ( x T , T ) D_{\theta}(x_{T}, T) Dθ(xT,T)的输出即可认为是生成了样本了呢?
答案是:直接一步到位,质量会比较差,还是需要通过马尔科夫高斯条件迭代而获得最终高质量的生成样本;
μ t ∼ ( x t , x 0 ) = α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t + β t α ˉ t − 1 1 − α ˉ t x 0 \mathrm{\overset{\sim}{\mu_{t}}(x_{t},{\color{red}x_{0}})}=\frac{\sqrt{\alpha_{t}}(1-\bar\alpha_{t-1})}{1-\bar\alpha_{t}}{\color{blue}x_{t}}+\frac{\beta_{t}\sqrt{\bar\alpha_{t-1}}}{1-\bar\alpha_{t}}{\color{red}x_{0}} μt(xt,x0)=1αˉtαt (1αˉt1)xt+1αˉtβtαˉt1 x0

  • x t , t → μ θ x_{t}, t \rightarrow\mu_{\theta} xt,tμθ中得到 x 0 x_{0} x0
  • 将上面得到的 x 0 x_{0} x0,和已知的 x t x_{t} xt输入到 μ t ∼ ( x t , x 0 ) \mathrm{\overset{\sim}{\mu_{t}}(x_{t},{\color{red}x_{0}})} μt(xt,x0)中,则前向过程中的后验分布均值 μ t ∼ \mathrm{\overset{\sim}{\mu_{t}}} μt就知道了
  • 所以就可以根据对应的 q ( x t − 1 ∣ x t , x 0 ∼ N ( μ t ∼ , β t ∼ I ) q(x_{t-1}|x_{t},x_{0}\sim N(\mathrm{\overset{\sim}{\mu_{t}}},\mathrm{\overset{\sim}{\beta_{t}}I}) q(xt1xt,x0N(μt,βtI)高斯分布重采样,得到 x t − 1 x_{t-1} xt1,即 t − 1 t-1 t1时刻的样本;同理,迭代最后生成 x 0 x_{0} x0

【3】当我们把 μ ∼ ( x t , x 0 ) \overset{\sim}{\mu}(x_{t},x_{0}) μ(xt,x0)中的 x 0 x_{0} x0 x t x_{t} xt去表示的时候, μ ∼ ( x t , x 0 ) \overset{\sim}{\mu}(x_{t},x_{0}) μ(xt,x0)就变成了如下只包含 x t x_{t} xt和随机变量 ϵ \epsilon ϵ的式子,记为 μ ∼ ( x t , ϵ ) \overset{\sim}{\mu}(x_{t},\epsilon) μ(xt,ϵ)。其中 x t x_{t} xt对于D网络是已知的,而 ϵ \epsilon ϵ是未知的,因此这个时候,我们可以选择建模目标是让 D θ D_{\theta} Dθ网络的输出等于 ϵ \epsilon ϵ了(得到 ϵ \epsilon ϵ后,再带入 μ ∼ ( x t , ϵ ) \overset{\sim}{\mu}(x_{t},\epsilon) μ(xt,ϵ),就可以用重采样技巧推出 x t − 1 x_{t-1} xt1, ⋯ \cdots 不断迭代 ⋯ \cdots 就可以求出 x 0 x_{0} x0),这种建模方法俗称随机变量(噪音)法。

总结:上面【1】【2】【3】殊途同归,都是为了预测 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_{t},x_{0}) q(xt1xt,x0)的均值 μ ∼ \overset{\sim}{\mu} μ

L t − 1 − C = E x 0 , ϵ [ 1 2 σ t 2 ∥ μ ∼ t ( x t ( x 0 , ϵ ) , 1 α ˉ t ( x t ( x 0 , ϵ ) − 1 − α ˉ t . ϵ ) ) − μ θ ( x t ( x 0 , ϵ ) , t ) ∥ 2 ] = E x 0 , ϵ [ 1 2 σ t 2 ∥ 1 α t ( x t ( x 0 , ϵ ) − β t 1 − α ˉ t . ϵ ) ⏟ μ ∼ t − μ θ ( x t ( x 0 , ϵ ) , t ) ⏟ μ θ ∥ 2 ] ⑥ \begin{aligned} L_{t-1}- C&=\mathbb{E}_{\mathbf{x}_{0},\epsilon}\left[\frac{1}{2\sigma_{t}^{2}}\Vert\overset{\sim}{\mu}_{t}\left(\mathbf{x}_{t}(\mathbf{x}_{0},\epsilon),\frac{1}{\sqrt{\bar\alpha_{t}}}(\mathbf{x}_{t}(\mathbf{x}_{0},\epsilon)-\sqrt{1-\bar\alpha_{t}}.\epsilon)\right)-\mu_{\theta}(\mathbf{x}_{t}(\mathbf{x}_{0},\epsilon),t) \Vert^{2}\right]\\ \\ &=\mathbb{E}_{\mathbf{x}_{0},\epsilon}\left[\frac{1}{2\sigma_{t}^{2}}\Vert\underbrace{\frac{1}{\sqrt{\alpha_{t}}}\left(\mathbf{x}_{t}(\mathbf{x}_{0},\epsilon)-\frac{\beta_{t}}{\sqrt{1-\bar\alpha_{t}}}.\epsilon\right)}_{\overset{\sim}{\mu}_{t}}-\underbrace{\mu_{\theta}(\mathbf{x}_{t}(\mathbf{x}_{0},\epsilon),t)}_{\mu_{\theta}} \Vert^{2}\right]\quad\quad\quad⑥\\ \end{aligned} Lt1C=Ex0,ϵ[2σt21μt(xt(x0,ϵ),αˉt 1(xt(x0,ϵ)1αˉt .ϵ))μθ(xt(x0,ϵ),t)2]=Ex0,ϵ 2σt21μt αt 1(xt(x0,ϵ)1αˉt βt.ϵ)μθ μθ(xt(x0,ϵ),t)2

在DDPM论文中,作者选择了方案【3】,即让 D θ D_{\theta} Dθ网络的输出等于 ϵ \epsilon ϵ, 预测噪音法。于是,新的逆向条件分布的均值可以表示成(下式中的 ϵ θ \epsilon_{\theta} ϵθ相当于我们定义的广义的 D θ D_{\theta} Dθ网络的具体目标形式):
μ θ ( x t , t ) = μ t ∼ ( x t , 1 α ˉ t ( x t − 1 − α ˉ t . ϵ θ ( x t ) ) ) = 1 α t ( x t − β t 1 − α ˉ t . ϵ θ ( x t , t ) ) ⑦ \mu_{\theta}(\mathbf{x}_{t},t)=\overset{\sim}{\mu_{t}}\left(\mathbf{x}_{t},\frac{1}{\sqrt{\bar\alpha_{t}}}(\mathbf{x}_{t}-\sqrt{1-\bar\alpha_{t}}.\epsilon_{\theta}(\mathbf{x}_{t}))\right)=\frac{1}{\sqrt{\alpha_{t}}}\left(\mathbf{x}_{t}-\frac{\beta_{t}}{\sqrt{1-\bar\alpha_{t}}}.\epsilon_{\theta}(\mathbf{x}_{t},t)\right)\quad\quad⑦ μθ(xt,t)=μt(xt,αˉt 1(xt1αˉt .ϵθ(xt)))=αt 1(xt1αˉt βt.ϵθ(xt,t))

在DDPM论文中预测的就是 ϵ \epsilon ϵ, 所以就是让上式⑥中的 μ ∼ t \overset{\sim}{\mu}_{t} μt 尽可能地接近于 μ θ \mu_{\theta} μθ ,所以才有了上式⑦

又因为在前面我们已知:
μ t ∼ ( x t , x 0 ) = α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t + β t α ˉ t − 1 1 − α ˉ t x 0 \mathrm{\overset{\sim}{\mu_{t}}(x_{t},x_{0})}=\frac{\sqrt{\alpha_{t}}(1-\bar\alpha_{t-1})}{1-\bar\alpha_{t}}x_{t}+\frac{\beta_{t}\sqrt{\bar\alpha_{t-1}}}{1-\bar\alpha_{t}}x_{0} μt(xt,x0)=1αˉtαt (1αˉt1)xt+1αˉtβtαˉt1 x0
x t = α ˉ t x 0 + 1 − α ˉ t z t x_{t}=\sqrt{\bar\alpha_{t}}x_{0}+\sqrt{1-\bar\alpha_{t}}z_{t} xt=αˉt x0+1αˉt zt,我们可以知道: x 0 = 1 α ˉ t ( x t − 1 − α ˉ t z t ) x_{0}=\frac{1}{\sqrt{\bar\alpha_{t}}}(x_{t}-\sqrt{1-\bar\alpha_{t}}z_{t}) x0=αˉt 1(xt1αˉt zt)
所以: μ t ∼ ( x t , x 0 ) → μ t ∼ ( x t , 1 α ˉ t ( x t − 1 − α ˉ t . ϵ θ ( x t ) ) ) \mathrm{\overset{\sim}{\mu_{t}}(x_{t},x_{0})}\rightarrow\overset{\sim}{\mu_{t}}\left(\mathbf{x}_{t},\frac{1}{\sqrt{\bar\alpha_{t}}}(\mathbf{x}_{t}-\sqrt{1-\bar\alpha_{t}}.\epsilon_{\theta}(\mathbf{x}_{t}))\right) μt(xt,x0)μt(xt,αˉt 1(xt1αˉt .ϵθ(xt)))
说明 z t z_{t} zt就是噪声,即下面的 ϵ θ ( x t ) \epsilon_{\theta}(\mathbf{x}_{t}) ϵθ(xt),至于为什么写成 ϵ θ ( x t ) \epsilon_{\theta}(\mathbf{x}_{t}) ϵθ(xt),而不是 ϵ \epsilon ϵ
因为这里我们定义 ϵ θ ( x t ) \epsilon_{\theta}(\mathbf{x}_{t}) ϵθ(xt)是一个函数近似,可以根据输入 x t \mathbf{x}_{t} xt来预测出 ϵ \epsilon ϵ
因为 x t \mathbf{x}_{t} xt不含参数,所以它可以看作常量,我们就把参数转移到随机量 ϵ \epsilon ϵ

  • x t ( x 0 , ϵ ) \mathbf{x}_{t}(\mathbf{x}_{0},\epsilon) xt(x0,ϵ)就说明了 x t \mathbf{x}_{t} xt ϵ \epsilon ϵ是有一定关系的,现在我们把 x t \mathbf{x}_{t} xt看作常量,那就可以求出来 ϵ \epsilon ϵ了,所以我们就定义了一个函数 ϵ θ ( x t ) \epsilon_{\theta}(\mathbf{x}_{t}) ϵθ(xt),可以根据输入 x t \mathbf{x}_{t} xt来预测出 ϵ \epsilon ϵ

前面说到逆扩散过程中有 p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t})=\mathcal{N}(\mathbf{x}_{t-1};\mu_{\theta}(\mathbf{x}_{t},t),\Sigma_{\theta}(\mathbf{x}_{t},t)) pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t)),实际上在论文中作者设置 Σ θ ( x t , t ) = σ t I \Sigma_{\theta}(\mathbf{x}_{t},t)=\sigma_{t}\mathbf{I} Σθ(xt,t)=σtI,所以有: p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , σ t I ) p_{\theta}(\mathbf{x}_{t-1}|\mathbf{x}_{t})=\mathcal{N}(\mathbf{x}_{t-1};\mu_{\theta}(\mathbf{x}_{t},t),\sigma_{t}\mathbf{I}) pθ(xt1xt)=N(xt1;μθ(xt,t),σtI),利用参数重整化( z ∼ N ( 0 , I ) \mathbf{z}\sim N(0,I) zN(0,I)),得到: x t − 1 = σ t . z + μ θ \mathbf{x}_{t-1}=\sigma_{t}.\mathbf{z}+\mu_{\theta} xt1=σt.z+μθ, 带入式子⑦即得:
x t − 1 = 1 α t ( x t − β t 1 − α ˉ t . ϵ θ ( x t , t ) ) + σ t . z \mathbf{x}_{t-1}=\frac{1}{\sqrt{\alpha_{t}}}(\mathbf{x}_{t}-\frac{\beta_{t}}{\sqrt{1-\bar\alpha_{t}}}.\epsilon_{\theta}(\mathbf{x}_{t},t))+\sigma_{t}.\mathbf{z} xt1=αt 1(xt1αˉt βt.ϵθ(xt,t))+σt.z

于是 L t − 1 L_{t-1} Lt1可以化简成如下表达式:
E x 0 , ϵ [ β t 2 2 σ t 2 α t ( 1 − α ˉ t ) ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 ] \mathbb{E}_{\mathbf{x}_{0},\epsilon}\left[\frac{\beta_{t}^{2}}{2\sigma_{t}^{2}\alpha_{t}(1-\bar\alpha_{t})}\left\|\epsilon-\epsilon_{\theta}(\sqrt{\bar\alpha_{t}}\mathbf{x}_{0}+\sqrt{1-\bar\alpha_{t}}\epsilon,t)\right\|^{2}\right] Ex0,ϵ[2σt2αt(1αˉt)βt2 ϵϵθ(αˉt x0+1αˉt ϵ,t) 2]

上式化简的过程中, x t \mathbf{x}_{t} xt x t ( x 0 , ϵ ) \mathbf{x}_{t}(\mathbf{x}_{0},\epsilon) xt(x0,ϵ)是一样的,可以互相消掉。

DDPM作者又发现,干脆将系数丢掉,训练更加稳定,质量更好,于是有了下面的 L s i m p l e L_{simple} Lsimple:
L s i m p l e ( θ ) = E x 0 , ϵ [ ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 ] L_{simple}(\theta)=\mathbb{E}_{\mathbf{x}_{0},\epsilon}\left[\left\|\epsilon-\epsilon_{\theta}(\sqrt{\bar\alpha_{t}}\mathbf{x}_{0}+\sqrt{1-\bar\alpha_{t}}\epsilon,t)\right\|^{2}\right] Lsimple(θ)=Ex0,ϵ[ ϵϵθ(αˉt x0+1αˉt ϵ,t) 2]

八,Diffusion Probabilistic Model的算法代码

在这里插入图片描述

  • Training
    t ∈ ( 0 , T ) t\in(0,T) t(0,T), T T T是可以在前面求出为多少合适的,且 t t t 是一个embedding
    训练的过程 ≈ \approx 优化 − log ⁡ p θ ( x 0 ) -\log p_{\theta}(x_{0}) logpθ(x0)
  • Sampling
    迭代的次数越多,生成的概率分布越准确
    后续的改进:优化迭代次数(减少耗时)

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

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

相关文章

系统调用(Linux)

目录 1.内核态和用户态: 1.1CPU的两种状态: 1.2CPU 指令集权限: 1.3用户态与内核态的空间: 1.4用户态与内核态的切换: 2.系统调用: 2.1linux框架图: 2.2系统调用和API: 2.3系…

The release Method

The release Method The role of the release method is the reverse of open. Sometimes youll find that the method implementation is called device_close instead of device_release. Either way, the device method should perform the following tasks: 释放方法的作用…

跟我学 UML 系统建模

UML 系统建模 1 概述 1.1 课程概述 汇集 UML 及其相关的一些话题回顾 UML 相关的符号与概念以电商订单相关业务为例,借助 UML 完成系统建模将 UML 变成提升建模效率,表达架构思想的工具 1.2 什么是 UML ​ Unified Modeling Language 统一建模语言&a…

Leetcode-1753-移除石子的最大得分

1、堆 我们可以维护一个大顶堆,其中储存了三个石子堆中石子的个数。为了确保我们的分数尽可能大,我们每次都需要从最大的两个堆中取出石子。因此我们不断循环,每次都从当前最大的堆中取出石子。值得注意的是,为了确保能够发现游戏…

数据管理篇之存储和成本管理

第14章 存储和成本管理 目标:有效的降低存储资源的消耗,节省存储成本。 1.数据压缩 问题 在分布式文件系统中,为了提高数据的可用性与性能 ,通常会将数据存储3份,这就意味着存储 1TB 的逻辑数据, 实际上…

iOS自动化真机测试验证环境过程中常见问题解析

本文节选自霍格沃兹测试学院内部教材 本章节主要讲解 iOS 自动化真机配置以及在 iOS 真机执行自动化时常见问题与解决方法。 真机使用的Capability 与模拟器不同,真机测试需要如下的 Capability 方式一:设置 App 路径,启动 App(自…

SpringBoot项目开启远程调试

1、服务端设置 cat start.sh #!/bin/bash echo "i will start the program!" java -jar -Xdebug -Xrunjdwp:transportdt_socket,servery,address9999 xxxxx-SNAPSHOT.jar --server.port10991 echo "start success" 2、开发工具设置 3、然后&#…

计算机网络~计算机网络体系结构

一、计算机网络的概念和功能 1. 计算机网络 是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统计算机网络是互联的、自治的计算机集合 互联:通过通信链路互联互通自治&a…

π120M30 双通道数字隔离器兼容ADuM3210TRZ 广泛应用于工业自动化系统方案

π120M30 双通道数字隔离器兼容ADuM3210TRZ 广泛应用于工业自动化系统方案 。具有出色的性能特征和可靠性,整体性能优于光耦和基于其他原理的数字隔离器产品。传输通道间彼此独立,可实现多种传输方向的配置,可实现 3.0kV rms 隔离耐压等级和 …

【Java语言】— 类型转换

1.类型转换 (1)自动类型转换 类型范围小的变量,可以直接赋值给类型范围大的变量。 ①自动类型转换的底层原理 ②自动类型转换的其他形式 (2)表达式的自动类型转换 在表达式中,小范围类型的变量会自动转…

python之序列反转

python之序列反转 方式1:.reverse() a [1, 2, 3, 4, 5] print(a.reverse()) # None,函数原地反转,不具备排序功能,而且没有返回值 print(a) # [5, 4, 3, 2, 1]方式2:reversed a [1, 2, 3, 4, 5] print(reversed…

2021年全国职业院校技能大赛网络搭建与应用赛项——国赛组播题

2021年全国职业院校技能大赛网络搭建与应用赛项——国赛组播题 sw1:# ip pim multicast-routing (开启组播模式,在全局模式) int vlan 10 ip pim dense-mode (在接口模式下开启组播-密集模式协议) ip igmp version 2 i…

正大国际期货:恒指德指交易导致亏损的原因是什么?

在交易过程中,经常会遇到我们事先对这次的交易进行了详细的分析推理,还制定了周密可行的策略,但真正落实到交易活动过程中却变得面目全非,屡屡败退,让我们措手不及这样的现象,是什么原因导致?正…

如何开通 API 服务并授予项目 API 服务的调用权限

涂鸦 IoT 开发平台开放多种业务 API 服务,全面覆盖全屋智能管理、行业通用设备用户管理、垂直品类开放能力、各类数据服务等业务需求。 本文将为大家介绍如何开通 API 服务并授予项目 API 服务的调用权限。 个人数据隐私声明 开发者调用的部分 云服务 API 会获取用…

链表(2)------数据结构

1)进行反转单链表:节点的值不发生改变,只需要进行修改节点的指向 进行测试的时候要给方法传入一个头结点 输入:1,2,3,4,5; 输出:5,4,3,2,1; 1)我…

从0到1介绍一下开源大数据比对平台dataCompare

1.背景&现状 在大数据领域也已经工作了多年,无论所待过的大公司还是小公司,都会遇到集群升级迁移过程中据搬迁等相关工作,经常会碰到搬迁之后,搬迁的数据是不是能对的上呢?两边数据究竟是不是一致的呢&#xff1f…

javaee之Mybatis4

延迟加载与立即加载的概念 Mybatis中的延迟加载与立即加载 一、一对一实现延迟加载的步骤(多对一,看成一对一) 我们这里是利用account表中的一个方法来做 先来看IAccountDao里面的一个方法 然后再去看持久层IAccountDao.xml 这个方法给我们…

Linux学习-92-SELinux管理

18 SELinux管理 root 用户在 Linux 系统当中就是无所不能的,而且读、写和执行权限对 root 用户完全没有作用。root 用户的存在极大地方便了 Linux 的管理,但是也造成了一定的安全隐患。绝大多数系统的严重错误都是由于 root 用户的误操作引起的&#xff…

开源项目 Spartacus 的 git 分支使用规范

Spartacus 开源项目里存在如下的 git 分支: feature/GH-xxxx 分支用于简单的功能和错误修复epic/epic-name 分支用于大功能的开发release/1.4.0-rc.0 分支用于特定的发布(你可以将它们与维护分支区分开来,因为包含了完整的版本号&#xff09…

压力测试笔记

压测学习 要求:满足100并发500ms性能要求 压测场景 新系统上线支持 在新系统上线前,通过执行性能压测能够对系统的负载能力有较为清晰的认知,从而结合预估的潜在用户数量保障系统上线后的用户体验。技术升级验证 在系统重构过程中&#xf…