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

扩散模型之(五)基于概率流ODE方法

1. 概述

本文分析SDE方法的一个特例即去除随机项得到的ODE方法。

2. SDE回顾

\begin{aligned} \frac{\mathrm{d} \mathbf{x}_{t}}{\mathrm{d} t} = \left( f(\mathbf{x}_{t}, t) - \frac{1}{2}g^{2}(t) \nabla_{\mathbf{x}_{t}} \ln p_{t}(\mathbf{x}_{t}) \right) . \end{aligned}

\begin{aligned} \mathcal{L}(\theta) = \int_{0}^{1} \mathcal{L}_t(\theta) \mathrm{d} t . \end{aligned}

\Large \begin{aligned} \mathcal{L}_t(\theta) = \frac{1}{2} \mathbb{E}_{\mathbf{x}_0 \sim p_{data}(\mathbf{x})} \mathbb{E}_{\mathbf{x}_t \sim p_{0t}(\mathbf{x}_t|\mathbf{x}_0)} \left[ \lambda_t \| s_{\theta}(\mathbf{x}_t, t) - \nabla_{\mathbf{x}_t} \ln p_{0t}(\mathbf{x}_t|\mathbf{x}_0) \|^2 \right] . \end{aligned}

\Large \begin{aligned} \mathbf{x}_{t} = \mathbf{x}_{t+\Delta} - \left( f(\mathbf{x}_{t+\Delta}, t+\Delta) - \frac{1}{2}g^{2}(t+\Delta) \nabla_{\mathbf{x}_{t+\Delta}} \ln p_{t}(\mathbf{x}_{t+\Delta}) \right) \cdot \Delta . \end{aligned}

需注意:这里假定漂移项和扩散项均为已知条件。虽然我们坚持使用(后向)欧拉方法,但完全可以选用其他ODE求解器。不过本文为保证清晰性和简洁性,将采用最基础的方法。

图1展示了使用后向欧拉方法进行采样的示例。对于某个概率流ODE(PF-ODE)和给定的评分函数,我们可以从多峰分布中获取样本。可以想象,ODE求解器会"朝向"分布模态移动。通过这个简单示例可以看出,定义概率流ODE实为一种强大的生成工具。只要评分函数得到恰当近似,我们便能以直接的方式从原始分布中进行采样。

3.方差爆炸PF-ODE

在(Song等人,2020)和(Song等人,2021)的研究中,我们可以找到三类随机梯度生成模型(SGBMs)的典型示例:方差爆炸(VE)型随机微分方程、方差保持(VP)型随机微分方程以及次方差保持(sub-VP)型随机微分方程。本文将重点探讨方差爆炸型随机微分方程(VE SDE)。

在VE-SDE中,考虑选择如下的漂移项与扩散项:

  • f(\mathbf{x}, t) = 0
  • g(t) = \sigma^{t},其中 \sigma > 0 为超参数,

根据上述的分析,选取适当的 f(\mathbf{x}, t) 与 g(t) 得到通用形式的PF-ODE方程如下:

                ​​​​​​​        ​​​​​​​        \Large\begin{aligned} \frac{\mathrm{d} \mathbf{x}_{t}}{\mathrm{d} t} = - \frac{1}{2} \sigma^{2t} \nabla_{\mathbf{x}_t} \ln p_{t}(\mathbf{x}_{t}) \end{aligned}

现在为了训练评分模型,我们需要定义用于获取\mathbf{x}_0加噪版本的条件分布。幸运的是,随机微分方程理论(参见Särkkä与Solin2019年著作第五章)揭示了如何计算p_{0t}(\mathbf{x}_{t}|\mathbf{x}_0) 具体计算公式已发表于(Song等人,2020)的附录中。此处我们直接给出最终解:

        ​​​​​​​        ​​​​​​​        \Large \begin{aligned} p_{0t}(\mathbf{x}_{t}|\mathbf{x}_0) = \mathcal{N}\left(\mathbf{x}_t | \mathbf{x}_0, \frac{1}{2 \ln \sigma}(\sigma^{2t} - 1) \mathbf{I}\right) \end{aligned}

因此得到随时间变化的方差的函数形式如下:

        ​​​​​​​        ​​​​​​​                                ​​​​​​​        ​​​​​​​        \Large \begin{aligned} \sigma_t^2 = \frac{1}{2 \ln \sigma}(\sigma^{2t} - 1) \end{aligned}

