论文阅读的附录(七):Understanding Diffusion Models: A Unified Perspective(二):公式46的推导

Understanding Diffusion Models: A Unified Perspective(二):公式46的推导

文章概括

引用:

@article{luo2022understanding,title={Understanding diffusion models: A unified perspective},author={Luo, Calvin},journal={arXiv preprint arXiv:2208.11970},year={2022}
}
Luo, C., 2022. Understanding diffusion models: A unified perspective. arXiv preprint arXiv:2208.11970.

原文: https://arxiv.org/abs/2208.11970
代码、数据和视频:https://arxiv.org/abs/2208.11970


文章解析原文:
论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(二)


要推导的公式

目标是推导公式:
q ( x t ∣ x t − 1 , x 0 ) = q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) q ( x t − 1 ∣ x 0 ) . (46) q(x_t|x_{t-1}, x_0) = \frac{q(x_{t-1}|x_t, x_0) q(x_t|x_0)}{q(x_{t-1}|x_0)}. \tag{46} q(xtxt1,x0)=q(xt1x0)q(xt1xt,x0)q(xtx0).(46)


1. 条件概率的定义

条件概率的基本定义为:
q ( A ∣ B ) = q ( A ∩ B ) q ( B ) , 其中  q ( B ) > 0. q(A|B) = \frac{q(A \cap B)}{q(B)}, \quad \text{其中 } q(B) > 0. q(AB)=q(B)q(AB),其中 q(B)>0.
对于多个条件的情况,比如 ( q(A|B, C) ),可以扩展为:
q ( A ∣ B , C ) = q ( A , B , C ) q ( B , C ) . q(A|B, C) = \frac{q(A, B, C)}{q(B, C)}. q(AB,C)=q(B,C)q(A,B,C).

在我们的目标公式中, q ( x t ∣ x t − 1 , x 0 ) q(x_t|x_{t-1}, x_0) q(xtxt1,x0) 表示在 x t − 1 x_{t-1} xt1 x 0 x_0 x0 已知的条件下, x t x_t xt 的分布。因此:
q ( x t ∣ x t − 1 , x 0 ) = q ( x t , x t − 1 , x 0 ) q ( x t − 1 , x 0 ) . (1) q(x_t|x_{t-1}, x_0) = \frac{q(x_t, x_{t-1}, x_0)}{q(x_{t-1}, x_0)}. \tag{1} q(xtxt1,x0)=q(xt1,x0)q(xt,xt1,x0).(1)


2. 联合分布的分解

我们需要分解联合分布 q ( x t , x t − 1 , x 0 ) q(x_t, x_{t-1}, x_0) q(xt,xt1,x0)。以下是基础逻辑:

2.1 联合分布的定义

联合分布 q ( x t , x t − 1 , x 0 ) q(x_t, x_{t-1}, x_0) q(xt,xt1,x0) 表示 x t , x t − 1 , x 0 x_t, x_{t-1}, x_0 xt,xt1,x0 同时发生的概率。根据 概率链式法则(Chain Rule of Probability),联合分布可以逐步分解为条件概率的乘积:
q ( x t , x t − 1 , x 0 ) = q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) . (2) q(x_t, x_{t-1}, x_0) = q(x_{t-1}|x_t, x_0) q(x_t|x_0). \tag{2} q(xt,xt1,x0)=q(xt1xt,x0)q(xtx0).(2)

这一步基于条件概率的定义:

  • q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t, x_0) q(xt1xt,x0):在 x t x_t xt x 0 x_0 x0 已知的条件下, x t − 1 x_{t-1} xt1 的分布。
  • q ( x t ∣ x 0 ) q(x_t|x_0) q(xtx0):在 x 0 x_0 x0 已知的情况下, x t x_t xt 的边际分布。

2.2 为什么可以这样分解?

