一、简单介绍
EM(Expectaion Maximization)算法(又称为期望最大化方法)是一种迭代算法,Dempster等人在1977年总结提出来的。简单来说EM算法就是一种含有隐变量的概率模型参数的极大似然估计。EM算法的每次迭代由两步组成:第一是求期望,第二是求极大。EM算法在机器学习中有极为广泛的应用。如常被用来学习高斯混合模型(Gaussian mixture model, 简称GMM)的参数。
那么什么是含有 隐变量的概率模型? 隐 变 量 的 概 率 模 型 ? 这里举一个常用的三硬币例子,假设我们有三枚硬币:A、B和C,他们的质地都是不均匀的,假设他们正面朝上的概率分别是:a、b和c。现在弄一个抛硬币的规则,先抛A硬币,如果A正面朝上,那么就抛B硬币,否则就抛C硬币。最后记下最终结果,正面朝上记为1,否则记为0。现在进行10次该实验,假如得到的结果如下: 1,0,0,1,1,1,0,1,0,0。这个时候我们其实只得到了最终的结果,并不知道是B还是C硬币的结果,因为不知道每次A硬币的结果。这个时候A硬币的抛掷就可以认为是一个隐含变量。但是问题是如何根据这个结果来估计这三个参数呢?
二、理论推导
2.1 算法思想
在解决例子问题之前,我们先进行一些所谓枯燥的数学化定义,这样或许能帮助理解和记忆。首先,假设 Y Y 是最终观测到的变量集(上述硬币中的最终正反面结果), 是隐变量集(A硬币结果), Θ(a,b,c) Θ ( a , b , c ) 是我们待求的参数集。根据之前我们对于极大似然估计的解释,假设抛开隐变量集不管,我们最终的目的就是根据最终观测到的变量集采用极大似然估计的方法来求解出参数集。所以,我们的目标函数就是最大化似然(这里取似然函数的对数)。
如果没有 Z Z 变量,如上所说,直接可以用极大似然估计的方法来估计参数。但是这里多了一个隐变量 ,所以EM算法的精髓思想出来了:
- 初始化一个 Θ0 Θ 0 参数
- E步:根据 Θt Θ t 我们可以计算出 Z Z 的期望值,记为
- M步:根据 Zt Z t 我们可以利用极大似然法估计出参数 Θ Θ ,记为 Θt+1 Θ t + 1
- 重复上述EM步直到收敛
简单阐述就是:其实这里有两类变量,一类是隐变量,一类是待求的参数变量。那么普通的思路该怎么求这个参数变量呢?由上述阐述可以知道,如果我们事先知道了隐变量就能利用极大似然来估计参数,如果我们知道了参数,那么我们可以计算出隐变量集的期望。这里就形成了一个制约,只要我们给出隐变量的初始值就能通过迭代达到两类变量之间的平衡,也就是收敛。类似于我们在生活中的称重,如果要将一类物品分为两部分(比如糖果),在没有称的情况下,往往我们在左右手进行掂量(这就有点像两类变量),如果左手上重了就分点到右手上,否则,从右手上扒拉点分到左手,直到感觉两只手上重量差不多。
所以这里就落下了两个最主要的问题:
- 为什么是求 Z Z 的期望?
- 一定会收敛?收敛到哪里?
2.2 算法推导
对于第一个问题,为什么是求 的期望?其实上述只是简单的假设,根据我们的目标需求,需要极大似然估计参数,所以需要知道隐变量,然后采取了这种假设、迭代的思路。实际上EM算法并不是直接求解 Z Z 的期望,而是将E、M两步联合。
假设迭代进行到第 步,得到了参数 Θt Θ t ,这个时候 Z Z 的概率分布为: 。我们不直接计算这个概率分布的期望值,而是计算对数似然函数 L L 关于 的期望值。同样分为如下两步。
- E步(Expectation): 计算对数似然函数 L L 关于 的期望值(一个条件概率的期望值,已知观测结果 Y Y 和参数 的条件下,对数似然函数 L L 的期望值)。这个函数称为 函数。
- M步(Maximization):最大化期望似然函数。
Θt+1=argmaxΘ Q(Θ|Θt) Θ t + 1 = a r g m a x Θ Q ( Θ | Θ t )
重复上述两个步骤,直到收敛到局部最优解。详细的有关收敛问题,可以参考李航老师的《统计学习方法》。
这里就通过简单的方法介绍一下EM算法的核心思路,然后主要是通过以下几个例子来感受一下EM算法。
三、三枚硬币
这里我们首先借用一下李航老师在《统计学习方法》中的三枚硬币模型的例子进行阐述。
Step1: 先定义一些数学变量
- Y={ y1,y2,y3,........,yn} Y = { y 1 , y 2 , y 3 , . . . . . . . . , y n } 代表最终抛掷硬币的结果,每次的抛掷结果 y∈{ 0,1} y ∈ { 0 , 1 }
- Z={ z1,z2,z3,.....,zn} Z = { z 1 , z 2 , z 3 , . . . . . , z n } 表示隐含变量,其实就是A硬币的抛掷结果,所以 z∈{ 0,1}<