第十二讲:贝叶斯学习与EM算法(下)

主要内容

 

 

2 EM算法

    2.1 引入

           2.1.1 MLE回顾

           2.1.2 高斯混合模型与EM算法

           2.1.3 GMM的贝叶斯理解

           2.1.4 EM算法的收敛性

    2.2 算法

       2.2.1 算法过程

       2.2.2 总结

    2.3 一些例子

           2.3.1 硬币模型

           2.3.2 用EM算法估计GMM参数

           2.3.3 用EM算法估计HMM参数

           2.3.4 伯努利分布的模型混合

    2.4 广义EM算法(GEM)

 

2.1  引入

 

经过前面几讲的学习,相信大家对于极大似然估计在熟悉不过,当模型中的所有变量均是观测变量时,MLE可以很好的解决问题,但实际中往往会遇到未知的变量存在,称它为"隐变量"。那么这种情况下,该如何对模型参数进行估计呢?

 

本讲将介绍解决它的EM(Expectation-Maximization)算法,直译为"期望最大化"算法,分E步和M步。在这算法中,每经历一次M步,实际上做一次极大似然估计(MLE),所以EM算法可看作因存在隐变量而导致MLE无法直接使用,故而想出的一种迭代算法,但其本质仍是MLE。

 

2.1.1 MLE回顾

    

极大似然估计(MLE)

 

目的:利用已知样本结果,反推最有可能(最大概率)导致这样结果的参数值θ

 

如果事件X的概率分布为 p(X),含有参数θ,进行了m次观测,具体观测到的值为,它们相互独立。那么这个联合概率分布关于θ的函数叫似然函数

 

 

更为常用的似然函数形式是对这个概率取对数,即似然函数为

 

 

为什么要取log? 


如果不取对数,那似然函数就是若干概率的乘积。

 

每一个概率都小于1,这种情况下如果有100个样本点,相乘得到结果几乎为0了。任何一门编程语言,都不太可能保证如此精确的计算。我们把这个叫做“下溢”。当然,另一方面,也因取对数计算更简单。

 

这里的是一种表示方法,也可以简单写做 即:

 

根据对数的性质,容易想到log里连乘可化为连加,即

 

 

接下来我们想办法选择,使最大化

 

 

求出的值就叫参数的极大似然估计值。

 

特别的,如果右端的再除以m,就变成我们统计学上学过的"期望"

 

 

注:arg max是一种函数,argmax(f(x))是使 f(x)取得最大值对应变量x。arg即argument,意为“自变量”。

 

2.1.2 高斯混合模型与EM算法

 

回顾了MLE后,学习EM算法之前,我们先看一个新的模型:高斯混合模型。

 

顾名思义,就是多个高斯模型混合在一起,假设现在有这些一些数据(下图中所示),如果是用一个高斯模型去拟合这堆数据的话,显然最后我们极有可能会得到黑色曲线,但是对应于曲线最高点下却没有数据存在,这本应该是最大概率存在的地方。很显然,一个高斯模型已经不能很好地去解决问题,如果是两个高斯模型的话对原始数据拟合的就比较好了(蓝线与红线所示)。

 

设有随机变量X,则混合高斯模型可以用下式表示:

其中称为混合模型中第k个分量,也即第k个高斯模型,是每个高斯模型的系数,也称混合系数且满足

应用极大似然估计:

其中N表示样本总数,需要求解的参数。对上式各个变量求偏导并令其等于0似乎很难得到解,虽然很困难,但目前好像也没有别的解决方法。

 

  1)先对求导并令其等于0得到:

其中比较复杂的项我们用表示。化简之后得到:

  2)对分别求偏导并令其等于0得到:

这出现了一个很有趣的现象,我们要求的参数的表达式都包含了,而这一项的求解又依赖于的值,似乎陷入了循环。怎么解决呢?

 

我们可以先给一些初始值,这显然不是我们想要得到的最优值,但我们总得给这个循环一个开始,有了之后,我们就可以计算,有了后呢,又可以计算新的了,其实我们已经得到了EM算法求解GMM的整个流程了,把整个过程以算法的形式表示。

 

算法

     

根据当前的计算

 根据E步骤计算的计算新的

 其中,

 

2.1.3 GMM的贝叶斯理解

 

前面提到GMM模型表示:

其中表示第k个高斯模型的系数(权重),或者第k类被选中的概率,我们引入一个k维的随机变量z。表示它的第k个维度,只能取1或0两个值。表示第k类被选中,

 

用概率图表示如下:

 

 

 

隐变量z是独立同分布的,可以写出它的的联合概率分布

 

 

设样本被我们分为两类,显然,每一类中的数据都是服从正态分布的。这个叙述可以用条件概率来表示:

 

 

进而上式可以写成如下形式

 

