概率模型有时既含有可观测变量也会隐含变量,当所有变量都是可观测的,则一般的MLE或MAP方法可以估计出模型参数。但是当模型中存在隐含变量时,无法用MLE和MAP直接估计出模型参数,这时就要使用到EM算法。
EM算法:
用Y表示观测随机变量数据(不完全数据),Z表示隐随机变量数据,Y和Z合在一起称为完全数据。
给定观测数据Y,则其概率分布为:,其中
是需要估计的模型参数,那么
其实就是Y的似然函数。对数似然函数为:
。在这里可以看出如果Y是完全数据,也就是不存在隐数据Z,则可以直接使用MLE估计出
。虽然我们的模型中多了隐数据Z,但是我们的目标还是一样的,即极大化
。
假设Y和Z的联合概率分布为:,则完全数据的对数似然函数为:
。
EM算法通过迭代的方式求的极大似然估计,每次迭代包含两步:
E步:求期望;
M步:极大化。
输入:观测变量Y,隐变量Z,联合分布,条件分布
。
、
表示对模型的一些假设,即数据Y、Z满足什么样的分布。
输出:模型参数。
(1)选择参数的初值。
(2)E步:设为第i次迭代的参数
的估计值,在第i+1次迭代的E步,计算:
(该公式可以通过期望的公式推导)
这个公式被称为Q函数,是EM算法中最重要的一步!
Q函数:完全数据的对数似然函数关于在给点观测数据Y和当前参数
下对隐数据的条件概率分布
的期望称为Q函数。
(3)M步:求使极大化的
,确定第i+1次迭代的参数估计值
:
(其中
是变量,找到可以使
最大的
就是
)
(4)重复第(2)步和di(3)步,直至收敛。
上述过程就是EM算法的流程。EM算法有效的原因就是通过E步和M步可以保证,当取等号时收敛,并且EM只能保证可以找到
的局部极大值,而不一定是全局极大值。
至于为什么EM算法有的性质,需要使用Jensen不等式进行证明!
下面说一个包含隐变量的例子,并且可以使用EM算法解决。
有三枚硬币,分别为A、B、C。这些硬币正面朝上的概率为a、b、c。进行如下抛硬币实验:先抛A,根据结果抛B或C,如果A为正面抛B,如果A为反面抛C。记录B和C的结果。
在上面的实验中,抛B和C的结果是可观测变量(但不知道哪些是B哪些是C);而A的结果是隐变量。
该问题可以用EM算法估计出a、b、c的值。
EM算法对初值是敏感的,即使用不同的初值,最后得到的结果可能是不同的!