根据概率论的链式规则:
q ( A , B , C ) = q ( A ∣ B , C ) q ( B , C ) . q(A, B, C) = q(A|B, C) q(B, C). q(A,B,C)=q(AB,C)q(B,C).
在这里,设 A = x t − 1 A = x_{t-1} A=xt1 B = x t B = x_t B=xt C = x 0 C = x_0 C=x0,我们可以写成:
q ( x t − 1 , x t , x 0 ) = q ( x t − 1 ∣ x t , x 0 ) q ( x t , x 0 ) . q(x_{t-1}, x_t, x_0) = q(x_{t-1}|x_t, x_0) q(x_t, x_0). q(xt1,xt,x0)=q(xt1xt,x0)q(xt,x0).

接着,再对 q ( x t , x 0 ) q(x_t, x_0) q(xt,x0) 应用链式规则:
q ( x t , x 0 ) = q ( x t ∣ x 0 ) q ( x 0 ) . q(x_t, x_0) = q(x_t|x_0) q(x_0). q(xt,x0)=q(xtx0)q(x0).

因此:
q ( x t − 1 , x t , x 0 ) = q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) q ( x 0 ) . q(x_{t-1}, x_t, x_0) = q(x_{t-1}|x_t, x_0) q(x_t|x_0) q(x_0). q(xt1,xt,x0)=q(xt1xt,x0)q(xtx0)q(x0).

在本问题中, q ( x 0 ) q(x_0) q(x0) 是常量,不影响条件概率的形式,所以我们可以简化为:
q ( x t , x t − 1 , x 0 ) = q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) . q(x_t, x_{t-1}, x_0) = q(x_{t-1}|x_t, x_0) q(x_t|x_0). q(xt,xt1,x0)=q(xt1xt,x0)q(xtx0).

2.3 具体意义

  • 分解的直观意义:假设我们已经知道 x t x_t xt 和全局变量 x 0 x_0 x0 的值,那么我们可以首先用 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t, x_0) q(xt1xt,x0) 表示 x t − 1 x_{t-1} xt1 的条件概率,再用 q ( x t ∣ x 0 ) q(x_t|x_0) q(xtx0) 表示 x t x_t xt 的边际分布。

  • 为什么分解成这两项?

    • 这是因为 q ( x t ∣ x 0 ) q(x_t|x_0) q(xtx0) 表示的是全局信息(全局分布)。
    • q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t, x_0) q(xt1xt,x0) 捕捉的是局部的条件关系。

3. 分母的分解:边际化规则

分母 q ( x t − 1 , x 0 ) q(x_{t-1}, x_0) q(xt1,x0) x t − 1 x_{t-1} xt1 x 0 x_0 x0 的联合分布,可以通过边际化 x t x_t xt 得到:
q ( x t − 1 , x 0 ) = ∫ q ( x t , x t − 1 , x 0 ) d x t . (4) q(x_{t-1}, x_0) = \int q(x_t, x_{t-1}, x_0) dx_t. \tag{4} q(xt1,x0)=q(xt,xt1,x0)dxt.(4)

将公式 (2) 中的分解 q ( x t , x t − 1 , x 0 ) = q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) q(x_t, x_{t-1}, x_0) = q(x_{t-1}|x_t, x_0) q(x_t|x_0) q(xt,xt1,x0)=q(xt1xt,x0)q(xtx0) 代入公式 (4):
q ( x t − 1 , x 0 ) = ∫ q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) d x t . (5) q(x_{t-1}, x_0) = \int q(x_{t-1}|x_t, x_0) q(x_t|x_0) dx_t. \tag{5} q(xt1,x0)=q(xt1xt,x0)q(xtx0)dxt.(5)


4. 最终公式的推导

将公式 (5) 的分母代入公式 (3),得到:
q ( x t ∣ x t − 1 , x 0 ) = q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) ∫ q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) d x t . q(x_t|x_{t-1}, x_0) = \frac{q(x_{t-1}|x_t, x_0) q(x_t|x_0)}{\int q(x_{t-1}|x_t, x_0) q(x_t|x_0) dx_t}. q(xtxt1,x0)=q(xt1xt,x0)q(xtx0)dxtq(xt1xt,x0)q(xtx0).

