EM算法——期望极大值算法

  • 1. EM算法的简介及案例介绍
  • 2. EM算法的推导
  • 3. EM算法
  • 3.1 算法步骤:
  • 3.2 EM算法的收敛性
  • 4. EM算法应用——求解高斯混合模型(GMM)的参数
  • 4.1 高斯混合模型(Gaussian mixture model,GMM)
  • 4.2 EM算法估计高斯混合模型的参数
  • 5.EM算法的推广——广义期望极大算法(GEM)



  本文内容主体是基于李航老师的《统计学习方法》第二版中EM算法章节的内容,有兴趣的同学可以自行参考书籍资料。其中个人觉得不是很直观的部分进行了适当的解释,解释仅属于个人理解,若觉得解释更加难以理解的同学可以自行忽略。代码部分有时间再补充。若文中有编辑错误,烦请指正,谢谢。

1. EM算法的简介及案例介绍

EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计或极大后验概率估计。注意,EM算法不是一种机器学习的模型,只是一种求参数的算法。EM算法的每次迭代都由两步组成:E步,求期望;M步,求极大值。所以该算法才被称为期望极大算法(Expectation Maximization algorithm)
  从上述描述可知,EM算法求解极大似然估计和其他模型很不同的一点是,它可以求解含有隐变量的概率模型参数。通常,概率模型的变量都是可观测变量,这时就可以根据给定的数据,直接使用极大似然估计法或贝叶斯估计法求解模型参数。但是,如果概率模型涉及到的变量其中有不可观测的变量怎么办?这个不可观测的变量就叫做隐变量。所谓不可观测,直观理解就是对于目标问题并没有给出该变量对应的任何信息,一切都是隐于深处的。
  还是那句话,概念总是深奥且不易理解的,所以还是举个例子来加强对概念的理解。
  案例
  假设有两个形状不规则的硬币A和B,我们希望求出每个硬币抛出正面的概率em算法用途 em算法应用_概率模型。目前,我们已知五组抛硬币的实验结果,每组抛10次,结果如下表。

实验组号

结果1(H表示正,T表示反)

结果2("A:"表示用A硬币做该组实验,H表示正,T表示反)

1

H T T T H H T H T H

B:H T T T H H T H T H

2

H H H H H H T H H H

A:H H H H H H T H H H

3

H T H H H H T H H H

A:H T H H H H T H H H

4

H T T T H T T H T H

B:H T T T H T T H T H

5

H H T H H H T H T H

A:H H T H H H T H T H

  如果问题的背景如表中结果2的类型,也就是每组实验都知道是用哪个硬币抛的,那么根据极大似然估计的方法,很容易就能求出:
em算法用途 em算法应用_高斯混合模型_02
  但是问题如果稍微做一点改变,实验结果是如结果1所示,也就是这时候,你只有5组正反的结果,却不知道每组是用哪个硬币做的实验,这时候问题就来了,极大似然估计是没法用的,因为这个问题存在一个隐变量,也就是你在分析结果的时候需要思考,这组结果是用A硬币做的还是B硬币做的?而这个事件,就是一个隐随机变量,这时候,EM算法就能派上用场了。
  其实,现实中,包含隐变量的问题是很常见的,所以EM算法的应用是很广泛的。那么针对上述问题,EM算法是如何求解的呢?
  首先,我们按随便取初值em算法用途 em算法应用_概率模型_03,然后拿出一组结果数据(以第一组为例),由于不知道该结果是用哪个硬币做的,所以我们需要计算每个硬币产生这种结果的概率:
em算法用途 em算法应用_em算法用途_04
  那么,结果1是由A硬币或B硬币产生的概率就是:
em算法用途 em算法应用_高斯混合模型_05
  同理,可以计算出其他结果的类似概率,如下表。

组号

1

2

3

4

5

A硬币

0.45

0.80

0.73

0.35

0.65

B硬币

0.55

0.20

0.27

0.65

0.35

  当得到每组结果是由A硬币或B硬币产生的概率后,就可以根据极大似然估计的方法来进行估计,首先我们可以求出A硬币和B硬币分别对每组结果中,出现正反次数的期望(E步),如下表:

组号

1

2

3

4

5

总计

A硬币

0.45×5H=2.2H,0.45×5T=2.2T

7.2H,0.8T

5.9H,1.5T

1.4H,2.1T

4.5H,1.9T

21.3H,8.6T

B硬币

0.55×5H=2.8H,0.55×5T=2.8T

1.8H,0.2T

2.1H,0.5T

2.6H,3.9T

2.5H,1.1T

11.7H,8.4T

  然后按极大似然估计的方法就可以求出新一轮的参数:
