最大化期望算法(EM)详解

我们知道最大似然估计的根本目的是根据抽样的到的样本(即数据),反推出最有可能的分布参数(即模型),这是一个非常典型的机器学习的思想。所以在很多领域最大似然估计有着极为广泛的应用。然而,如果已知的数据中含有某些无法观测的隐藏变量时,直接使用最大似然估计是不足以解决问题的。这个时候就要依靠最大化期望(EM)算法了。简单的说,EM算法是在依赖于无法观测的隐藏变量的概率模型中,寻找参数最大似然估计或者...
摘要由CSDN通过智能技术生成

我们知道最大似然估计的根本目的是根据抽样的到的样本(即数据),反推出最有可能的分布参数(即模型),这是一个非常典型的机器学习的思想。所以在很多领域最大似然估计有着极为广泛的应用。然而,如果已知的数据中含有某些无法观测的隐藏变量时,直接使用最大似然估计是不足以解决问题的。这个时候就要依靠最大化期望(EM)算法了。

简单的说,EM算法是在依赖于无法观测的隐藏变量的概率模型中,寻找参数最大似然估计或者最大后验估计的算法。

1. 最大似然估计

最大似然其实基本的原理非常简单,假设我们手里现在有一个样本,这个样本服从某种分布,而分布有参数,可如果我现在不知道这个样本分布的具体参数是多少,我们就想要通过抽样得到的样本进行分析,从而估计出一个较准确的相关参数。

以上,这种通过抽样结果反推分布参数的方法就是“最大似然估计”。现在简单思考一下怎么去估计:已知的一个抽样结果和可能的分布(比如说高斯分布),那我就像小学生解方程那样呗,先设出分布的参数(比如高斯分布中就是设出 σ σ μ μ ),然后我计算得到现在这个抽样数据的概率函数,令这个概率最大,看此时相关参数的取值。

这个思路很容易理解,能使得概率最大的参数一定是“最可能”的那个,这里的“最可能”也就是最大似然估计中“最大似然”的真正含义。

只是这么说可能有点抽象,看一个具体的例子。设产品有合格、不合格两类,未知的是不合格品的概率 p p ,显然这是一个典型的两点分布 b ( 1 , p ) 。我们用随机变量 X X 表示是否合格, X = 0 表示合格, X=1 X = 1 表示不合格。如果现在得到了一组抽样数据 (x1,x2,,xn) ( x 1 , x 2 , … , x n ) ,那么不难写出抽样得到这组数据的概率:

f(X1=x1,X2=x2,,Xn=xn;p)=i=1npxi(1p)1xi(1) (1) f ( X 1 = x 1 , X 2 = x 2 , … , X n = x n ; p ) = ∏ i = 1 n p x i ( 1 − p ) 1 − x i

我们把上面这个联合概率叫做样本的似然函数,一般把它两侧同时取对数(记为对数似然函数 L(θ) L ( θ ) )。 L(θ) L ( θ ) 关于 p p 的求偏导数,令偏导数为0,即可求得使得 L ( p ) 最大的 p p 值。

(2) L ( p ) p = 0 p ^ = i = 1 n x i / n

其中,求得的 p p 值称为 p 的最大似然估计,为示区分,用 p^ p ^ 表示。

其他分布可能计算过程更加复杂,然而基本的步骤与这个例子是一致的。我们总结一下:设总体的概率函数为 p(x;θ) p ( x ; θ ) θ θ 为一个未知的参数,现已知来自总体的一个样本 x1,x2,,xn x 1 , x 2 , … , x n 那么求取 θ θ 的最大似然估计的步骤如下:

  1. 写出似然函数 L(θ) L ( θ ) ,它实际上就是样本的联合概率函数

    L(θ)=p(x1;θ)p(x2;θ)p(xn;θ)(3) (3) L ( θ ) = p ( x 1 ; θ ) ⋅ p ( x 2 ; θ ) ⋅ … p ( x n ; θ )

  2. 对似然函数求取对数,并整理

    ln(L(θ))=lnp(x1;θ)++lnp(xn;θ)(4) (4) ln ⁡ ( L ( θ ) ) = ln ⁡ p ( x 1 ; θ ) + ⋯ + ln ⁡ p ( x n ; θ )

  3. 关于参数 θ θ 求偏导,并令偏导数为0,解得参数 θ^ θ ^ ,这就是参数 θ θ 的最大似然估计

    L(θ)θ=0θ^=(5) (5) ∂ L ( θ ) ∂ θ = 0 ⇒ θ ^ = …