现在,我们需要注意的是:

  1. 分子部分完全匹配公式 (46)。
  2. 分母部分的归一化形式也与公式 (46) 一致。

为了便于理解,分母中的积分项 ∫ q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) d x t \int q(x_{t-1}|x_t, x_0) q(x_t|x_0) dx_t q(xt1xt,x0)q(xtx0)dxt 在公式 (46) 中直接用 q ( x t − 1 ∣ x 0 ) q(x_{t-1}|x_0) q(xt1x0) 表示。


5. 为什么分母可以表示为 q ( x t − 1 ∣ x 0 ) q(x_{t-1}|x_0) q(xt1x0)

通过边际化定义:
q ( x t − 1 ∣ x 0 ) = ∫ q ( x t − 1 , x t ∣ x 0 ) d x t . q(x_{t-1}|x_0) = \int q(x_{t-1}, x_t|x_0) dx_t. q(xt1x0)=q(xt1,xtx0)dxt.

进一步分解 q ( x t − 1 , x t ∣ x 0 ) q(x_{t-1}, x_t|x_0) q(xt1,xtx0)
q ( x t − 1 , x t ∣ x 0 ) = q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) . q(x_{t-1}, x_t|x_0) = q(x_{t-1}|x_t, x_0) q(x_t|x_0). q(xt1,xtx0)=q(xt1xt,x0)q(xtx0).

1. 条件概率的链式规则

根据条件概率的定义,联合概率 q ( A , B ∣ C ) q(A, B|C) q(A,BC) 可以分解为: q ( A , B ∣ C ) = q ( A ∣ B , C ) q ( B ∣ C ) . q(A, B|C) = q(A|B, C) q(B|C). q(A,BC)=q(AB,C)q(BC).


符号解释:

  • q ( A , B ∣ C ) q(A, B|C) q(A,BC):表示在 C C C 已知的条件下,事件 A A A B B B 同时发生的概率。
  • q ( A ∣ B , C ) q(A|B, C) q(AB,C):表示在 B B B C C C 已知的条件下,事件 A A A 的条件概率。
  • q ( B ∣ C ) q(B|C) q(BC):表示在 C C C 已知的条件下,事件 B B B 的条件概率。

代入后得到:
q ( x t − 1 ∣ x 0 ) = ∫ q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) d x t . q(x_{t-1}|x_0) = \int q(x_{t-1}|x_t, x_0) q(x_t|x_0) dx_t. q(xt1x0)=q(xt1xt,x0)q(xtx0)dxt.

因此,分母 q ( x t − 1 ∣ x 0 ) q(x_{t-1}|x_0) q(xt1x0) 确实是公式 (46) 中的形式。


6. 公式 (46) 的最终形式

结合以上推导,公式 (46) 的最终形式是:
q ( x t ∣ x t − 1 , x 0 ) = q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) q ( x t − 1 ∣ x 0 ) . q(x_t|x_{t-1}, x_0) = \frac{q(x_{t-1}|x_t, x_0) q(x_t|x_0)}{q(x_{t-1}|x_0)}. q(xtxt1,x0)=q(xt1x0)q(xt1xt,x0)q(xtx0).


