这篇文章我们来讲述一下EM算法。EM算法是机器学习中一个非常重要的算法,但是对于刚开始接触这个算法的同学来说可能理解起来没有那么轻松,本人也是反反复复看了几遍才对它有了一点感觉,所以决定把当前还算清晰的思路写下来,方便自己以后需要的时候复习,也希望能对被EM算法搞混的同学起到一点帮助的作用,下面我们进入正题。
通过求解高斯混合模型的一个小例子来比较直观地理解EM算法,例子如下:
【例】
我们目前有100个男生和100个女生的身高,我们假设这100个男生的身高服从某个正态分布,100个女生的身高服从另一个不同的正态分布;但是我们不知道这200个数据中哪个是男生的身高,哪个是女生的身高,即抽取的每个样本都不知道是从哪个分布中抽取的。然后我们的任务是估计这两个正态分布的参数θ(θ是个向量,包括均值和方差)。
【例题分析】
针对上面的问题,我们需要解决的未知量有两个:
(1)从这200个数据中任取一个数据样本,如何判断它是来自于男生数据集还是来自于女生数据集?
(2)男生、女生身高数据集的正态分布的参数分别是多少?
【EM算法求解过程】
【比较直观的理解】
(1)随机确定θ(正态分布的参数);(2)计算出在给定这个正态分布的情况下数据样本的归属情况(属于男生的正态分布or女生的正态分布)最可能是怎样的;(3)对于得出的数据样本的归属情况,步骤(1)确定的θ不一定是最可能导致出现这种归属情况的θ,因此更新θ(找到最有可能导致这种数据样本归属情况的θ);(4)重复步骤(1) - (3),直到θ的值不再改变。
【思考】
对于上面的例子,我们的目的是要找到参数θ的某个值,使得出现以上200个数据样本分布的可能性最大。因为这100个男生服从同一个高斯分布,我们假设这个高斯分布的参数为θ,则抽取到男生A(的身高)的概率是p(xA|θ),抽取到到男生B的概率是p(xB|θ),假设100个男生的抽取过程服从独立同分布(即对于任意一个数据样本,其抽取概率不受其他所有样本的影响),那么抽取两次恰好抽到A和B的概率是p(xA|θ)* p(xB|θ),以此类推,抽100次恰好抽到题目里给的100个男生的概率就是他们各自抽取概率的乘积,用数学语言表示如下:
上式是关于θ的函数,由题意,我们只要求出使得L(θ)的值最大的那个θ的值即可。为了规避连乘所带来的计算复杂性,我们可以定义对数似然函数如下:
到这里很容易就可以发现这其实是最大化似然函数的过程(本文主要讲述EM算法,这里对于最大似然估计不做详细展开),但是求解这个问题又不能简单地使用求解似然函数的方法来求解,因为我们得到的观察数据中有未观察到的隐含数据z = (z1,z2....,zn),即例子中每个样本属于哪个分布是未知的,此时我们极大化模型分布的对数似然函数如下:
对于上述数学表达式,本质上我们还是想获得一个使似然函数最大化的参数θ,不同的是现在多了未知变量z,重新明确我们的目标:“寻找合适的θ和z使得L(θ)最大!”。那么如何求解L(θ)的最大值呢?可能有的同学会说直接想对每个变量求偏导数,令其为0求解方程组即可得到使得L(θ)最大的θ和z的值。但是注意看上面的数学表达式,上面有 "和的对数",对于这种情况,求其导函数之后得到的表达式将会非常复杂,方程组不见得解的出来,所以这种方法是行不通的。那到底要怎么求解max( L(θ) )呢?注意到让我们很难受的地方就是那个 "和的对数",如果我们能够把它给去掉或者转化为其他的形式,那么情况或许会很好多,为此我们引入Jenson不等式,下面重点讲述一下Jenson不等式的用法和功能。
【Jenson不等式】
Jenson不等式的表述是,如果f(x)是凸函数,x是随机变量,则下面不等式成立:
在这里E是数学期望,对于离散型随机变量,数学期望是求和,对连续型随机变量则为求定积分。如果f(x)是一个严格凸函数,当且仅当x是常数时不等式取等号:
现在我们重新回到求解最大似然函数的问题上来,根据Jenson不等式,对似然函数放缩如下:
(注意上式是一个凹函数,所以不等号方向改变)
由以上推导过程,我们可以知道,每次固定θ,为使式(2)取等,Q(z)的计算公式就是后验概率。至此我们可以给出EM算法的一般性步骤如下:
为了使上述过程更好理解,我画了一幅草图帮助理解,如下:
上图的横坐标是θ,纵坐标是L(θ)的值,最上面的那条曲线是L(θ),下面三条曲线是不同阶段的下界函数,箭头指示了下界函数一步步逼近函数L(θ)最大值的过程。注意红色(紫色)的竖直向上的箭头表示的过程是在固定θ后,通过调整Q(z)的值使得下界函数等于L(θ),即Jenson不等式的取等过程。注意最后一个问题:"为什么这样做可以确保最后一定会收敛?",对于这个问题,鉴于本人不是学数学专业的,所以这里就不再详细讲述,详见以下链接:
文章很长,谢谢阅读!