坐标上升变分推断(CAVI)是一种用于在选定的分布族 Q 中,找到真实后验 p(z∣x) 的最佳近似 q(z) 的技术。这通常通过最大化证据下界(ELBO)来实现。变分推断(VI)广泛基于此原理。一种常见的近似选择是均值场变分族,它假设潜在变量(或变量组)在近似中相互独立,形式为:
q(z)=∏j=1Mqj(zj)
其中 z={z1,…,zM} 是潜在变量。现在的主要问题是:如何找出最大化ELBO L(q) 的最优因子 qj(zj)?
CAVI提供了一种迭代方法。它每次针对一个因子 qj(zj) 最大化ELBO,同时保持所有其他因子 qi=j(zi) 固定不变。这类似于在分布的函数空间中应用的坐标上升优化。
推导CAVI更新规则
我们来关注优化ELBO,使其针对单个因子,例如 qj(zj)。回顾ELBO的表达式:
L(q)=Eq[logp(x,z)]−Eq[logq(z)]
代入均场假设 q(z)=∏i=1Mqi(zi):
L(q)=∫⋯∫(∏i=1Mqi(zi))(logp(x,z)−∑i=1Mlogqi(zi))dz1…dzM
我们希望找到最大化此表达式的 qj(zj),同时保持 qi=j 固定。我们把包含 qj(zj) 的项分离出来:
L(q)=∫qj(zj)(∫⋯∫(∏i=jqi(zi))logp(x,z)(∏i=jdzi))dzj−∫qj(zj)logqj(zj)dzj+常数
这里,"常数" 表示不依赖于 qj(zj) 的项。第一个积分中大括号内的项是关于所有除 qj 之外的因子对数联合分布的期望。我们将其记为 Ei=j[logp(x,z)]。因此我们有:
L(q)=∫qj(zj)Ei=j[logp(x,z)]dzj−∫qj(zj)logqj(zj)dzj+常数
令 logp~j(zj)=Ei=j[logp(x,z)]。该表达式变为:
L(q)=∫qj(zj)logp~j(zj)dzj−∫qj(zj)logqj(zj)dzj+常数
L(q)=−∫qj(zj)logp~j(zj)qj(zj)dzj+常数
L(q)=−KL(qj(zj)∣∣p~j(zj))+常数
最大化 L(q) 针对 qj(zj) 而言,等同于最小化 qj(zj) 和 p~j(zj) 之间的Kullback-Leibler(KL)散度。当 qj(zj)=p~j(zj) 时,KL散度被最小化(变为零)。因此,最优解 qj∗(zj) 满足:
logqj∗(zj)=Ei=j[logp(x,z)]+常数
对两边取指数得到:
qj∗(zj)∝exp(Ei=j[logp(x,z)])
常数项由归一化 (normalization)要求 ∫qj∗(zj)dzj=1 确定。
这是CAVI的核心更新规则。它表明,第 j 个因子 qj(zj) 的最优分布与联合概率 p(x,z) 的期望对数取指数后的结果成正比,其中期望是针对所有其他因子 qi=j(zi) 的当前分布来计算的。
CAVI算法
CAVI算法按以下步骤进行:
- 初始化: 初始化每个变分因子 qj(zj)(对于 j=1,…,M)的参数 (parameter)。这可能涉及根据为每个 qj 选择的分布形式来初始化均值、方差或其他相关参数。
- 迭代: 重复直到收敛:
- 对于每个因子 j=1,…,M:
- 计算期望 Ei=j[logp(x,z)]。这需要使用分布 qi=j(zi) 的当前参数。
- 使用以下规则更新因子 qj(zj):
qj(zj)←∫exp(Ei=j[logp(x,z)])dzjexp(Ei=j[logp(x,z)])
在实践中,这通常意味着基于计算出的期望来更新分布 qj(zj) 的参数。
- 收敛检查: 监控ELBO或变分因子的参数。当迭代间的变化低于预设阈值时停止。
CAVI算法迭代更新每个因子 qj(zj),其依据是对数联合概率的期望,该期望又取决于其他因子的当前状态,直至收敛。
共轭性的作用
CAVI的实用性通常取决于模型 p(x,z) 的结构。如果完全条件分布 p(zj∣x,z¬j)(其中 z¬j 表示除 zj 之外的所有变量)与 zj 的先验分布属于同一族,则该模型表现出条件共轭性。在这种情况下,对 qj∗(zj) 的CAVI更新通常会产生与 qj(zj) 初始选择具有相同参数 (parameter)形式的分布。
例如,如果 qj(zj) 被选择为高斯分布,并且模型结构允许,那么从期望 Ei=j[logp(x,z)] 导出的更新 qj∗(zj) 也可能是高斯分布。更新步骤随后简化为基于从其他因子 qi=j 导出的期望值(矩)来计算新的均值和方差参数。这使得实现变得容易很多,因为我们只需要跟踪和更新因子的参数(例如,均值、方差)。
CAVI的优点和缺点
优点:
- 保证收敛: ELBO在CAVI的每一步都保证会增加(或保持不变),从而确保收敛到局部最优解。
- 确定性: 与MCMC不同,CAVI是一种确定性优化算法,在相同初始化下会产生相同结果。
- 简洁性(在共轭情况下): 当条件共轭性适用时,更新通常可以通过解析方式导出,并涉及更新标准分布的参数 (parameter)。
缺点:
- 局部最优: CAVI优化ELBO,而ELBO通常是非凸的。该算法可能收敛到局部最优解,从而可能提供对真实后验的糟糕近似。不同的初始化可能导致不同的结果。
- 均场限制: 精度受到所选变分族表达能力的根本限制。均场假设(因子之间独立)对于具有强后验依赖性的模型可能过于受限。
- 解析计算: 推导更新规则需要计算 Ei=j[logp(x,z)]。这对于某些模型可能很复杂或在解析上难以处理。
- 可扩展性: 传统CAVI需要遍历整个数据集来计算全局变量更新(控制所有数据点的参数)的期望,这在大数据集上扩展性不佳。
CAVI提供对变分优化的一种基本认识。尽管它对于中等规模的问题和合适的模型结构有效,但其局限性,尤其是在可扩展性和需要解析推导方面,促使了随机变分推断(SVI)和黑盒 (black box)变分推断(BBVI)等更先进技术的发展,我们将在接下来研究这些方法。