em算法用途 em算法应用_em算法用途_06
  最后,将新得到的em算法用途 em算法应用_概率模型_07继续带入最开始的步骤,重新计算,又可以得到em算法用途 em算法应用_em算法用途_08,反复迭代,最终达到终止条件或者结果收敛为止。最后,可以得到em算法用途 em算法应用_概率模型_09。这就是EM算法得到的参数估计结果。

2. EM算法的推导

em算法用途 em算法应用_机器学习_10,条件分布是em算法用途 em算法应用_em算法用途_11。Y和Z连在一起称为完全数据,单独的Y又称为不完全数据。
  面对一个含有隐变量的概率模型,目标是极大化观测数据Y关于参数em算法用途 em算法应用_高斯混合模型_12的对数似然函数,即求下式的极大值:
em算法用途 em算法应用_概率模型_13
  上式中很难求解的部分一是带有不可观测数据Z的变量;二是具有包含求和公式的对数。稍微解释一下上式中的各项:
  em算法用途 em算法应用_高斯混合模型_14表示已知参数em算法用途 em算法应用_高斯混合模型_12的情况下,可观测数据Y取某一值的概率,由于问题包含隐变量,且隐变量不可观测,也就导致了em算法用途 em算法应用_高斯混合模型_14其实是无法直接求解的,而是要将其进行分解;
  em算法用途 em算法应用_极大似然估计_17表示,在已知参数em算法用途 em算法应用_高斯混合模型_12的情况下,遍历所有隐变量Z的取值情况的变量Y取某一值的概率。很明显,Z是所有隐变量的集合,那么遍历所有Z的情况后,其概率之和自然就与em算法用途 em算法应用_高斯混合模型_14相同了,这一步也就是把em算法用途 em算法应用_高斯混合模型_14分解成了一个个子项,每个子项都与过程中的隐变量有关。
  em算法用途 em算法应用_em算法用途_21这其实就是条件概率公式,数学公式很好理解,但是其实em算法用途 em算法应用_em算法用途_22两项都无法求解,因为隐变量是无法确切得到的。

em算法用途 em算法应用_极大似然估计_23的极大值的。假设在第i次迭代后em算法用途 em算法应用_高斯混合模型_12的估计值是em算法用途 em算法应用_em算法用途_25。EM算法希望保证每一次新的估计值em算法用途 em算法应用_高斯混合模型_12都能使em算法用途 em算法应用_极大似然估计_23增加,即em算法用途 em算法应用_机器学习_28,这样就能逐步达到极大值。因此,考虑两者之差:

em算法用途 em算法应用_极大似然估计_29

  利用Jensen不等式(em算法用途 em算法应用_极大似然估计_30,其中em算法用途 em算法应用_机器学习_31)得到其下界:

em算法用途 em算法应用_高斯混合模型_32

em算法用途 em算法应用_极大似然估计_33

em算法用途 em算法应用_概率模型_34

em算法用途 em算法应用_高斯混合模型_35

  即em算法用途 em算法应用_高斯混合模型_36em算法用途 em算法应用_极大似然估计_23的一个下界,且有em算法用途 em算法应用_em算法用途_38。所以,理论上,任何可以让em算法用途 em算法应用_高斯混合模型_36增大的em算法用途 em算法应用_高斯混合模型_12,也可以让em算法用途 em算法应用_极大似然估计_23增大。为了让em算法用途 em算法应用_极大似然估计_23尽可能的增大,所以选择新一轮迭代的参数值为:

em算法用途 em算法应用_极大似然估计_43

  因此,为了求em算法用途 em算法应用_高斯混合模型_44,忽略em算法用途 em算法应用_高斯混合模型_36中所有与em算法用途 em算法应用_高斯混合模型_12无关的常数项(留下em算法用途 em算法应用_极大似然估计_47):

em算法用途 em算法应用_em算法用途_48

  记em算法用途 em算法应用_极大似然估计_49,称为Q函数,是可以求解为关于em算法用途 em算法应用_高斯混合模型_12的表达式,并根据表达式求解极大值的。

  下图是em算法用途 em算法应用_极大似然估计_23em算法用途 em算法应用_高斯混合模型_36的曲线(来自李航《统计学习方法》),根据上述推导,在em算法用途 em算法应用_极大似然估计_53处,两者是相同的,em算法用途 em算法应用_高斯混合模型_36取极大值后,em算法用途 em算法应用_极大似然估计_23也会上升。但是从图中也可以看出,EM算法并不能保证找到全局最优解。

em算法用途 em算法应用_em算法用途_56

3. EM算法