最终得到的 p_{01}(\mathbf{x})为如下的近似高斯分布:

        ​​​​​​​        ​​​​​​​        \begin{aligned} p_{01}(\mathbf{x}) &= \int p_{0}(\mathbf{x}_0) * \mathcal{N} \left( \mathbf{x} | \mathbf{x}_{0}, \frac{1}{2 \ln \sigma}(\sigma^{2} - 1)\mathbf{I} \right) \\ &\approx \mathcal{N}\left( \mathbf{x} | 0, \frac{1}{2 \ln \sigma}(\sigma^{2} - 1)\mathbf{I} \right) . \end{aligned}

然后使用 p_{01}(\mathbf{x}) 采用噪声 \mathbf{x}_1 然后转换回数据点 \mathbf{x}_0.

4.参考资料

https://jmtomczak.github.io/blog/17/17_sbgms.html


文章转载自:

http://eXJd8zVR.hdqqr.cn
http://8AqRYNx7.hdqqr.cn
http://NhvHV11T.hdqqr.cn
http://jMmUZySQ.hdqqr.cn
http://Cgezn0zG.hdqqr.cn
http://fTMek2wZ.hdqqr.cn
http://XTNp1hgt.hdqqr.cn
http://afkBWEWK.hdqqr.cn
http://YnDoUGb7.hdqqr.cn
http://MfshL6KS.hdqqr.cn
http://bxn9yosU.hdqqr.cn
http://SM6x8gMc.hdqqr.cn
http://Cbn3Gxjh.hdqqr.cn
http://j7dvcmr5.hdqqr.cn
http://n00fnk2e.hdqqr.cn
http://ZBrMLO6a.hdqqr.cn
http://OF40a0C9.hdqqr.cn
http://ZTo5t6MZ.hdqqr.cn
http://xpW6u4vi.hdqqr.cn
http://yVg82pmR.hdqqr.cn
http://wDQ6u6Le.hdqqr.cn
http://lIG7ZOMH.hdqqr.cn
http://C8ZBm221.hdqqr.cn
http://K5Y6Atth.hdqqr.cn
http://lF80jTZt.hdqqr.cn
http://mIFCVh1S.hdqqr.cn
http://elMommU1.hdqqr.cn
http://taDvzecD.hdqqr.cn
http://Qj3NNuzA.hdqqr.cn
http://JsujHMYA.hdqqr.cn
http://www.dtcms.com/a/383790.html

相关文章:

  • 【代码模板】Linux内核模块带指针的函数如何返回错误码?(ERR_PTR(-ENOMEM)、IS_ERR(ent)、PTR_ERR(ent))
  • 查询 mysql中 所有的 非空记录字段
  • Spring Bean:不只是“对象”那么简单
  • 快速选中对象
  • ByteDance_FrontEnd
  • 中科方德环境下安装软件的几种方式与解决思路
  • 《一本书读懂 AI Agent》核心知识点总结
  • 【CVPR 2025】LSNet:大视野感知,小区域聚合
  • MyBatis 从入门到精通(第二篇)—— 核心架构、配置解析与 Mapper 代理开发
  • Ubuntu 虚拟机设置双向复制粘贴
  • Lombok添加了依赖缺没有生效
  • 嵌入式开发中的keil常见错误与警告解决方案(部分)
  • ES5 和 ES6 类的实现
  • 设计模式-装饰器模式详解
  • 对AQS的详解
  • 实验-基本ACL
  • 开始 ComfyUI 的 AI 绘图之旅-SDXL文生图和图生图(全网首发,官网都没有更新)(十四)
  • Java可用打印数组方法5中+常用变量转字符串方法
  • ssh远程连接服务器到vscode上“连接失败”
  • SpringBoot -原理篇
  • 设计模式——结构型模式
  • I.MX6ULL时钟(clock)与定时器(EPITGPT)
  • STM32_06_Systick定时器
  • 用 Java 学会 Protocol Buffers从 0 到 1 的完整实战
  • 237.删除链表中的节点
  • 【Vue2手录14】导航守卫
  • Qt如何读写xml文件,几种方式对比,读写xml的Demo工程
  • 子网划分专项训练-1,eNSP实验,vlan/dhcp,IP规划
  • 云原生改造实战:Spring Boot 应用的 Kubernetes 迁移全指南
  • 看门狗的驱动原理