EM算法笔记

背景

        EM(Expectation-Maximum)算法也称期望最大化算法,是最常见的隐变量估计方法,它的思想在很多算法上有所体现。例如高斯混合模型(Gaussian mixture model,简称GMM)的参数;隐式马尔科夫算法(HMM)、LDA主题模型的变分推断、还有VAE、GAN等等。

        在机器学习算法中,一般学习包含两种数据情况,一种是完整数据(complete case )其包含我们可见的配对数据(z,x),所以我们能够直接用最大似然估计MLE的方式去估计参数,就能学习到z和x之间的表示关系。而另一种是不完整数据(incomplete case),这种情况下直接使用MLE是无法进行参数估计,这时的z就是所述的隐变量。比如我们对机器输入一段语音,机器只知道声音数据,却不知道其背后所表达的意思,这里的声音可以比作x,背后的意思可以比作z。

对于完整数据(complete case ),我们的目标函数如下:

EM算法笔记_数据

虽然参数

EM算法笔记_数据_02

未知,但是分别对

EM算法笔记_最大似然估计_03


EM算法笔记_最大似然估计_04

用MLE的方式进行估计即可。(chain rule)

对于不完整数据(incomplete case ),我们的目标函数如下:

EM算法笔记_迭代_05

           

EM算法笔记_最大似然估计_06

因为此时的z是不可见的隐变量,所以我们通过全概率公式,将其转换,最后拆分成基于z的后验概率和x的后验概率的乘积,即,此时的参数

EM算法笔记_数据_02

和z都是未知的。不过,如果我们能够通过先求得z的参数,再求x的参数,这样问他就能够迎刃而解。

EM算法推导

 给定模型参数

EM算法笔记_数据_02

(未知),观测变量x(已知),以及隐变量z(未知)

目标函数即为,用最大似然估计求如下公式:

EM算法笔记_迭代_05

   (1)目的就是求如下目标所求的最大参数

EM算法笔记_数据_02

,(arg max 下面 是

EM算法笔记_数据_02

  我不知道怎么打)

  (2)假设经过n次迭代,我们得到了第n次迭代的参数

,这个时候

假定其已知,那么目标函数就可以写成如下形式,(arg max 下面 是

EM算法笔记_数据_02

  我不知道这么打):

  (3)

同时,在这里引入隐变量z,先把左边拆开,右边暂时不管。

EM算法笔记_em_13

   (4)

继续用全概率公式的方式进行拆解(chain rule)

EM算法笔记_最大似然估计_14

  (5)

在这里引入一个小小的变换,乘上1

EM算法笔记_最大似然估计_15

   (6)

并进行整理,就是把位置对应的换一下

EM算法笔记_迭代_16

    (7)

因为在log 包含求和是比较不好算的,所以这里用优化其下届的方式进行优化,就有

EM算法笔记_数据_17

   (8)

为什么会得到上述的公式呢?这里用到了琴生不等式((Jensen)不等式(也称为詹森不等式)),通俗来讲就是,可以通过琴生不等式对上述的情况进行近似求解。解释如下:

比方说,要求解

EM算法笔记_数据_18

,但这种形式求解是不很好求,但是如果我们求

EM算法笔记_迭代_19

的话,却比较好解决,所以,琴生不等式,就将

EM算法笔记_数据_18

转化成了

EM算法笔记_迭代_21

的情形,其具体形式和条件如下:

EM算法笔记_em_22

  并且 要求   

EM算法笔记_迭代_23

回到公式(7)我们就会发现,这样正好符合上述的不等式要求,即

EM算法笔记_em_24

可以类比成 

EM算法笔记_em_25

,后面那部分就对应另一部分,因为在给定x和参数

的情况下,

EM算法笔记_最大似然估计_26

。接着,继续从(8)继续往下,因为

EM算法笔记_最大似然估计_26

,所以我们把

EM算法笔记_最大似然估计_28

直接合并到前面去,(log 相减 等于 log 里面相除)得到:

EM算法笔记_最大似然估计_29

  (9)

那么最终,就是从公式(3)转换到如下式子:

EM算法笔记_最大似然估计_30

   (10)那么第n+1 次迭代后的参数

的求解就可以写成如下形式(arg max 下面 是

EM算法笔记_数据_02

  我不知道这么打):

    (11)即,最后优化其下届,就能够做到不断优化的作用。由于只需要求

EM算法笔记_数据_02

的优化,所以其他无关项都可以舍去,

EM算法笔记_最大似然估计_33

可以直接划去,

EM算法笔记_em_34

中,和

EM算法笔记_数据_02

无关的项也都可以舍去,参照公式(9),得到最终的优化目标:

EM算法笔记_数据_36

   (12)

再对其进行整理,得到:

EM算法笔记_最大似然估计_37

    (13)即,最终的目标为求在给定x和

的情况下,求z的期望,并乘上

EM算法笔记_迭代_38

就是最后的优化目标,得到下式:

EM算法笔记_机器学习_39

     (14)

那么,最后的优化就分为两步:

1.先求出z在给定参数x和

的情况下,关于在

EM算法笔记_迭代_38

的期望值,也称为E步,即求期望

EM算法笔记_最大似然估计_41

   (15)2.求得关于z的期望之后,可以认为此时z为已知,这个时候就是上述的完整数据(complete case )的情形,所以可以用MLE的方式去优化求解参数

EM算法笔记_数据_02

,就可以求解最大化

EM算法笔记_迭代_38

,也称为M步,即最大化目标函数:

EM算法笔记_数据_44

    (16)

最后总结就是,从整个优化过程来看

1.在E步的时候,假设参数

EM算法笔记_数据_02

已知,来求解隐变量z2.在求得隐变量z之后,再假设z已知,来求解参数

EM算法笔记_数据_02

,这里用MLE 的方式进行优化

如此往复,就能求得最终的参数 。

EM算法性质

1.EM算法并不是全局最优的,所以使用的时候,要重复多次,找到最优的结果,(隐变量模型他本身不是凸函数)。

2.EM的趋势,其最大似然的估计过程,最大化的过程一定是严格递增的,即一定能够收敛,如下图所示

EM算法笔记_em_47

EM算法笔记_迭代_48

图1,EM算法 极大似然优化过程的曲线图

暂时写到这,

欢迎批评指正