7. 逐步推导总结

  1. 从条件概率的定义出发
    q ( x t ∣ x t − 1 , x 0 ) = q ( x t , x t − 1 , x 0 ) q ( x t − 1 , x 0 ) . q(x_t|x_{t-1}, x_0) = \frac{q(x_t, x_{t-1}, x_0)}{q(x_{t-1}, x_0)}. q(xtxt1,x0)=q(xt1,x0)q(xt,xt1,x0).

  2. 联合分布的分解
    q ( x t , x t − 1 , x 0 ) = q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) . q(x_t, x_{t-1}, x_0) = q(x_{t-1}|x_t, x_0) q(x_t|x_0). q(xt,xt1,x0)=q(xt1xt,x0)q(xtx0).

  3. 分母的边际化
    q ( x t − 1 , x 0 ) = ∫ q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) d x t . q(x_{t-1}, x_0) = \int q(x_{t-1}|x_t, x_0) q(x_t|x_0) dx_t. q(xt1,x0)=q(xt1xt,x0)q(xtx0)dxt.

  4. 最终公式的组合
    q ( x t ∣ x t − 1 , x 0 ) = q ( x t − 1 ∣ x t , x 0 ) q ( x t ∣ x 0 ) q ( x t − 1 ∣ x 0 ) . q(x_t|x_{t-1}, x_0) = \frac{q(x_{t-1}|x_t, x_0) q(x_t|x_0)}{q(x_{t-1}|x_0)}. q(xtxt1,x0)=q(xt1x0)q(xt1xt,x0)q(xtx0).


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

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

相关文章

Airflow:解码Airflow执行日期

执行日期是Apache Airflow(用于编排复杂数据管道的开源平台)的关键概念。掌握执行日期的概念及其对工作流的影响对于构建高效、可靠和可维护的数据管道至关重要。在本实用指南中,我们将深入研究执行日期在气流中的作用,它们的目的…

探究 Facebook 隐私安全发展方向,未来走向何方?

随着社交媒体的普及,隐私和数据安全问题成为了全球关注的焦点。Facebook,作为全球最大的社交平台之一,其隐私安全问题尤其引人注目。近年来,随着用户数据泄露事件的不断发生,Facebook 不断调整其隐私政策,探…

状态模式——C++实现

目录 1. 状态模式简介 2. 代码示例 3. 单例状态对象 4. 状态模式与策略模式的辨析 1. 状态模式简介 状态模式是一种行为型模式。 状态模式的定义:状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 通俗的说就是一个对象…

Word 中实现方框内点击自动打 √ ☑

注: 本文为 “Word 中方框内点击打 √ ☑ / 打 ☒” 相关文章合辑。 对第一篇增加了打叉部分,第二篇为第一篇中方法 5 “控件” 实现的详解。 在 Word 方框内打 √ 的 6 种技巧 2020-03-09 12:38 使用 Word 制作一些调查表、检查表等,通常…

DRF开发避坑指南01

在当今快速发展的Web开发领域,Django REST Framework(DRF)以其强大的功能和灵活性成为了众多开发者的首选。然而,错误的使用方法不仅会导致项目进度延误,还可能影响性能和安全性。本文将从我个人本身遇到的相关坑来给大…

ES设置证书和创建用户,kibana连接es

1、启动好es 2、进入es容器 docker exec -it es /bin/bash 3、生成ca证书 ./bin/elasticsearch-certutil ca 注:两个红方框位置直接回车 4、生成cert证书 ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 注:前两个红框直接回车&am…

一位前端小白的2024总结

目录 简要 一、迷茫点的解决 (1)前端领域该怎么学? (2)旧技术还需要学吗? (3)我该学些什么? 二、折磨点的解决 (1)学技术成果回报太慢怎么…

python爬虫 爬取站长素材 (图片)(自学6)

安装 :lxml 地址 : Installing lxml pip install lxml 或者 sudo pip install lxml 下面开始 写代码 下载 站长素材的图片 import urllib.requestfrom lxml import etreeimport osdef create_request(page):if(page 1):url "https://sc.chinaz.…

《OpenCV》——图像透视转换

图像透视转换简介 在 OpenCV 里,图像透视转换属于重要的几何变换,也被叫做投影变换。下面从原理、实现步骤、相关函数和应用场景几个方面为你详细介绍。 原理 实现步骤 选取对应点:要在源图像和目标图像上分别找出至少四个对应的点。这些对…

第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

第十五届的题目在规定时间内做出了前5道,还有2道找时间再磨一磨。现在把做的一些思路总结如下: 题1:握手问题 问题描述 小蓝组织了一场算法交流会议,总共有 50人参加了本次会议。在会议上,大家进行了握手交流。按照惯例…

