1. 全方差公式基础解析
1.1 公式定义与直观理解
全方差公式(Law of Total Variance)是概率论中用于分解随机变量方差的重要工具。给定两个随机变量X和Y,全方差公式的数学表达式为:
Var(X) = E[Var(X|Y)] + Var(E[X|Y])
这个公式将X的总方差分解为两个部分:
- 条件方差的期望(E[Var(X|Y)]):表示在给定Y的条件下,X自身波动的平均程度
- 条件期望的方差(Var(E[X|Y])):表示由于Y的随机性导致的条件期望的变化程度
用日常生活中的例子来理解:假设X是学生的考试成绩,Y是不同学校。那么:
- 第一项对应的是各学校内部学生成绩的差异(校内差异)
- 第二项对应的是不同学校之间平均成绩的差异(校际差异)
1.2 条件版本与扩展形式
在实际应用中,我们经常需要使用带条件的全方差公式。给定第三个随机变量Z时,公式变为:
Var(X|Z) = E[Var(X|Y,Z)|Z] + Var(E[X|Y,Z]|Z)
这个扩展版本在分层模型和贝叶斯分析中特别有用。例如在DDIM中,Z代表初始状态x₀,Y代表中间状态x_t,X代表目标状态x_{t-1}。
关键理解:带条件的全方差公式允许我们在已知某些信息(Z)的情况下,进一步分解剩余的不确定性来源。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 经典示例详解
2.1 两阶段随机实验
考虑一个具体的例子来演示全方差公式的应用:
实验设计:
- 第一阶段:随机选择盒子(盒子1概率p=0.5,盒子2概率1-p=0.5)
- 第二阶段:从选中盒子中随机抽取一个球
盒子内容:
- 盒子1:数字1、2、3(均匀分布)
- 盒子2:数字4、5(均匀分布)
定义随机变量:
- Y:选择的盒子(1或2)
- X:抽到的数字
2.2 直接计算方差
首先我们直接计算Var(X):
-
计算X的分布:
P(X=1) = P(X=2) = P(X=3) = 0.5×(1/3) ≈ 0.1667
P(X=4) = P(X=5) = 0.5×(1/2) = 0.25 -
计算期望:
E[X] = 1×0.1667 + 2×0.1667 + 3×0.1667 + 4×0.25 + 5×0.25 = 3.25
E[X²] = 1×0.1667 + 4×0.1667 + 9×0.1667 + 16×0.25 + 25×0.25 ≈ 12.5833 -
计算方差:
Var(X) = E[X²] - (E[X])² ≈ 12.5833 - 10.5625 = 2.0208
2.3 使用全方差公式计算
现在我们用全方差公式来验证这个结果:
-
计算条件期望:
E[X|Y=1] = (1+2+3)/3 = 2
E[X|Y=2] = (4+5)/2 = 4.5 -
计算条件方差:
Var(X|Y=1) = [(1-2)² + (2-2)² + (3-2)²]/3 ≈ 0.6667
Var(X|Y=2) = [(4-4.5)² + (5-4.5)²]/2 = 0.25 -
计算第一项(平均条件方差):
E[Var(X|Y)] = 0.6667×0.5 + 0.25×0.5 ≈ 0.4583 -
计算第二项(条件期望的方差):
Var(E[X|Y]) = E[(E[X|Y])²] - (E[E[X|Y]])²
= (4×0.5 + 20.25×0.5) - 3.25²
= 12.125 - 10.5625 = 1.5625 -
验证总和:
Var(X) = 0.4583 + 1.5625 ≈ 2.0208 (与直接计算结果一致)
2.4 结果分析与解释
这个例子清晰地展示了全方差公式的分解效果:
- 平均条件方差(0.4583):反映了盒子内部数字的波动程度
- 条件期望的方差(1.5625):反映了不同盒子之间平均值的差异
实际应用提示:当直接计算Var(X)困难时,全方差公式提供了一种有效的分解计算方法,特别适合分层随机过程。
3. DDIM中的全方差公式应用
3.1 DDIM背景介绍
DDIM(Denoising Diffusion Implicit Models)是扩散模型的一种改进形式。在扩散模型中,数据生成过程可以看作是一个逐步去噪的马尔可夫链。DDIM通过重新设计采样过程,在保持训练目标不变的情况下,实现了更高效的采样。
关键变量定义:
- x₀:原始数据(条件变量Z)
- x_t:第t步的噪声数据(中间变量Y)
- x_{t-1}:第t-1步的数据(目标变量X)
3.2 方差分解的具体应用
在DDIM中,我们需要计算Var(x_{t-1}|x₀)。应用全方差公式:
Var(x_{t-1}|x₀) = E[Var(x_{t-1}|x_t,x₀)|x₀] + Var(E[x_{t-1}|x_t,x₀]|x₀)
-
第一项计算:
根据DDIM定义,Var(x_{t-1}|x_t,x₀) = σₜ²I
因此E[Var(x_{t-1}|x_t,x₀)|x₀] = σₜ²I -
第二项计算:
E[x_{t-1}|x_t,x₀] = μ(x_t,x₀) = √ᾱ_{t-1}x₀ + √(1-ᾱ_{t-1}-σₜ²)·(x_t-√ᾱ_t x₀)/√(1-ᾱ_t)
计算Var(μ(x_t,x₀)|x₀) = (1-ᾱ_{t-1}-σₜ²)I -
合并结果:
Var(x_{t-1}|x₀) = σₜ²I + (1-ᾱ_{t-1}-σₜ²)I = (1-ᾱ_{t-1})I
3.3 物理意义解读
这个分解在DDIM中有明确的物理意义:
- σₜ²I:表示在已知x_t情况下,采样x_{t-1}时仍然存在的随机性(内在噪声)
- (1-ᾱ_{t-1}-σₜ²)I:表示由于x_t本身的随机性导致的条件期望的波动(传播噪声)
当σₜ²=0时(确定性DDIM),所有随机性都来自第二项,即x_t的不确定性通过条件期望函数传播。
3.4 与DDPM的关系验证
在DDPM的特殊情况下:
σₜ² = (1-ᾱ_{t-1})βₜ/(1-ᾱ_t)
代入全方差公式:
Var(x_{t-1}|x₀) = [(1-ᾱ_{t-1})βₜ/(1-ᾱ_t)]I + [1-ᾱ_{t-1}-(1-ᾱ_{t-1})βₜ/(1-ᾱ_t)]I
= (1-ᾱ_{t-1})I
这与DDPM的理论结果完全一致,验证了DDIM设计的正确性。
4. 实践应用与注意事项
4.1 实现细节
在实际实现DDIM时,需要注意以下几点:
-
参数化选择:
- σₜ²的选择会影响采样过程的速度和质量
- 常见选择包括:
- σₜ² = 0(完全确定性)
- σₜ² = β̃ₜ(与DDPM一致)
- σₜ² = η·β̃ₜ(插值版本,0<η<1)
-
计算优化:
- 条件期望μ(x_t,x₀)可以重参数化加速计算
- 方差项通常可以预先计算并缓存
4.2 常见问题排查
-
数值不稳定:
- 当ᾱ_t接近1或0时,注意使用对数域计算
- 添加小的ϵ防止除零错误(如√(1-ᾱ_t + ϵ))
-
结果不一致:
- 检查ᾱ_t的累积计算是否正确
- 验证噪声调度(noise schedule)的一致性
-
采样质量差:
- 尝试调整σₜ²的值
- 检查模型是否在相同噪声调度下训练
4.3 高级应用技巧
-
自适应噪声调度:
可以根据图像内容动态调整σₜ²,在高频区域使用较大噪声,平滑区域使用较小噪声 -
混合采样:
在采样过程的不同阶段使用不同的σₜ²设置,早期使用较大噪声帮助探索,后期使用较小噪声提高质量 -
条件增强:
通过适当增大σₜ²,可以增加生成样本的多样性,同时保持整体质量
经验分享:在实际应用中,σₜ²=0.5β̃ₜ往往能取得不错的平衡,既保持了合理的生成速度,又确保了足够的样本多样性。
