变分推断的本质:用一个简单分布拟合另一个复杂分布

656 阅读2分钟

本文正在参加 人工智能创作者扶持计划

变分推断是变分自编码器(Variational Auto Encoder, VAE)的理论基础。后者在人工智能领域有着广泛应用,如图像生成、协同过滤.

本文介绍变分推断的基本概念、证据下界(ELBO)、理论推导.

背景

  • 变分推断(Variational Inference, VI)主要用于解决大数据场景下的隐变量后验分布估计问题(在数据量较小时,可以使用MCMC方法)。给定一个数据集中的观测值XX和隐变量ZZ,隐变量ZZ会影响观测值XX的取值,即ZXZ\to X。将ZZXX当作随机变量,我们希望求得对ZZ的后验分布p(ZX)p(Z|X)的估计,记作q(Z)q(Z)
  • 变分推断的本质是选取一个恰当的分布族L\mathcal{L},从该分布族中选取一个最好的q(Z)q(Z),使得q(Z)q(Z)p(ZX)p(Z|X)尽可能接近。

两个分布函数的距离度量

  • VI中使用KL散度(Kullback & Leibler divergence)度量q(Z)q(Z)p(ZX)p(Z|X)的相似性,即
KL(q(Z)p(ZX))=EZ[logq(Z)p(ZX)]KL(q(Z)||p(Z|X)) = E_Z\left[\log\frac{q(Z)}{p(Z|X)}\right]
  • 那么最优的后验分布估计为:
q(Z)=argminq(Z)LKL(q(Z)p(ZX))q^*(Z) = {\arg\min}_{q(Z)\in\mathcal{L}}KL(q(Z)||p(Z|X))

证据下界(ELBO)的引入

  • 然而上式中的p(ZX)p(Z|X)是难以计算的:
p(ZX)=p(Z,X)p(X)=p(Z,X)+p(XZ)p(Z)dZp(Z|X) = \frac{p(Z,X)}{p(X)}=\frac{p(Z,X)}{\int_{-\infty}^{+\infty}p(X|Z)p(Z)dZ}
  • 计算难点主要在于观测变量的边缘分布p(X)p(X)(也被称作证据(evidence))。如果隐变量维度很高,那么计算开销将非常大。为此,需要在KL(q(Z)p(ZX))KL(q(Z)||p(Z|X))动一些手脚:
KL(q(Z)p(ZX))=EZ[logq(Z)p(ZX)]=EZ[logq(Z)]EZ[logp(ZX)]=EZ[logq(Z)]EZ[logp(Z,X)]+EZ[logp(X)]=ELBO(q)+EZ[logp(X)]KL(q(Z)||p(Z|X)) = E_Z\left[\log\frac{q(Z)}{p(Z|X)}\right]\\ = E_Z[\log q(Z)] - E_Z[\log p(Z|X)]\\ = E_Z[\log q(Z)] - E_Z[\log p(Z,X)] + E_Z[\log p(X)] \\ = - ELBO(q) + E_Z[\log p(X)]
  • 由上面的变换可知,由于KL(q(Z)p(ZX))KL(q(Z)||p(Z|X))取期望的对象是ZZ,这对于证据p(X)p(X)是没有关系的!因此我们只需要计算式中ELBO(q)ELBO(q),将其最大化,即能最小化KL(q(Z)p(ZX))KL(q(Z)||p(Z|X))
ELBO(q)=EZ[logp(Z,X)]EZ[logq(Z)]ELBO(q) = E_Z[\log p(Z,X)] - E_Z[\log q(Z)]
q(Z)=argmaxq(Z)LELBO(q)q^*(Z) = {\arg\max}_{q(Z)\in\mathcal{L}}ELBO(q)

ELBO的性质

  • 我们对ELBO做一些变换:
ELBO(q)=EZ[logp(Z,X)]EZ[logq(Z)]=EZ[logp(XZ)]+EZ[logp(Z)]EZ[logq(Z)]=EZ[logp(XZ)]KL(q(Z)p(Z))ELBO(q) = E_Z[\log p(Z,X)] - E_Z[\log q(Z)] \\ = E_Z[\log p(X|Z)] + E_Z[\log p(Z)] - E_Z[\log q(Z)] \\ = E_Z[\log p(X|Z)] - KL(q(Z)||p(Z))
  • 可见ELBO由观测变量的后验分布隐变量估计分布与其先验分布的KL散度两部分组成(注意KL散度是非对称的)。因此最大化ELBO(q)ELBO(q)相当于同时做以下两件事:
    1. 最大化观测变量的后验分布对数期望
    2. 使隐变量估计分布与其先验分布尽量接近
    • 是不是有点贝叶斯推断的感觉了?
  • ELBO 的另一个性质来源于它的名字,即证据(的)下界:
logp(X)=EZ[logp(X)]=KL(q(Z)p(ZX))+ELBO(q)ELBO(q) \log p(X) = E_Z[\log p(X)] \\ = KL(q(Z)||p(Z|X)) + ELBO(q) \\ \geq ELBO(q)
  • 关键点在于KL()0KL(\cdot)\geq 0。VI的目标是最大化ELBO,而ELBO最大不会超过logp(X)\log p(X)。个人认为这一结论说明,观测数据本身质量好坏决定了模型的拟合效果。因此数据在VI(乃至机器学习)中扮演极端重要的角色。

补充:KL()0KL(\cdot)\geq 0 的证明

  • 对于任意的两个概率密度函数p(x)p(x)q(x)q(x)
KL(q(x)p(x))=Eq(x)[logq(x)p(x)]KL(q(x)||p(x)) = E_{q(x)}\left[\log \frac{q(x)}{p(x)}\right]
  • 证明的核心在于对log函数(凹函数)使用Jensen不等式。证明如下:
Eq(x)[logq(x)p(x)]=Eq(x)[logp(x)q(x)] E_{q(x)}\left[\log \frac{q(x)}{p(x)}\right] = - E_{q(x)}\left[\log \frac{p(x)}{q(x)}\right]
logEq(x)[p(x)q(x)](Jensen 不等式)\geq -\log E_{q(x)}\left[\frac{p(x)}{q(x)}\right]\quad\text{(Jensen 不等式)}
=log+p(x)q(x)q(x)dx= -\log\int_{-\infty}^{+\infty}\frac{p(x)}{q(x)}\cdot q(x) dx
=log+p(x)q(x)q(x)dx= -\log\int_{-\infty}^{+\infty}\frac{p(x)}{q(x)}\cdot q(x) dx
=log+p(x)dx= -\log\int_{-\infty}^{+\infty}p(x)dx
=0(概率密度函数的归一化性质)= 0 \quad\text{(概率密度函数的归一化性质)}

参考文献

[1] David M. Blei, Alp Kucukelbir, & Jon D. McAuliffe (2016). Variational Inference: A Review for Statisticians. CoRR, abs/1601.00670.

本文正在参加 人工智能创作者扶持计划