3.1 算法步骤:

  • 输入:观测变量Y,隐变量Z,联合分布em算法用途 em算法应用_概率模型_57,条件分布em算法用途 em算法应用_极大似然估计_58
  • 输出:模型参数em算法用途 em算法应用_机器学习_59
  1. 选择参数的初值em算法用途 em算法应用_概率模型_60,开始EM迭代;
  2. E步:记em算法用途 em算法应用_概率模型_61为第i次迭代参数em算法用途 em算法应用_机器学习_59的估计值,在第i+1次迭代的E步,计算Q函数:
    em算法用途 em算法应用_极大似然估计_63
  3. M步:求使em算法用途 em算法应用_高斯混合模型_64达到极大值的em算法用途 em算法应用_机器学习_59,确定第i+1次迭代的参数估计值em算法用途 em算法应用_em算法用途_66
    em算法用途 em算法应用_高斯混合模型_67
  4. 重复第2,3步,直到收敛,或达到设置迭代停止条件(通常是em算法用途 em算法应用_高斯混合模型_68是极小的正数)

  EM算法也可以用在无监督学习中,当训练数据只有输入,没有对应标签时,需要学习模型的任务称为无监督学习。EM算法可以把无监督学习的训练数据看作是联合概率分布P(X,Y)产生的数据,其中X是可观测数据,Y是不可观测数据。

3.2 EM算法的收敛性

  定理1:设em算法用途 em算法应用_高斯混合模型_14为观测数据的似然函数,em算法用途 em算法应用_em算法用途_70为EM算法得到的参数估计序列,em算法用途 em算法应用_em算法用途_71为对应的似然函数序列,则em算法用途 em算法应用_机器学习_72是单调递增的,即:em算法用途 em算法应用_em算法用途_73
  证明:
em算法用途 em算法应用_概率模型_74
em算法用途 em算法应用_极大似然估计_75
em算法用途 em算法应用_极大似然估计_76
em算法用途 em算法应用_高斯混合模型_77
  令em算法用途 em算法应用_极大似然估计_53em算法用途 em算法应用_高斯混合模型_44代入上式可得:
em算法用途 em算法应用_极大似然估计_80
  要证明em算法用途 em算法应用_em算法用途_73,则根据log函数单调性可知,上式右端是非负的即可。根据Q函数的定义,新选的em算法用途 em算法应用_高斯混合模型_44需要使Q函数达到极大值,因此显然有:
em算法用途 em算法应用_极大似然估计_83
em算法用途 em算法应用_极大似然估计_84
em算法用途 em算法应用_高斯混合模型_85
  所以,定理1得证。

  定理2:设em算法用途 em算法应用_极大似然估计_86为观测数据的对数似然函数,em算法用途 em算法应用_em算法用途_70为EM算法得到的参数估计序列,em算法用途 em算法应用_高斯混合模型_88为对应的对数似然函数序列。则:
  1).如果em算法用途 em算法应用_高斯混合模型_14有上界,则em算法用途 em算法应用_概率模型_90收敛到某一值em算法用途 em算法应用_高斯混合模型_91
  2).在函数em算法用途 em算法应用_机器学习_92em算法用途 em算法应用_极大似然估计_23满足一定条件下,由EM算法得到的参数估计序列em算法用途 em算法应用_em算法用途_25的收敛值em算法用途 em算法应用_em算法用途_95em算法用途 em算法应用_极大似然估计_23的稳定点。
  第一条的证明显然em算法用途 em算法应用_概率模型_97,再根据em算法用途 em算法应用_极大似然估计_23的单调性就可以得到上述结论;
  第二条的证明较为复杂,可参见文献“On the convergence properties of the EM algorithm”。

4. EM算法应用——求解高斯混合模型(GMM)的参数

4.1 高斯混合模型(Gaussian mixture model,GMM)

  高斯混合模型是指某随机变量的概率分布模型是多个不同高斯模型的加法模型:
em算法用途 em算法应用_机器学习_99
  其中,em算法用途 em算法应用_概率模型_100是系数,em算法用途 em算法应用_机器学习_101em算法用途 em算法应用_em算法用途_102是高斯分布密度,em算法用途 em算法应用_极大似然估计_103
em算法用途 em算法应用_高斯混合模型_104

4.2 EM算法估计高斯混合模型的参数

em算法用途 em算法应用_em算法用途_105,其中em算法用途 em算法应用_极大似然估计_103
  1).首先要明确隐变量,写出完全数据的对数似然函数。
  可以这么理解高斯混合模型得到的数据,第一步是根据概率em算法用途 em算法应用_概率模型_100选择第k个高斯分布分模型em算法用途 em算法应用_em算法用途_102,然后根据该分模型得到观测数据。因此,已知的是观测数据,隐参数是该数据是来自第几个分模型。所以设定隐变量如下:
em算法用途 em算法应用_机器学习_109
  综上,完全数据就是em算法用途 em算法应用_em算法用途_110
  所以,完全数据的对数似然函数为:
