概念
在统计计算中,最大期望(EM)算法是在概率(probabilistic)模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variable)。
最大期望经常用在机器学习和计算机视觉的数据聚类(Data Clustering)领域。
可以有一些比较形象的比喻说法把这个算法讲清楚。
比如说食堂的大师傅炒了一份菜,要等分成两份给两个人吃,显然没有必要拿来天平一点一点的精确的去称分量,最简单的办法是先随意的把菜分到两个碗中,然后观察是否一样多,把比较多的那一份取出一点放到另一个碗中,这个过程一直迭代地执行下去,直到大家看不出两个碗所容纳的菜有什么分量上的不同为止。(来自百度百科)
EM算法就是这样,假设我们估计知道A和B两个参数,在开始状态下二者都是未知的,并且知道了A的信息就可以得到B的信息,反过来知道了B也就得到了A。可以考虑首先赋予A某种初值,以此得到B的估计值,然后从B的当前值出发,重新估计A的取值,这个过程一直持续到收敛为止。
EM 算法还是许多非监督聚类算法的基础(如 Cheeseman et al. 1988 ),而且它是用于学习部分可观察马尔可夫模型( Partially Observable Markov Model )的广泛使用的 Baum-Welch 前向后向算法的基础。
估计 k 个高斯分布的均值
介绍 EM 算法最方便的方法是通过一个例子。
考虑数据 D 是一实例集合,它由 k 个不同正态分布的混合所得分布所生成。该问题框架在下图中示出,其中 k =2 而且实例为沿着 x 轴显示的点。
每个实例使用一个两步骤过程形成。
首先了随机选择 k 个正态分布其中之一。
其次随机变量 x i 按照此选择的分布生成。
这一过程不断重复,生成一组数据点如图所示。为使讨论简单化,我们考虑一个简单情形,即单个正态分布的选择基于统一的概率进行选择,并且 k 个正态分布有相同的方差 σ 2 ,且 σ 2 已知。
学习任务是输出一个假设 h =< μ 1 … μ k > ,它描述了 k 个分布中每一个分布的均值。我们希望对这些均值找到一个极大似然假设,即一个使 P ( D | h ) 最大化的假设 h。
注意到,当给定从一个正态分布中抽取的数据实例 x 1 , x 2 , …, x m 时,很容易计算该分布的均值的极大似然假设。
其中我们可以证明极大似然假设是使 m 个训练实例上的误差平方和最小化的假设。
使用当表述一下式,可以得到:
(公式一)
然而,在这里我们的问题涉及到 k 个不同正态分布的混合,而且我们不能知道哪个实例是哪个分布产生的。 因此这是一个涉及隐藏变量的典型例子 。
EM算法步骤
在上图 的例子中,可把每个实例的完整描述看作是三元组 < x i , z i 1 , z i 2 > ,其中x i 是第 i 个实例的观测值, z i 1 和 z i 2 表示两个正态分布中哪个被用于产生值 x i 。
确切地讲, z ij 在 x i 由第 j 个正态分布产生时值为 1 ,否则为 0 。这里 x i 是实例的描述中已观察到的变量, z i 1 和 z i 2 是隐藏变量。如果 z i 1 和 z i 2 的值可知,就可以用式 6.27 来解决均值 μ 1 和 μ 2 。因为它们未知,因此我们只能用 EM 算法 。
EM 算法应用于我们的 k 均值问题,目的是搜索一个极大似然假设 ,方法是根据当前假设 < μ 1 … μ k > 不断地再估计隐藏变量 z ij 的期望值。然后用这些隐藏变量的期望值重新计算极大似然假设。这里首先描述这一实例化的 EM 算法,以后将给出 EM算法的一般形式。
为了估计上图中的两个均值, EM 算法首先将假设初始化为 h =< μ 1 , μ 2 > ,其中μ 1 和 μ 2 为任意的初始值。然后重复以下的两个步骤以重估计 h ,直到该过程收敛到一个稳定的 h 值。
步骤 1 : 计算每个隐藏变量 z ij 的期望值 E [ z ij ] ,假定当前假设 h =< μ 1 , μ 2 >成立。
步骤 2 : 计算一个新的极大似然假设 h ´=< μ 1 ´, μ 2 ´> ,假定由每个隐藏变量 z ij所取的值为第 1 步中得到的期望值 E [ z ij ] ,然后将假设 h =< μ 1 , μ 2 > 替换为新的假设 h ´=< μ 1 ´, μ 2 ´> ,然后循环。
现在考察第一步是如何实现的。步骤 1 要计算每个 z ij 的期望值。此 E [ z ij ] 正是实例 x i 由第 j 个正态分布生成的概率:
因此第一步可由将当前值 < μ 1 , μ 2 > 和已知的 x i 代入到上式中实现。
在第二步,使用第 1 步中得到的 E [ z ij ] 来导出一新的极大似然假设 h ´=< μ 1 ´, μ 2´> 。如后面将讨论到的,这时的极大似然假设为:
注意此表达式类似于公式一中的样本均值,它用于从单个正态分布中估计 μ 。新的表达式只是对 μ j 的加权样本均值,每个实例的权重为其由第 j 个正态分布产生的期望值。
上面估计 k 个正态分布均值的算法描述了 EM 方法的要点 :即当前的假设用于估计未知变量,而这些变量的期望值再被用于改进假设。
可以证明,在此算法第一次循环中, EM 算法能使似然性 P ( D | h ) 增加,除非它已达到局部的最大。因此该算法收敛到对于 < μ 1 , μ 2 > 的一个局 部极大可能性假设 。
EM 算法的一般表述
上面的 EM 算法针对的是估计混合正态分布均值的问题。更一般地, EM 算法可用于许多问题框架,其中需要估计一组描述基准概率分布的参数 θ ,只给定了由此分布产生的全部数据中能观察到的一部分。
在上面的二均值问题中,感兴趣的参数为 θ =< μ 1 , μ 2 > ,而全部数据为三元组 < xi , z i 1 , z i 2 > ,而只有 x i 可观察到,一般地令 X =< x 1 , …, x m > 代表在同样的实例中未观察到的数据,并令 Y = X ∪ Z 代表全体数据。注意到未观察到的 Z 可被看作一随机变量,它的概率分布依赖于未知参数 θ 和已知数据 X 。类似地, Y 是一随机变量,因为它是由随机变量 Z 来定义的。在后续部分,将描述 EM 算法的一般形式。使用 h 来代表参数 θ 的假设值,而 h ´ 代表在 EM 算法的每次迭代中修改的假设。
EM 算法通过搜寻使 E [ln P ( Y | h ´)] 最大的 h ´ 来寻找极大似然假设 h ´ 。此期望值是在 Y 所遵循的概率分布上计算,此分布由未知参数 θ 确定。考虑此表达式究竟意味了什么。
首先 P ( Y | h ´) 是给定假设 h ´ 下全部数据 Y 的似然性。其合理性在于我们要寻找一个 h ´ 使该量的某函数值最大化。
其次使该量的对数 ln P ( Y | h ´) 最大化也使 P ( Y | h ´) 最大化,如已经介绍过的那样。
第三,引入期望值 E [ln P ( Y | h ´)] 是因为全部数据 Y 本身也是一随机变量。
已知全部数据 Y 是观察到的 X 和未观察到的 Z 的合并,我们必须在未观察到的 Z 的可能值上取平均,并以相应的概率为权值。换言之,要在随机变量 Y 遵循的概率分布上取期望值 E [ln P ( Y | h ´)] 。该分布由完全已知的 X 值加上 Z 服从的分布来确定。
Y 遵从的概率分布是什么?一般来说不能知道此分布,因为它是由待估计的 θ 参数确定的。然而, EM 算法使用其当前的假设 h 代替实际参数 θ ,以估计 Y 的分布。现定义一函数 Q ( h ´| h ) ,它将 E [ln P ( Y | h ´)] 作为 h ´ 的一个函数给出,在 θ = h 和全部数据 Y 的观察到的部分 X 的假定之下。
将 Q 函数写成 Q ( h ´| h ) 是为了表示其定义是在当前假设 h 等于 θ 的假定下。在EM 算法的一般形式里,它重复以下两个步骤直至收敛。
步骤 1 :估计( E )步骤:使用当前假设 h 和观察到的数据 X 来估计 Y 上的概率分布以计算 Q ( h ´| h ) 。
步骤 2 :最大化( M )步骤:将假设 h 替换为使 Q 函数最大化的假设 h ´ :
当函数 Q 连续时, EM 算法收敛到似然函数 P ( Y | h ´) 的一个不动点。若此似然函数有单个的最大值时, EM 算法可以收敛到这个对 h ´ 的全局的极大似然估计。否则,它只保证收敛到一个局部最大值。因此, EM 与其他最优化方法有同样的局限性,如第 4 章讨论的梯度下降,线性搜索和变形梯度等。
总结来说,EM算法就是通过迭代地最大化完整数据的对数似然函数的期望,来最大化不完整数据的对数似然函数。
EM算法举例:
本文试图用最简单的例子、最浅显的方式说明EM(Expectation Maximization)算法的应用场景和使用方法,而略去公式的推导和收敛性的证明。
以下内容翻译自《Data-Intensive Text Processing with MapReduce》。
Maximum Likelihood Estimation
Maximum Likelihood Estimation(MLE)是要选择一个最佳参数θ*,使得从训练集中观察到和情况出现的概率最大。即模型:
举例来说明。如下图
一个小黑球沿着一个三角形的木桩滚入杯子a或b中,可建立一个概率模型,由于是二值的,设服从Bernoulli分布,概率密度函数为:
p是k=0的概率,也是我们要使用MLE方法要确定的参数。
在上面的滚球实验中,我们令Y是待确定的参数,X是观察到的结果。连续10次实验,观察到的结果是X=(b,b,b,a,b,b,b,b,b,a)。小球进入a杯的概率为p,则满足10次实验的联合概率为:
为了使X发生的概率最大,令上式一阶求导函数为0,得p=0.2。
含有隐含变量的弹球实验
如上图,现在又多了两块三角形木桩,分别标记序号为0,1,2。并且实验中我们只知道小球最终进入了哪个杯子,中间的路线轨迹无从得知。
X取值于{a,b,c}表示小球进入哪个杯子。Y取值于{0,1,2,3}表示小球进入杯子前最后一步走的是哪条线路。小球在3个木桩处走右边侧的概率分别是p=(p0,p1,p2)。跟上例中一样,X表示训练集观测到的值,p是模型参数,而这里的Y就是"隐含变量"。
假如我们做了N次实验,小球经过路径0,1,2,3的次数依次是N0,N1,N2,N3,则:
带隐含变量的MLE
现在我们来考虑这个概率模型:Pr(X,Y;θ)。只有X是可观察的,Y和θ都是未知的。
经过一组实验,我们观察到X的一组取值x=(x1,x2,...,xl),则联合概率为:
MLE就是要求出最佳的参数θ*,使得:
这个时候要求θ*,”令一阶求函数等于0“的方法已经行不通了,因为有隐含变量Y的存在。实现上上式很难找到一种解析求法,不过一种迭代的爬山算法可求解该问题。
Expectation Maximization
EM是一种迭代算法,它试图找到一系列的估计参数θ(0),θ(1),θ(2),....使得训练数据的marginal likelihood是不断增加的,即:
算法刚开始的时候θ(0)赋予随机的值,每次迭代经历一个E-Step和一个M-Step,迭代终止条件是θ(i+1)与θ(i)相等或十分相近。
E-Step是在θ(i)已知的情况下计算X=x时Y=y的后验概率:
f(x|X)是一个权值,它表示观测值x在所有观察结果X中出现的频率。
M-Step:
其中在E-Step已经求出来了。这时候可以用“令一阶导数等于0”的方法求出θ'。
EM算法收敛性的证明需要用到Jensen不等式,这里略去不讲。
举例计算
就拿上文那个3个木桩的滚球实验来说,做了N次实验,滚进3个杯子的次数依次是Na,Nb,Nc。
先给赋予一个随机的值。
E-Step:
同时我们注意到
其它情况下Y的后验概率都为0。
M-Step:
我们只需要计算非0项就可以了
上面的每行第3列和第4列相乘,最后再按行相加,就得到关于θ(i+1)的函数,分别对p0,p1,p2求偏导,令导数为0,可求出p'0,p'1,p'2。
这里补充一个求导公式:
我们这个例子非常简单,计算θ(1)已经是最终的解了,当然你要计算出θ(2)才下此结论。
结束语
对于一般的模型,EM算法需要经过若干次迭代才能收敛,因为在M-Step依然是采用求导函数的方法,所以它找到的是极值点,即局部最优解,而非全局最优解。也正是因为EM算法具有局部性,所以它找到的最终解跟初始值θ(0)的选取有很大关系。
在求解HMM的学习问题、确立高斯混合模型参数用的都是EM算法。