2025年最新深度学习环境搭建:Win11+ cuDNN + CUDA + Pytorch +深度学习环境配置保姆级教程

本文目录 一、查看驱动版本1.1 查看显卡驱动1.2 显卡驱动和CUDA对应版本1.3 Pytorch和Python对应的版本1.4 Pytorch和CUDA对应的版本 二、安装CUDA三、安装cuDANN四、安装pytorch五、验证是否安装成功 一、查看驱动版本 1.1 查看显卡驱动 输入命令nvidia-smi可以查看对应的驱…

unity插件Excel转换Proto插件-ExcelToProtobufferTool

unity插件Excel转换Proto插件-ExcelToProtobufferTool **ExcelToProtobufTool 插件文档****1. 插件概述****2. 默认配置类:DefaultIProtoPathConfig****属性说明** **3. 自定义配置类****定义规则****示例代码** **4. 使用方式****4.1 默认路径****4.2 自定义路径**…

Web3 与数据隐私:如何让用户掌控个人信息

随着数字化时代的快速发展,互联网已经渗透到我们生活的方方面面,个人数据的收集与使用也变得越来越普遍。与此同时,数据隐私问题逐渐成为全球关注的焦点。传统的互联网平台通常将用户的数据存储在中心化的服务器上,这意味着平台拥…

SQL Server 建立每日自动log备份的维护计划

SQLServer数据库可以使用维护计划完成数据库的自动备份,下面以在SQL Server 2012为例说明具体配置方法。 1.启动SQL Server Management Studio,在【对象资源管理器】窗格中选择数据库实例,然后依次选择【管理】→【维护计划】选项&#xff0…

C++—21、C++ 中构造函数Constructors

一、什么是构造函数? 构造函数是一个特殊的方法,它在类每次实例化创建对象的时侯自动调用,用于初始化对象。 构造函数的名字必须与类名完全相同,并且没有返回类型,甚至连void也没有。 构造函数的目的是确保对象在创…

Tensor 基本操作1 unsqueeze, squeeze, softmax | PyTorch 深度学习实战

本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 目录 创建 Tensor常用操作unsqueezesqueezeSoftmax代码1代码2代码3 argmaxitem 创建 Tensor 使用 Torch 接口创建 Tensor import torch参考:https://pytorch.org/tutorials/beginn…

C# HTTP/HTTPS 请求测试小工具

这是一个使用 C# 语言开发的实用小工具,旨在帮助用户轻松测试 HTTP 和 HTTPS 请求。 该工具可以发送各种 HTTP 和 HTTPS 请求,包括但不限于 GET、POST、PUT、DELETE 等常见的请求类型。通过简洁明了的界面或命令行操作,用户可以方便地输入目…

Kyligence AI 数据智能体:首批亮相神州数码 DC·AI 生态创新中心!

近日,跬智信息(Kyligence)长期合作伙伴神州数码,其 DCAI 生态创新中心正式启幕。 作为首批生态伙伴,Kyligence AI 数据智能体也正式入驻,在这里首次亮相。 Kyligence 是国内最早推出 AI 用数产品的厂商&a…

Vue基础(2)

19、组件之间传递数据 组件与组件之间不是完全独立的&#xff0c;而是有交集的&#xff0c;那就是组件与组 件之间是可以传递数据的 传递数据的解决方案就是 props ComponentA.vue <template><!-- 使用ComponentB组件&#xff0c;并传递title属性 --><h3>…

STM32_SD卡的SDIO通信_基础读写

本篇将使用CubeMXKeil, 创建一个SD卡读写的工程。 目录 一、SD卡要点速读 二、SDIO要点速读 三、SD卡座接线原理图 四、CubeMX新建工程 五、CubeMX 生成 SD卡的SDIO通信部分 六、Keil 编辑工程代码 七、实验效果 实现效果&#xff0c;如下图&#xff1a; 一、SD卡 速读…