变分推断
变分推断
资料
http://blog.huajh7.com/2013/03/06/variational-bayes/
PRML Chapter 10
MLAPP Chapter 21
背景知识
熵
\[H[p] = - \int p(x) \ln{p(x)} dx\]相对熵, KL散度
\[KL(q || p) = - \int q(x) \ln{\frac{q(x)}{p(x)}} dx\]问题
已知数据模型和数据集 $ X = \{ x_1, \dots, x_n \} $, 模型的参数 $Z = \{ z_1, \dots, z_m \} $ 未知, 我们希望使用后验分布$p(Z|X)$.
- 一是
$p(Z|X)$
可能非常难求,而且不好做后续的处理. - 二是$p(Z,X)$可能会很好求.
解决方案
求解一个近似$p(Z|X)$的分布$q(Z)$, $q(Z)$取自一个方便处理的分布家族,比如指数家族.使用$q(Z)$代替$p(Z|X)$.
两点问题:
- 如何比较两个分布是否相近. 相对熵.
- 如何从分布家族中选取一个接近$p(Z|X)$. 取相对熵最小的分布,转化成最优解问题. \(\min_{Z}{KL(q(Z)||p(Z|X))}\)
最优化问题
先对目标函数做一些转换,这个转换把最优化问题从$p(Z|X)$
转换到$p(Z,X)$上.
让 $L(q) = \int q(Z) \ln \frac{p(Z,X)}{q(Z)} dZ$, 通过上面的式子我们可以得到
\[\ln p(X) = KL(q(Z)||p(Z|X)) + L(q)\]因为 $\ln p(X)$ 是常数, 所以$\min KL(q(Z)||p(Z|X))$
,可以转化成$\max L(q)$.
分解q(Z)
这里做一个假定, 假定q分布是对于Z可分解的, 即
\[q(Z) = \prod_{i=1}^{M} q_i(z_i)\]这里每个$q_i$都可以是不同形式的函数.
然后这里的做法是, 对每个$i$, 固定住其他变量, 对$q_i$求最优值. 然后循环到收敛.
先来看一下分解之后的$L(q)$, 这里用$q_j$表示$q_j(z_j)$
\[\begin{eqnarray} L(q) &=& \int q(Z) \ln \frac{p(Z,X)}{q(Z)} dZ \\ &=& \int \prod_{j=1}^{M} q_j \ln \frac{p(Z,X)}{\prod_{j=1}^{M} q_j} dZ \\ &=& \int \prod_{j=1}^{M} q_j ( \ln p(Z,X) - \sum_{k=1}^{M} \ln q_k) dZ \\ \end{eqnarray}\]到了这里之后,我们开始只考虑单个$q_j$对$L(q)$的影响,即把非$q_j$项都先积分,最后留下$q_j$.
\[\begin{eqnarray} L(q) &=& \int \prod_{j=1}^{M} q_j ( \ln p(Z,X) - \sum_{k=1}^{M} \ln q_k) dZ \\ &=& \int q_j \{ \int \prod_{i \neq j} q_i ( \ln p(Z,X) - \sum_{k=1}^{M} \ln q_k ) dz_i \} dz_j\\ &=& \int q_j \{ \int \prod_{i \neq j} q_i \ln p(Z,X) dz_i \} dz_j - \int \prod_i q_i \sum_k \ln q_k dz_i \\ \end{eqnarray}\]我们先定义一个新分布 $p_j(z_j)$, 满足
\[\begin{eqnarray} \ln p_j(z_j) &=& \int \prod_{i \neq j} q_i \ln p(Z,X) dz_i + const \\ &=& \mathrm{E}_{i \neq j} [\ln p(Z, X)] + const \end{eqnarray}\]这里的const主要为了把$p_j(z_j)$的和凑成1,normalization,不需要显式考虑.
其次注意到 $\int q_i dz_i = 1$, 可以得到
\[\int \prod_i q_i \ln q_j dZ = \int q_j \ln q_j dz_j\]代入原式得到
\[\begin{eqnarray} L(q) &=& \int q_j \ln p_j dz_j - \sum_i \int q_i \ln q_i dz_i \\ &=& \int q_j \ln p_j dz_j - \int q_j \ln q_j dz_j - \sum_{i \neq j} \int q_i \ln q_i dz_i \\ &=& \int q_j \ln p_j dz_j - \int q_j \ln q_j dz_j + const \\ &=& \int q_j (\ln p_j - \ln q_j) dz_j + const \\ &=& \int q_j \ln \frac{p_j}{q_j} dz_j + const \\ &=& -KL(q_j || p_j) + const \\ \end{eqnarray}\]分解分布之后,$\sum_{i \neq j} \int q_i \ln q_i dz_i$这一项相对于$z_j$是const.
最大化$L(q)$
我们成功得到 $L(q) = -KL(q_j || p_j) + const$, 那么最大化$L(q)$就等于最小化$KL(q_j || p_j)$. 我们直接让$q_j = p_j$使得$KL(q_j || p_j)$取到最小值$0$.
\[\ln q_j(z_j) = \mathrm{E}_{i \neq j} [\ln p(Z, X)] + const\]