因子分析(三)- VB算法求解

系列文章

因子分析(〇)- FA数学模型

因子分析(一)- EM算法求解

因子分析(二)- Gibbs采样算法求解

因子分析(三)- VB算法求解

〇、前言

上一篇文章中,我们讲到EM算法的一些局限性,提出了Gibbs采样算法求解的方法,在这篇文章中,我们再提出另一种近似求解算法:变分贝叶斯算法(variational bayesian,VB算法)。

一、变分法

先简单地讲讲泛函:数可以看成是一种映射关系,即给定一个变量的值作为输入,就会返回该函数的值作为输出。而函数的导数用来描述输出值随输入值变化的变化快慢程度。相应的也可以把泛函看成是一种映射关系,即给定一个函数作为输入,返回泛函的数值(是一个数)作为输出

对泛函不熟悉的同学可以看 这篇blog,泛函还是比较容易理解的,这篇文章不重点讲泛函,重点讲变分贝叶斯如何应用到FA中。

泛函的形式有很多,通常表示为如下的积分形式:

[公式]

上式中 [公式] 称为变量函数[公式] 是它的导数。

变分法是数学领域中用来处理泛函的一种常用方法,和处理函数的普通微积分相对。这种方法最终寻求的是使得泛函取极值的极值函数。变分法的关键定理在于欧拉-拉格朗日方程,它对应于泛函的临界点,在寻找函数的极值时,通过对一个解附近的微小变化的分析给出一个近似值。

对于上式的泛函,它的欧拉-拉格朗日方程是:

[公式]

它是泛函 [公式] 取得极小值的必要条件的微分形式。

具体的证明可以看 这篇blog,不在此赘述。

二、VB算法

假设给定某模型 [公式] 和一组观测数据 [公式] ,要求求出模型中不可观测变量 [公式] 的后验分布 [公式] ,但其实通常情况下这种后验分布函数的形式相当复杂(比如说em算法中推导出来的公式),要计算出该后验分布可能需要消耗大量的时间和资源。因此我们希望在某个较小的误差范围内,用数学形式相对简单的 [公式] 来近似 [公式] ,并且希望这两个随机分布之间的距离最小[公式] 的分布形式可以自由给出,只要它足够简单。但是却不可能每次都自主确定一个与 [公式] 接近且形式简单的 [公式] ,这样已不具备可操作性,所以需要找到一种通用形式帮助简化问题。

这种通用形式就是根据平均场理论,对模型参数做出后验条件独立(posterior independence)的假设。在统计物理学中,平均场理论可以被理解为系统中个体的局部相互作用能够产生宏观层面较为稳定的行为。

平均场理论的一个通俗例子就是:你们班在早读,在这个复杂系统中虽然每个人的声音有大有小,但这么多人的声音混在一起的时候(个体的局部相互作用),你在这个教室的每个地方听到的声音基本都是相同的(宏观层面较为稳定)。

根据平均场理论,分布 [公式] 可以因式分解为:

[公式]

上式中对不可观测变量的划分并不是一个变量对应一个划分,可以视情况而定。在某些情况下,将两三个变量划分在一起可以更加方便处理。

前面说到,我们希望 [公式][公式] 之间的距离最小,但怎么定义这个距离呢?在统计学中相对熵被用来描述两个随机分布之间的距离,这种描述随机分布距离的度量也常被称为KL散度。两个概率密度函数 [公式][公式] 之间的相对熵定义为( [公式] 为离散变量的情况,若 [公式] 为连续变量则将求和号换成积分号):

[公式]

KL散度有如下性质:

(1) [公式] (KL散度不是一个对称量)。

(2) [公式] ,当且仅当 [公式] 时等号成立。

(3)不满足三角不等式。

由以上对于KL散度的定义可以写出近似分布 [公式] 与真实后验分布 [公式] 的KL散度为:

[公式]

即:

[公式]

其中,泛函 [公式]

[公式]

我们可以发现 [公式] ,所以:

[公式]

那么 [公式] 可以看成是 [公式] 的下界,也就是它的边缘似然函数,也称为证据下界(Evidence Lower Bound,ELOB),通过最大化 [公式] 就能逼近 [公式]

或者从另一个方向来思考,对于给定的数据 [公式] , [公式] 是固定的,要想使KL散度最小( [公式][公式] 距离最小),只要让 [公式] 取最大值就可以了:

进一步可以将 [公式] 写成如下形式:

[公式]

由平均场理论 [公式] ,对于上式左边项

[公式]

这里需要说明一下,对于 [公式] ,我们定义 [公式] ,所以 [公式] 。 令 [公式],而[公式] 就是 [公式] 的归一化常数。此处的变换需要注意的是记号 [公式] ,而不是代表对向量的微分。

由平均场理论再考虑右边项:

[公式]

根据信息熵的定义: [公式] ,右边项能改写成信息熵的形式,那么 [公式] :

[公式]

对于泛函 [公式] ,以及它的边界条件 [公式] ,要求它的极值,我们可以利用泛函求极值的必要条件(泛函的一级变分等于零)和拉格朗日乘数法:

[公式]

对于上式直接求解将得到Gibbs分布,而且略显复杂。那么我们还能注意到,泛函 [公式] 中的 [公式] ,要想让 [公式] 最大,只需让 [公式] 即可。

重点:这里必须要讲清楚,网上没有blog解释清楚为什么。很多人会有疑惑(包括我自己)为什么让 [公式] 就OK了,不用考虑信息熵吗?原因在于 KL散度和信息熵的变量是两个独立开的不同的划分,我们在迭代处理样本的时候只处理 [公式] 划分(KL散度联系着两个函数,比信息熵更有处理意义),信息熵那部分是 [公式] 划分,相对于 [公式] 划分来说就是个常数,所以只看KL散度。

[公式] ,即:

[公式]

即:

[公式]

这样就可以得出VB算法的具体步骤:

(1)初始化 [公式] ,可随机取值;

(2)在第 [公式] 步,计算 [公式] 的边缘密度;

(3)在第 [公式] 步,计算 [公式] 的边缘密度;

(4)反复执行第2和第3步,直到 [公式][公式] 稳定或稳定在某个小范围内;

(5)最后得到 [公式]

根据平均场理论可知,反复执行第2步和第3步,使得每个划分之间充分相互作用,最终每个划分都将达到一个稳定状态。

三、FA模型的VB算法求解

此处模型形式和参数假设与Gibbs采样算法求解(没看过这文章的同学可以点链接)中的完全相同,所以这里直接给出各参数变量的边缘密度函数。

[公式] 的:

[公式]

[公式]

[公式] 的:

[公式]

[公式]

[公式] 的:

[公式]

[公式] 的:

[公式]

[公式] 的:

[公式]

得到了各近似后验分布函数的参数表达形式后,初始化模型中的未观测变量,与Gibbs采样算法中的参数初始化不同的是,VB算法需要对加载矩阵和隐变量的平方阵进行初始并在算法的每一轮循环中都对其进行更新。设定好算法的循环次数后,就可以开始对各个变量进行更新,最后对其依次取均值作为模型参数的值。

四、总结

变分贝叶斯算法可以看作是EM 算法的一个扩展,因为两种算法都是用单个可能性最大的参数值来代替完全贝叶斯估计,另外变分贝叶斯算法也是通过一组等式不断迭代来获得最优解。因为该方法中涉及到对泛函求极值的过程,所以与期望最大化算法类似,这种算法最终得到的依然只是一个局部最优解,而非全局最优解。

到此因子分析系列就告一段落了,本人水平有限,若有纰漏,恳请大佬指正。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值