em算法用途 em算法应用_概率模型_111
  理解可知,em算法用途 em算法应用_极大似然估计_112中,只有一个为1,其他全为0,而em算法用途 em算法应用_极大似然估计_113是在em算法用途 em算法应用_概率模型_114时,用对应的分模型求出的,所以上式可以写成:
em算法用途 em算法应用_em算法用途_115
  其中,em算法用途 em算法应用_机器学习_116,注意,em算法用途 em算法应用_机器学习_117中是遍历下标j,而不是下标k。
  所以,完全数据的对数似然函数即为:
em算法用途 em算法应用_em算法用途_118

  2).EM算法E步,确定Q函数
em算法用途 em算法应用_概率模型_119
em算法用途 em算法应用_极大似然估计_120
  其中,记em算法用途 em算法应用_极大似然估计_121
em算法用途 em算法应用_概率模型_122
  此处j是固定量,由于em算法用途 em算法应用_极大似然估计_112中,只有一个为1,其他全为0,所以期望em算法用途 em算法应用_极大似然估计_124是已知观测值和参数时,选中特定分模型的概率。
em算法用途 em算法应用_极大似然估计_125
  注意,上述推导中分母求和的变量原书里使用的是’k’,很容易和分子里的k混起来,不建议按原书的写法,容易引起歧义。另外,求解em算法用途 em算法应用_极大似然估计_126所用到的参数em算法用途 em算法应用_em算法用途_127等都是当前模型下已知的参数,因此em算法用途 em算法应用_极大似然估计_126是可求的,同理下文中的em算法用途 em算法应用_机器学习_117也是可求的。
  将em算法用途 em算法应用_概率模型_130em算法用途 em算法应用_极大似然估计_131代入Q函数中可得
em算法用途 em算法应用_高斯混合模型_132
  3). 确定EM算法的M步
  求函数em算法用途 em算法应用_em算法用途_133对参数em算法用途 em算法应用_高斯混合模型_12的极大值,从而得到新一轮迭代的模型参数:
em算法用途 em算法应用_em算法用途_135
  用em算法用途 em算法应用_机器学习_136em算法用途 em算法应用_em算法用途_137表示参数em算法用途 em算法应用_高斯混合模型_44中的具体参数。求em算法用途 em算法应用_机器学习_136只需将em算法用途 em算法应用_em算法用途_133对求em算法用途 em算法应用_机器学习_136偏导并令其为0即可。
em算法用途 em算法应用_极大似然估计_142
em算法用途 em算法应用_概率模型_143
em算法用途 em算法应用_em算法用途_144
em算法用途 em算法应用_概率模型_145
  注意,上述推导中参数变量下标原书里使用的是’k’,求导时很容易Q函数里的求和下标k混起来,不建议按原书的写法,容易引起歧义。所以此处用t下标代替,下述推导也同样如此。
  对em算法用途 em算法应用_em算法用途_146的求导略微复杂,因为该求导是有约束条件的求导,约束条件为em算法用途 em算法应用_em算法用途_147。因此,需要使用拉格朗日乘子法求解极值。首先,去除em算法用途 em算法应用_em算法用途_133中与em算法用途 em算法应用_概率模型_100无关的项:
em算法用途 em算法应用_em算法用途_150
  然后,用拉格朗日乘子法构造:
em算法用途 em算法应用_高斯混合模型_151
  em算法用途 em算法应用_极大似然估计_152em算法用途 em算法应用_em算法用途_153求导可得:
em算法用途 em算法应用_高斯混合模型_154
  上述推导中,有em算法用途 em算法应用_em算法用途_155。将em算法用途 em算法应用_em算法用途_156代入偏导方程em算法用途 em算法应用_机器学习_157可得:
em算法用途 em算法应用_机器学习_158
  4).重复上述2,3步,直到参数收敛即可。

  算法步骤总结

  • 输入:观测数据em算法用途 em算法应用_高斯混合模型_159,高斯混合模型;
  • 输出:高斯混合模型参数;
    1). 设置参数的初始值,准备开始迭代;
    2).E步:根据当前模型参数,计算分模型em算法用途 em算法应用_概率模型_160对观测数据em算法用途 em算法应用_概率模型_161的响应度,即观测数据em算法用途 em算法应用_概率模型_161是从分模型em算法用途 em算法应用_概率模型_160中产生的概率;
    em算法用途 em算法应用_极大似然估计_164
    3).M步:计算新一轮迭代的模型参数;
    em算法用途 em算法应用_概率模型_165
    em算法用途 em算法应用_极大似然估计_166
    em算法用途 em算法应用_极大似然估计_167
    4).重复上述2,3步,直到参数收敛即可。

5.EM算法的推广——广义期望极大算法(GEM)

  待补充