假设在一个贝叶斯模型中, x x x为一组观测变量, z z z为一组隐变量(参数也看做随机变量,包含在 z z z中),则推断问题为计算后验概率密度 P = ( z ∣ x ) P=(z|x) P=(z∣x)。根据贝叶斯公式,有:
p ( z ∣ x ) = p ( x , z ) p ( x ) = p ( x , z ) ∫ p ( x , z ) d z p(z|x)=\frac{p(x,z)}{p(x)}=\frac{p(x,z)}{\int p(x,z)dz} p(z∣x)=p(x)p(x,z)=∫p(x,z)dzp(x,z)
但是在实际应用中,可能由于积分没有闭式解,或者是指数级的计算复杂度等原因,导致计算上面公式中的积分往往是不可行的。变分推断就是用来解决这个问题的。
变分推断是变分法在推断问题中的应用,既然无法直接求得后验概率密度 p ( z ∣ x ) p(z|x) p(z∣x),那我们可以寻找一个简单的分布 q ∗ ( z ) q^*(z) q∗(z)来近似后验概率密度 p ( z ∣ x ) p(z|x) p(z∣x),这就是变分推断的思想。借此,我们将推断问题转换为一个泛函优化问题:
q ∗ ( z ) = arg min q ( z ) ∈ Q K L ( q ( z ) ∣ ∣ p ( z ∣ x ) ) (1) q^*(z)=\arg\min_{q(z)\in Q}KL(q(z)||p(z|x))\tag{1} q∗(z)=argq(z)∈QminKL(q(z)∣∣p(z∣x))(1)
其中 Q Q Q为候选的概率分布族。但是又出现了一个新的问题:我们已经知道后验概率密度 p ( z ∣ x ) p(z|x) p(z∣x)难以计算,所以上式中的KL散度本身也是无法计算的!这时,需要借助于证据下界ELBO。
ELBO,全称为 Evidence Lower Bound,即证据下界。这里的证据指数据或可观测变量的概率密度。
假设 x = x 1 : n x=x_{1:n} x=x1:n表示一系列可观测数据集, z = z 1 : m z=z_{1:m} z=z1:m为一系列隐变量(latent variables)。则可用 p ( z , x ) p(z,x) p(z,x)表示联合概率, p ( z ∣ x ) p(z∣x) p(z∣x)为条件概率, p ( x ) p(x) p(x)为证据。
那么,贝叶斯推理需要求解的就是条件概率,即: p ( z ∣ x ) = p ( x , z ) p ( x ) p(z|x)=\frac{p(x,z)}{p(x)} p(z∣x)=p(x)p(x,z)
(1)式中的KL散度可以表示为 K L ( q ( z ) ∣ ∣ p ( z ∣ x ) ) = ∫ q ( z ) log q ( z ) p ( z ∣ x ) d z KL(q(z)||p(z|x))=\int q(z)\log\frac{q(z)}{p(z|x)}dz KL(q(z)∣∣p(z∣x))=∫q(z)logp(z∣x)q(z)dz其中, x x x为可观测数据集, z z z为未知变量,下面将公式继续变形:
∫ q ( z ) log q ( z ) p ( z ∣ x ) d z = − ∫ q ( z ) log p ( z ∣ x ) q ( z ) d z = − ∫ q ( z ) log p ( x , z ) q ( z ) p ( x ) d z = − ∫ q ( z ) log p ( x , z ) d z + ∫ q ( z ) log q ( z ) d z + ∫ q ( z ) log p ( x ) d z
则有 K L ( q ( z ) ∣ ∣ p ( z ∣ x ) ) = − L ( q ( z ) ) + log p ( x ) KL(q(z)||p(z|x))=-L(q(z))+\log p(x) KL(q(z)∣∣p(z∣x))=−L(q(z))+logp(x)从这个公式可以发现, log p ( x ) \log p(x) logp(x)不涉及参数(数据似然),因此在最小化 K L ( q ( z ) ∣ ∣ p ( z ∣ x ) ) KL(q(z)||p(z|x)) KL(q(z)∣∣p(z∣x))时可以忽略。那么,最小化 K L ( q ( z ) ∣ ∣ p ( z ∣ x ) ) KL(q(z)||p(z|x)) KL(q(z)∣∣p(z∣x))便转化成了最大化 L ( q ( z ) ) L(q(z)) L(q(z))。
因为 K L ( q ( z ) ∣ ∣ p ( z ∣ x ) ) ≥ 0 KL(q(z)||p(z|x))\geq 0 KL(q(z)∣∣p(z∣x))≥0,即: − L ( q ( z ) ) + log p ( x ) ≥ 0 -L(q(z))+\log p(x)\geq 0 −L(q(z))+logp(x)≥0进而可以得到: log p ( x ) ≥ L ( q ( z ) ) \log p(x)\geq L(q(z)) logp(x)≥L(q(z))因此,可以将 L ( q ( z ) ) L(q(z)) L(q(z))堪称 log p ( x ) \log p(x) logp(x)的下界,这个下界也称之为ELBO(evidence lower bound),那么最小化 K L ( q ( z ) ∣ ∣ p ( z ∣ x ) ) KL(q(z)||p(z|x)) KL(q(z)∣∣p(z∣x)),可以看成最大化下界的问题。
另外,从公式中可以看到,KL散度是 L ( q ( z ) ) L(q(z)) L(q(z))与 log p ( x ) \log p(x) logp(x)的误差,当然误差越小越好。
根据以上结果,最新的目标函数转化成了 q ∗ ( z ) = arg max q ( z ) ∈ Q L ( q ( z ) ) = arg max q ( z ) ∈ Q ∫ z q ( z ) log p ( x , z ) d z ⏟ ( a ) − ∫ z q ( z ) log q ( z ) d z ⏟ ( b ) (2)
在变分推断中,候选分布族 Q Q Q的复杂性决定了优化问题的复杂性。一个通常的选择是平均场分布族,即 z z z可以拆分成多组相互独立的变量,有: q ( z ) = ∏ i = 1 M q i ( z i ) (3) q(z)=\prod_{i=1}^Mq_i(z_i)\tag{3} q(z)=i=1∏Mqi(zi)(3)其中 z i z_i zi是隐变量的子集,可以是单变量,也可以是一组多元变量。
下面我们分布(3)把将代入(2)中的(a)和(b),看看 L ( q ( z ) ) L(q(z)) L(q(z))最后的模样,其中假设我们想先求 q j ( z j ) q_j(z_j) qj(zj),将其它组的 q ∖ j ( z ∖ j ) q_{\setminus j}(z_{\setminus j}) q∖j(z∖j)当作常量:
我们首先求解(a):
( a ) = ∫ z q ( z )