泛涵与变分法
函数通常可以表示为,指自变量到因变量的映射关系。而泛函可以表示为,表示为函数的函数到一实数的映射关系,称为的泛函。微积分的方法用于求函数的极值,变分法则是用于求使得泛函取得极值的函数。常见的泛函是熵,,其中,为一离散随机变量的概率密度函数。变分法则用于解决最大熵问题,寻找一个概率分布,使得这个概率分布的熵最大。泛函和变分法在贝叶斯模型里也有应用。
变分推断
假设在一个贝叶斯模型中,为一组观测变量,为一组隐变量,参数也看作随机变量,包含于中,一个最重要的问题就是计算后验概率,即条件概率。
在GMM中,还算比较好计算,隐变量是一维离散变量,
其中,上标为的参数均为之前一步中求得的参数,是已知的,详情可见笔者的上一篇文章GMM高斯混合模型。
如果隐变量是连续或高维的,可能达到指数级的计算复杂度。这时候就需要使用变分推断的方法去近似条件概率。变分推断是变分法在推断问题中的应用,寻找一个简单分布来近似,可以写成一个泛函优化的问题,即求使得泛函取极值的函数。
其中是候选的概率分布族,在这个式子中,又涉及到了的求解问题,这不兜了一个圈子回来了吗?不急,这个式子只是一个基本思想,接下来需要将其转换为好求解的式子。在笔者的EM算法及公式推导这篇文章中,已经证明了
在这里,参数被视为随机变量,包含于隐变量中。这样就可以将问题转换为
为方便之后的公式推导。将这里的ELBO写成泛函的形式
基于平均场假设的变分推断
当为平均场分布族时,上述的变分推断就是基于平均场假设的变分推断。平均场分布族中,隐变量可以分拆为多组相互独立的变量,概率密度可以分解为
其中是的子集,可以是单变量,也可以是多元变量。接着看的第一项,将表达式代入,同时分离出。
其中,是关于的未归一化的分布,有
的第二项可写为
再次将其展开,写成多个积分相加的形式,看其中的第一项(是的缩写)
所以,的第二项又可写为
最终,可以写为
因此最大化等价于最小化,即找到了最优的简单分布。
这样,关于的计算依赖于其他的,对于每一个,采用坐标上升的方法,固定其余,依次求解,直到求出局部最优解。
随机梯度变分推断(SGVI)
优化方法除了坐标上升,还有梯度上升,这里将阐述通过梯度上升来得到变分推断的另一种算法。
首先假设,即与相关联。于是可以将泛函优化转换为函数优化,即
其中,接着对该式中的进行梯度计算
上述式子将期望写成积分的形式,同时交换求导和积分次序,最后展开的第二项又可写为
因此,等于展开后的第一项,即
最终的表达式是一个期望,这个期望可以采用蒙特卡洛采样来近似,得到梯度后,使用梯度上升的方式来得到参数的梯度,即
从里采样,得到样本
但是在采样过程中,求和符号中有一个对数项,直接采样的话,如果采到接近于 0的样本点会造成这个对数值非常的不稳定,也就是说直接采样的方差很大,为了解决方差很大的问题,可以采用重参数化技巧(Reparameterization)。
取,对,存在,这样就将的随机性转移到上,
最终采用蒙特卡洛采样来近似,即从中采样得到,然后再计算期望,得到梯度后利用式子
来更新参数,从而求出最优的后验概率的近似分布。
参考资料
神经网络与深度学习https://nndl.github.io/白板推导之变分推断https://www.bilibili.com/video/BV1aE411o7qd?p=70&vd_source=ae87fac745d78042d477bc11e9bf41b0