根据条件概率公式,求出p(x)的形式

 

隐变量中『隐』的意义是:我们知道数据可以分成两类,但是随机抽取一个数据点,不知道这个数据点属于第一类还是第二类,它的归属我们观察不到,因此引入一个隐含变量z来描述这个现象。

 

注意到在贝叶斯的思想下,p(z)是先验概率,p(x|z)是似然概率,很自然我们会想到求出后验概率

 

上式中我们定义符号,来表示第k个分量的后验概率。其实它也等于隐变量z的期望值

 

我们已经得到了GMM的似然函数

 

为了估计这三个参数,需要分别求解出这三个参数的最大似然函数。我们先求解的最大似然函数。如下图,取对数后再对求导,并令导数为0即得到最大似然函数

 

同乘,重新整理可以得到

 

 

其中

 

表示点属于类别k的后验概率

 

同理求最大似然函数,可以得到: 

 

接着使用MLE估计高斯混合模型的混合系数

 

注意到的限制条件,因此需要加入拉格朗日算子

 

求上式关于的最大似然函数,得到: 

 

上式两边同乘,可以得到,进而可以得到更简洁的表达式: 

2.1.4 算法推导(收敛性)

 

我们已经知道如何使用EM算法求解高斯混合模型,但这背后的数学依据又是什么呢?

 

首先对于概率分布为 的m次观测,我们将它添上隐变量z,EM算法推导如下:

 

1.取对数似然函数   

                                           

 

为了将隐变量z强制暴露出来,将化为再取对数。接着对z求积分,可以等价得到变换后的L:

 

接下来要做的是求使最大的值。但注意,由于此时含有隐随机变量z,直接找参数估计是困难的。我们的策略是建立的下界,并求该下界的最大值,重复这个过程,直到收敛到局部最大值。

 

什么意思呢?

 

你可这样理解 : 若让这个似然函数始终严格大于等于某个数,或者某个简单的函数,并且我们方便求出那个数或者简单函数的极大值。那么就用这个新函数的极大值代替原本要求的那个极大值,因为它肯定比我们原来要求的小,也比我们原来要求的简单。

 

比如原本要求似然函数A的最大值,我们知道始终A>=B,就改去求B的最大值用来代替A,就能使得当前的极大值稍微变大一点,如此不停地迭代下去,最终得到收敛。

 

2. 关键的一步-求

 

接下来是整个EM算法思想中最关键的一部分:

 

由上一步,我们已知不能直接最大化,采用不断建立的下界(E步),然后优化下界(M步)的方法。

 

具体如下:假定对于每一个样本,都有隐变量,并把隐变量的概率分布计为

 

已知

 

为了将引入,就在求和公式里面乘以,再除以

 

 

为什么要这么做呢?因为根据lazy规则

 

其实是的期望,

 

所以,在引入以后,我们得到了所要求的期望

 

 

Lazy Statistician规则:     

    设Y是随机变量X的函数, (g是连续函数)

    X是离散型随机变量,它的分布律为

    其中k=1,2,…。若 的值绝对收敛,则有  

 

接着,我们还需用到一个公式,叫Jensen不等式

 

Jensen不等式:

 

    若f是凸函数,X是随机变量,那么

    特别地,如果f是严格凸函数,那么

    当且仅当 时取等号,此时X为常量。

    另:Jensen不等式应用于凹函数时,不等号方向反向

 

根据Jensen不等式,我们分析如下

 

 

求得结果

 

注意其实一直是我们假定出来的,二者取等号的条件是

 

 

这个条件成立意味着成正比

 

 

由于对每一样例表示该样例隐含变量z的某种分布,根据概率分布的性质可知

 

 

所有的之和为1,对于

 

 

两边积分求和

 

 

将C带入原来的表达式

 

 

再对分母中的z求加和,z被我们变没了。联合分布变成了边缘分布

 

 

此时,分子是x和z的联合分布,分母是x的边缘分布,两者做除法,可以解出,它等于x给定的时候z的条件概率

 

2.2 算法

 

经过上文的推导我们求出了EM算法中需要用到的公式,以及GMM的EM算法,抽丝剥茧,将算法思想提取出来:

 

算法步骤:

            

 

EM算法可看做用坐标下降法来最大化对数似然下界的过程。

 ——周志华《机器学习》第163页脚注

总结

    EM算法作为推导含有隐变量模型参数方法,最关键的一步,就是打破了先有鸡还是先有蛋的限制,即一开始就给你一只鸡,避免了掉入循环的陷阱,之后的事情便好办多了。其实我们做研究和工程就像EM算法:研究像M-step,提高了理论上能达到的上界,然后工程E-step跟进,尽量逼近这个上界。如此往复。直到卡在一个局部最优的瓶颈里跳不出来 :)

 