2. 隐藏变量

上面介绍了最大似然估计,可上面的做法仅适用于不存在隐藏变量的概率模型。什么是隐藏变量呢,我们看这样一个例子。假设现在班上有男女同学若干,同学们的身高是服从正态分布的,当然了,男生身高分布的参数与女生身高分布的参数是不一样的。现在如果给你一个同学的身高,你很难确定这个同学是男是女。如果这个时候抽取样本,让你做上面的最大似然估计,那么就需要做以下两步操作了:

  • 估计一下样本中的每个同学是男生还是女生;
  • 估计男生和女生的身高分布的参数;

第二步就是上面说的最大似然估计,难点在第一步,你还得先猜测男女才行。用更抽象的语言,可以这样描述:属于多个类别的样本混在了一起,不同类别样本的参数不同,现在的任务是从总体中抽样,再通过抽样数据估计每个类别的分布参数。这个描述就是所谓的“在依赖于无法观测的隐藏变量的概率模型中,寻找参数最大似然估计”,隐藏变量在此处就是样本的类别(比如上例中的男女)。这个时候EM算法就派上用场了。

3. EM算法的基本思想

直观考虑这种隐藏变量的问题,你会发现它很麻烦,因为它使得人们陷入了一种两难的境地:我只有知道了哪些样本是属于同一个类别的,才能根据最大似然函数估计这个类别样本的分布参数;同样,我只有知道了不同类别样本的分布参数,才有可能判断现某个样本到底属于哪个类别的可能性更大。

也就是说,你不确定,我就确定不了;而我不确定,你也确定不了。那怎么办?我们可以先让其中一方随便确定一个值,然后用根据这个值看看对方如何变化,再根据对方的变化调整己方,这样你根据我调整,我再根据你调整,循环往复,最终双方都几乎不变了(也就是收敛了),那就可以确定相关的值了。百度百科上有一个形象的例子,我抄过来,大家可以理解一下:

“比如说食堂的大师傅炒了一份菜,要等分成两份给两个人吃,显然没有必要拿来天平一点的精确的去称分量,最简单的办法是先随意的把菜分到两个碗中,然后观察是否一样多,把比较多的那一份取出一点放到另一个碗中,这个过程一直迭代地执行下去,直到大家看不出两个碗所容纳的菜有什么分量上的不同为止。”

EM的求解思路就是我上面所描述的这样。(1)我们先根据经验为每个类别(即隐藏变量)赋予一个初始分布,这相当于是假定了分布参数。然后根据分布的参数可以求取每个数据元组的隐藏变量的期望(相当于实施了归类操作);(2)再根据归类结果计算分布参数(向量)的最大似然值,然后根据这个最大似然值在反过来重新计算每个元组的隐藏变量的期望。这样循环往复,最终如果隐藏变量的期望与参数的最大似然值趋于稳定了,EM算法就算是执行完毕了。

这么说可能有点抽象,我那上面那个男女生身高的例子再说一遍:(1)首先,我们根据经验,估计男生的身高分布为 (1.7,0.1) ( 1.7 , 0.1 ) ,女生的为 (1.55,0.1) ( 1.55 , 0.1 ) ,当然这就是瞎猜的,不一定准。然后你就可以根据参数可以求出每个数据(身高值)应该是男生的还是女生的,这个分类结果就是隐藏变量的期望;(2)这时,写出最大似然函数,根据“已知”的每个数据的隐藏变量求出参数列表的最大似然值,反过来再执行(1)步,反复迭代,直到收敛。

综上,我们也就能理解为什么EM算法要叫“最大化期望”算法了,它是由两步组成,第一步是E步,就是求期望;第二步是M步,就是最大化:

  • E步(Expectation):根据当前的参数值,计算样本隐藏变量的期望;
  • M步(Maximum):根据当前样本的隐藏变量,求解参数的最大似然估计;

4. EM算法的具体步骤

现有样本 x1,x2,,xn x 1 , x 2 , … , x n ,设每个样本的隐藏变量(这里就当做是属于的类别)为 zi z i ,其取值有 m m 种: z ( 1 ) , , z ( m ) 。EM算法的任务是求解不同类别样本的参数的最大似然估计。具体步骤如下:

4.1 写出对数化后的似然函数

假设对数似然函数如下:

lnL(θ)=ln(p(x1;θ)p(x2;θ)p(xn;θ))=i=1nlnp(xi;θ)=i=1nlnj=1mp(x
  • 79
    点赞
  • 306
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值