Understanding Diffusion Models: A Unified Perspective(二):公式46的推导
- 文章概括
- 要推导的公式
- 1. 条件概率的定义
- 2. 联合分布的分解
- 2.1 联合分布的定义
- 2.2 为什么可以这样分解?
- 2.3 具体意义
- 3. 分母的分解:边际化规则
- 4. 最终公式的推导
- 5. 为什么分母可以表示为 q ( x t − 1 ∣ x 0 ) q(x_{t-1}|x_0) q(xt−1∣x0)
- 6. 公式 (46) 的最终形式
- 7. 逐步推导总结
文章概括
引用:
@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(xt∣xt−1,x0)=q(xt−1∣x0)q(xt−1∣xt,x0)q(xt∣x0).(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(A∣B)=q(B)q(A∩B),其中 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(A∣B,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(xt∣xt−1,x0) 表示在 x t − 1 x_{t-1} xt−1 和 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(xt∣xt−1,x0)=q(xt−1,x0)q(xt,xt−1,x0).(1)
2. 联合分布的分解
我们需要分解联合分布 q ( x t , x t − 1 , x 0 ) q(x_t, x_{t-1}, x_0) q(xt,xt−1,x0)。以下是基础逻辑:
2.1 联合分布的定义
联合分布 q ( x t , x t − 1 , x 0 ) q(x_t, x_{t-1}, x_0) q(xt,xt−1,x0) 表示 x t , x t − 1 , x 0 x_t, x_{t-1}, x_0 xt,xt−1,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,xt−1,x0)=q(xt−1∣xt,x0)q(xt∣x0).(2)
这一步基于条件概率的定义:
- q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t, x_0) q(xt−1∣xt,x0):在 x t x_t xt 和 x 0 x_0 x0 已知的条件下, x t − 1 x_{t-1} xt−1 的分布。
- q ( x t ∣ x 0 ) q(x_t|x_0) q(xt∣x0):在 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(A∣B,C)q(B,C).
在这里,设 A = x t − 1 A = x_{t-1} A=xt−1, 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(xt−1,xt,x0)=q(xt−1∣xt,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(xt∣x0)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(xt−1,xt,x0)=q(xt−1∣xt,x0)q(xt∣x0)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,xt−1,x0)=q(xt−1∣xt,x0)q(xt∣x0).
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(xt−1∣xt,x0) 表示 x t − 1 x_{t-1} xt−1 的条件概率,再用 q ( x t ∣ x 0 ) q(x_t|x_0) q(xt∣x0) 表示 x t x_t xt 的边际分布。
-
为什么分解成这两项?
- 这是因为 q ( x t ∣ x 0 ) q(x_t|x_0) q(xt∣x0) 表示的是全局信息(全局分布)。
- 而 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t, x_0) q(xt−1∣xt,x0) 捕捉的是局部的条件关系。
3. 分母的分解:边际化规则
分母 q ( x t − 1 , x 0 ) q(x_{t-1}, x_0) q(xt−1,x0) 是 x t − 1 x_{t-1} xt−1 和 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(xt−1,x0)=∫q(xt,xt−1,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,xt−1,x0)=q(xt−1∣xt,x0)q(xt∣x0) 代入公式 (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(xt−1,x0)=∫q(xt−1∣xt,x0)q(xt∣x0)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(xt∣xt−1,x0)=∫q(xt−1∣xt,x0)q(xt∣x0)dxtq(xt−1∣xt,x0)q(xt∣x0).
现在,我们需要注意的是:
- 分子部分完全匹配公式 (46)。
- 分母部分的归一化形式也与公式 (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(xt−1∣xt,x0)q(xt∣x0)dxt 在公式 (46) 中直接用 q ( x t − 1 ∣ x 0 ) q(x_{t-1}|x_0) q(xt−1∣x0) 表示。
5. 为什么分母可以表示为 q ( x t − 1 ∣ x 0 ) q(x_{t-1}|x_0) q(xt−1∣x0)
通过边际化定义:
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(xt−1∣x0)=∫q(xt−1,xt∣x0)dxt.
进一步分解 q ( x t − 1 , x t ∣ x 0 ) q(x_{t-1}, x_t|x_0) q(xt−1,xt∣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(xt−1,xt∣x0)=q(xt−1∣xt,x0)q(xt∣x0).
1. 条件概率的链式规则
根据条件概率的定义,联合概率 q ( A , B ∣ C ) q(A, B|C) q(A,B∣C) 可以分解为: 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(A∣B,C)q(B∣C).
符号解释:
- q ( A , B ∣ C ) q(A, B|C) q(A,B∣C):表示在 C C C 已知的条件下,事件 A A A 和 B B B 同时发生的概率。
- q ( A ∣ B , C ) q(A|B, C) q(A∣B,C):表示在 B B B 和 C C C 已知的条件下,事件 A A A 的条件概率。
- q ( B ∣ C ) q(B|C) q(B∣C):表示在 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(xt−1∣x0)=∫q(xt−1∣xt,x0)q(xt∣x0)dxt.
因此,分母 q ( x t − 1 ∣ x 0 ) q(x_{t-1}|x_0) q(xt−1∣x0) 确实是公式 (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(xt∣xt−1,x0)=q(xt−1∣x0)q(xt−1∣xt,x0)q(xt∣x0).
7. 逐步推导总结
-
从条件概率的定义出发:
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(xt∣xt−1,x0)=q(xt−1,x0)q(xt,xt−1,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,xt−1,x0)=q(xt−1∣xt,x0)q(xt∣x0). -
分母的边际化:
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(xt−1,x0)=∫q(xt−1∣xt,x0)q(xt∣x0)dxt. -
最终公式的组合:
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(xt∣xt−1,x0)=q(xt−1∣x0)q(xt−1∣xt,x0)q(xt∣x0).