2.3 一些例子

 

2.3.1 硬币模型

 

有两个不均匀硬币A、B,每次实验抛10次,记录正面和反面次数。本例中计为H(head)和T(tail),多次这样的实验后,预测硬币A,B各自的正面概率.

 

 

第一种情况是实验员记录了每次丢的是哪个硬币,没有隐变量,直接最大似然就可以算出A,B的正面概率

A硬币丢了24+6=30次,其中24次正面=0.8 ,同理可计算

      

第二种情况就是忘记记录每次丢的是A硬币还是B硬币了。我们将观测到的结果记录以下的表格,并使用EM算法的公式计算。

上表中给出的是不同样本中出现“正面朝上”和“反面朝上”的次数,右边给出了EM算法在本例中的计算公式

 

计算过程:

 

首先随机给定两个初始值,假设为0.6和0.5,硬币个数m=2,使用A硬币和B硬币的概率分别为0.5,进行E步计算

 

这样算完一轮就得到下表,例如=0.45 实际抛掷中有5次正面朝上,所以期望为0.45*5=2.25 即表中2.2H。

 

所有的计算出来以后,求

 

 

迭代多次后正面向上概率收敛,即为预测结果:

 

  

2.3.2 用EM算法估计GMM参数

 

高斯混合模型

 

高斯混合模型(Gaussian Mixture Model)通常简称GMM,是一种业界广泛使用的聚类算法。上文我们已使用EM算法介绍了对它参数的估计,这里再进行相应的补充。

高斯混合模型中隐变量的含义: 每个样本属于哪个高斯 

 

我们在高斯混合模型中加入隐变量Z后变为,于是有:

 

 

求出每个样本属于不同类的概率     

 

 

 

根据EM算法的步骤计算:

 

E 步:

 

来表示第i个样本属于第K类的概率

 

 

M 步:

 

最大化求参数

 

 

分别对求导,就可以得到模型参数对应的更新值

 

2.3.3 用EM算法估计HMM参数

 

典例:已知HMM观测序列,求模型λ=(A, B, Π),隐变量为Z

 

 

依题意,我们写出未知参数的一些性质

 

   

E步:

 

             

M步:

 

2.3.4 伯努利分布的模型混合

 

列出伯努利模型概率分布以及均值和协方差

 

单个模型:

 

 

混合模型:

使用EM算法估计参数,则有:

 

E步:

 

M步:

 

2.4 广义EM算法(GEM)

 

广义期望最大算法(Generalized Expectation Maximization)是EM算法的推广。

 

我们知道EM算法中引入的是隐变量,如果我们将隐变量理解为隐分布,就得到了广义EM算法,它是在数据不完全或者存在缺失变量的情况下参数估计的迭代算法。

广义EM算法

 

E步固定参数,优化隐分布

M步固定隐分布,优化参数

E步和M步交替进行,直至最优解停止

 

 

推导过程:

 

由EM算法中我们可以知道含有隐变量z后事件分布规律可以写为

 

两边取对数,并同时除以隐变量的分布

化简

两边同时对z求期望

 

在这个式子中有

其中,第三项又称为KL距离。

 

   

    KL距离(Kullback-Leibler Divergence)也叫做相对熵(Relative Entropy)。它衡量的是相同事件空间里的两个概率分布的差异情况。其物理意义是:在相同事件空间里,概率分布P(x)对应的每个事件,若用概率分布 Q(x)编码时,平均每个基本事件(符号)编码长度增加了多少比特。我们用D(P||Q)表示KL距离,计算公式:

 

 

根据上文,我们可以得到,

其中,

可以看到对数似然度被分解成了两部分,一个是下界,另一个是KL距离。如下图所示。

也就是说,只要我们令KL距离为0, 那么就等于似然度的值了。此时再找到 θ 使得最大就好。

 

而最大化这个太简单了,在这里H(q)是q的熵,与 θ 无关只与分布q有关,所以不用管。

 

于是我们把   代入到

中得到

 

将它最大化即可求出我们所要的结果

 

GEM算法示意图

 

红色那条线就是我们的对数似然函数,蓝色那条是我们在当前参数下找到的对数似然的下界函数。

 

E 步:

 

初始化参数为,计算

 

把KL设为0,蓝色的线往上移使得=似然度

M步:

最大化,将参数更新成 

 

 

此时对数似然函数的值也得到了上升,这样重复进行下去,可以收敛到一个局部极值。

 

整体过程如下图所示:

图中红色线表示,我们找到了一个始终小于等于它的函数,在

 

中,让KL=0,此时有红线和蓝线有重合的位置,接着我们寻找下界的函数极大值,发现了,在位置也增大了,如此迭代多次,直到收敛于局部极大值。

那就是所要求的值。

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值