系列文章
〇、前言
在上一篇文章最后,我们推导了出来FA模型的参数 和 的极大似然估计的解析公式。不过大家会发现参数的解析式很长,还都是矩阵运算,并且要迭代很多次,计算机的运算速度会比较慢。同时对于很多实际模型,它的后验分布无法直接计算或者形式相当复杂,因此需要某些形式的近似方法。
为了解决EM算法的局限,我们可以采用Gibbs采样算法来求解。
一、Gibbs采样
吉布斯采样是统计学中用于马尔科夫蒙特卡洛(Markov chain Monte Carlo, MCMC)的一种算法,用于在难以直接采样时从某一多变量概率分布中近似抽取样本序列。
虽然吉布斯采样算法已经是MCMC最首选的方法,但在往下看之前如果有对MCMC不了解的同学,强烈建议先学习了解一下MCMC方法中的各种算法的演变过程,能帮助大家理解Gibbs是咋来的。
我在这篇文章中就不推导Gibbs采样了,因为要涉及到的知识有点多,我怕我讲得不好,我只给出采样步骤,重点讲Gibbs怎么求解FA模型。
这里强烈推荐 刘建平大佬的blog,从一看到四。
吉布斯采样算法的步骤其实挺简单:
具体理解就是:
有 个随机变量,他们会服从一个联合分布 ,如果我想对这 个随机变量采样采 组,我们只需要在条件分布 中采样,对随机变量 采样得到 之后就更新之前的 ,每个随机变量 都采了一次样后,我们就能得到一组样本,迭代 次采样后就能得到 组样本,越往后面的那一批样本会更加接近真实的联合分布。Gibbs采样的思想简单来说就是固定其中 个随机变量,只看剩下的那一个随机变量,在这个变量上采样,然后对 个变量都这样做。再通俗的讲就是这么多变量全都一起考虑难度太大,那我就不管其他的,只对其中一个下手,对每个变量都这样做。
二、FA模型的Gibbs采样算法求解
假设有独立同分布(i.i.d)的样本集 ,其中每个 都是一 维空间中的向量,同上一篇文章,给出因子分析的数学模型如下:
首先选择模型的无信息先验分布:
进一步假设:
注意:上式中的无信息先验分布并不是随意选取的,一般可根据共轭分布法则(conjugate distribution),即最后使得参数的先验分布和后验分布数学表达形式相同。此处, 表示伽马分布,是高斯分布中关于方差的共轭先验分布(正态分布的方差σ²的共轭先验分布为倒伽马分布,假定X~gamma,则1/X~InvGamma(倒伽马),也就是伽马的倒数,所以上面都是-1次方)。
以上分布中的参数如 称为超参数(hyperparameter),并且都是已知量。
我们假设变量之间都是互相独立的,得模型的联合概率分布(公式很长,是连乘):
由上式求边缘分布,积分得:
上式表明 服从高斯分布,即:
( 叫提议分布(proposal distribution),也就是上面的边缘分布),其中:
以此类推我们可以得到 的:
由上式得:
能得到 的:
能得到 的:
能得到 的:
得到了各条件后验分布函数的参数表达形式后,下面给出由Gibbs采样算法推导 FA模型的具体步骤:
(1)根据样本数据与参数的联合概率密度,求出各参数的条件后验(此处不必计算出概率分布的归一化常数),并找出该分布对应参数的具体表达形式,即上面的公式。
(2)初始化模型参数并确定采样次数,利用具体表达形式进行Gibbs采样。
(3)在马尔可夫链中等间隔(尽可能保证采样值之间是独立的)保存参数的采样值,采样结束后,对这些采样值取平均,即为所求参数的平均值。
三、总结
与EM算法这种确定性(deterministic)的近似算法不同的是,吉布斯采样算法是一种具有随机性(stochastic)的近似算法。它可以近似计算复杂的后验分布,能很好地应用到贝叶斯统计推断中。这种方法通过大量的样本估计真实的后验,因为算法中涉及采样,所以近似结果带有一定的随机性。即在相同的初始条件下,最终得到的结果可能有所不同。
如果迭代次数趋于无穷大,理论上它可以获得确定的解,即可以得到参数真实后验分布的采样值,有限的迭代次数决定了最终得到的只能是一个近似解。