EM算法是一种优化算法。它应用的场景是含有隐变量的概率模型的极大似然估计或极大后验概率估计,它是极大似然估计或极大后验概率估计的具体实现方法。这篇文章我们仅讨论极大似然估计,极大后验概率估计与其类似。
1、含有隐变量的概率模型
隐:观测不到。
我们以三硬币模型为例。
假设有3枚硬币,分别记做 ,,。这些硬币正面出现的概率分别是 , ,。进行如下掷硬币实验:先掷硬币,根据其结果选出硬币 或硬币 ;然后掷选出的硬币,出现正面记做1,出现反面记做0;独立重复 次实验,假设观测结果如下:1,1,0,1,0,0,1,0,1,1。
【问】:假设只能观测到掷硬币的结果,不能观测掷硬币的过程。问如何估计三硬币正面出现的概率,即三硬币模型的参数。
我们先把这个过程转化成数学语言。掷硬币的整个过程包含两个事件,第一个事件是掷硬币 ,第二个事件是掷硬币 或硬币 。我们设第一个事件对应的随机变量用 表示,第二个事件对应的随机变量用 表示。随机变量 表示未观测到的 掷硬币 的结果,随机变量 表示观测到的 掷硬币 或硬币 的结果 。 是模型参数。
三硬币模型可以写作
将观测数据表示为 ,未观测数据表示为 ,观测数据 独立同分布,未观测数据 独立同分布。则观测数据的似然函数为:
其中 中的 表示未观测数据所有的可能,如果,那么未观测数据所有的可能有四种:
(0,0),(0,1),(1,0),(1,1)。
2、EM算法推导
考虑求模型参数 的极大似然估计,即
这个问题没有解析解,只有通过迭代的方式求解。EM算法就是可以用于求解这种问题的一种迭代算法。
下面我们推导一下EM算法。
我们的目标是极大化似然函数,也即极大化对数似然函数,我们把极大化的目标写出来,即:
极大化 不是一件容易的事,因为式子里既有未观测数据,又有和的对数。EM算法通过迭代逐步近似极大化 。假设在第 次迭代后 的估计值是 。我们希望新估计值 能使 增加,即。
式子里边的第一项是和的对数,我们可以利用Jensen不等式。先说下Jensen 不等式如下:(Jensen不等式具体推导可以参考 Jensen不等式证明。)
,其中 ,。
利用Jensen不等式我们可以往下推:推导过程中利用的一个公式是:。
令:
那么:
即函数 是 的一个下界。
又因为 在 时的值和 在 的值相等:
因此,任何可以使 增大的 ,也可以使 增大。为了使 尽可能大的增大,选择 使得 达到极大,即:
在迭代第 次时,即求 Q 函数及其极大化。EM算法是通过不断求解下界的极大化逼近求解对数似然函数极大化的算法。
EM算法的收敛性:在 函数满足一定条件下,由EM算法得到的参数估计序列的收敛值是 的稳定点。证明我没看,有兴趣的同学找找文献吧~。证明的定理只能保证参数估计序列收敛到对数似然函数序列的稳定点,不能保证收敛到极大值点。所以在应用中,初值的选择变得非常重要,常用的办法是选取几个不同的初值进行迭代,然后对得到的各个估计值加以比较,从中选择最好的。
3、EM算法实例推导
我们回到硬币三硬币模型。
我们需要计算 ,即 。
首先可以推导一下,其中 表示观测数据长度:
其中 为 来自硬币 的概率。其中为 来自硬币 的概率,。
我们可以把 算出来,并把 记作 ,那么:
同时我们可以得到:
那么:
我们要求的第 次迭代的参数是:
我们求 对 , , 的导数,并令其为0得到第 次迭代的参数:(求各个参数的导数并令其为0,就得到了最优解,至于为什么,我现在也没有弄明白,以后研究下,有明白的大神欢迎留言~)
求对 的导数并令其为0:
让 ,可推导出:
求对 的导数并令其为0:
令 可推导出:
求对 的导数并令其为0:
令 可推导出:(同推导 一样)
到现在为止就计算出来第 次迭代的最优参数啦~