一、 MCMC抽样
也许读者会觉得诧异,为什么在一本介绍主题模型的书中却看到了抽样的知识?作者是不是偏题了?
答案当然是没有。
相信你应该听说过有一门课程叫做统计学,在这门课程中,抽样占据着举足轻重的地位。当统计学的研究者们想要了解一个总体的某些参数时,他们的方案是,先去抽样获得样本,通过样本参数去估计总体参数。比如,想知道某财经高校学生们(总体)的平均月消费水平(总体参数),做法是:a.先抽样一部分样本,如从每个学院抽取20个人去调查他们的月消费水平,假设有20个学院,那么就获得了400个人(样本)的月消费水平;b.算出这400个样本的平均月消费水平(样本参数);c.可以认为该财经高校学生们的平均月消费水平估计为这400个样本的平均月消费水平。
本篇的MCMC抽样与LDA主题模型的关系类比统计学里的抽样。在LDA主题模型的参数求解中,我们会使用MCMC抽样去做。
MCMC四个字母的含义
第一个MC ,是Monte Carlo(蒙特卡洛)的首字母缩写。本篇的蒙特卡洛指一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。采样过程通常通过计算机来来实现。
蒙特卡洛此名由乌拉姆提出,事实上蒙特卡洛是摩纳哥公国的一座城市,是著名的赌场,世人称之为“赌博之国”。众人皆知,赌博总是和统计密切关联的,所以这个命名风趣而贴切、不仅有意思而且有意义。
第二个MC:Markov Chain(马尔科夫链)。这是MCMC抽样中很重要的一个思想,将会在后篇细讲。
(一)逆变换采样
刚刚有提到,蒙特卡洛指一种随机模拟方法,通常通过计算机来实现。然而,从本质上来说,计算机只能实现对均匀分布的采样。在此基础上对更为复杂的分布进行采样,应该怎么做呢?这就需要用到逆变换采样:
温故两个定义
对于随机变量 X,如下定义的函数 F:
称为X 的 累积分布函数。对于连续型随机变量 X 的累积分布函数 F(x),如果存在一个定义在实数轴上的非负函数 f(x),使得对于任意实数 x,有下式成立:
则称 f(x) 为 X 的 概率密度函数。显然,当概率密度函数存在的时候,累积分布函数是概率密度函数的积分。概率等于区间乘概率密度。
步骤
欲对密度函数 f(x) f ( x ) 采样,并得到m 个观察值,则重复下面的步骤 m 次:
1、从Uniform(0,1)中随机生成一个值,用 u 表示。
2、计算反函数 F(−1)(u) F ( − 1 ) ( u ) 的值 x,则x 就是从 f(x) f ( x ) 中得出的一个采样点。
举例:
想对一个复杂概率密度函数 f(x) f ( x ) 抽样,其概率密度形式如下:
1、求 f(x) f ( x ) 的累计分布函数 F(x) F ( x ) :
2、求 F(x) F ( x ) 的反函数: F(−1)(u) F ( − 1 ) ( u )
重复m次逆变换采样以下步骤:从Uniform(0,1)中随机生成一个值,用 u 表示。计算反函数 F(−1)(u) F ( − 1 ) ( u ) 的值 x,则x 就是从 f(x) f ( x ) 中得出的一个采样点。最终将采样点图像(蓝色)与实际密度函数(红色)比较,得图如下:
(二)拒绝采样
欲对逆变换采样不再适用的密度函数 p(x) p ( x ) 采样,如果能找到另外一个概率密度为 q(x) q ( x ) 的函数,它相对容易采样。如采用逆变换采样方法可以很容易对 q(x) q ( x ) 进行采样,甚至 q(x) q ( x ) 就是计算机可以直接模拟的均匀分布。此时我们可直接对 q(x) q ( x ) 采样,然后按照一定的方法拒绝某些样本,达到接近 p(x) p ( x ) 分布的目的。
步骤
举例:利用拒绝采样计算 π π 值
(三)马尔科夫链
马尔科夫链就是第二个MC:Markov Chain。定义为:根据概率分布,可以从一个状态转移到另一个状态,但是状态转移之间服从马氏性的一种分布。
解释一下定义中提到的两个名词:
马氏性:状态转移的概率只依赖与他的前一状态。数学表达为: P(Xn+1=k|Xn=kn,Xn−1=kn−1,…,X1=k1)=P(Xn+1=k|Xn=kn) P ( X n + 1 = k | X n = k n , X n − 1 = k n − 1 , … , X 1 = k 1 ) = P ( X n + 1 = k | X n = k n )
状态转移:状态的改变叫做转移(状态可以向自身转移),与不同的状态改变相关的概率叫做转移概率。 q(i,j)=q(j|i)=