机器学习(7)-EM算法

来源:互联网 发布:剑灵刺客捏脸数据图 编辑:程序博客网 时间:2024/06/05 14:42

最大似然估计

  • 在讲EM算法前,回顾下最大似然估计
    最大似然估计解决的问题是,在不知道参数θ的情况下,只有数据,要猜出参数θ。
    • 假设参数为θ
    • 那么在θ参数出现的情况下,出现样本xi的概率就是p(xi|θ)
    • 考虑所有样本,计算最大值,进行累乘法:l(θ)=mi=1p(xi|θ)
    • 由于累乘计算难度比较大,加入一个对数转换为加法
      • 因为我们求得是最大值,即使加入对数也不会改变结果
      • logAB = logA + logB
      • 所以最大似然函数变成 l(θ)=logmi=1p(xi|θ)=mi=1logp(xi|θ)
    • 接下来只要知道p(xi|θ)的分布函数,就可以进行相关求解

EM算法解决什么问题

  • 如果存在隐含变量,最大似然函数就难以求解
    如:假设有两枚不均匀的硬币A和B,分别朝上和朝下的概率都不同,也就是不一定是0.5朝上,0.5朝下,要求这两个硬币的朝上和朝下的概率。
    每次投掷10次,但是每次的结果我们不知道来自哪一个硬币,这个就是隐含变量。结合最大似然函数就是mi=1logzp(xi|θ)
    z在此例子中表示两种情况,一种来自A,一种来自B,这样就难以求解。
  • em算法具体是怎么做的
    这里写图片描述
    0.随机或者根据经验假设初始值朝上的概率θAθB
    1.E-step:根据参数θ计算每个样本属于Zi的概率,也就是这个样本是属于A还是属于B的概率
    2.M-Step:根据Q,求出含有θ的似然函数的下界并最大化它,得到新的参数θ
    3.不断的迭代更新下去

EM算法推导

Jensen不等式

  • 设f是定义域为实数的函数,如果对于所有的实数x。如果对于所有的实数x,f(x)的二次导数大于等于0,那么f是凸函数。
  • 如果f是凸函数,X是随机变量,那么:E[f(X)]>=f(E[X])

这里写图片描述

  • 如果是凹函数,则f(E[X])>=E[f(X)]
  • 把函数logzp(xi|θ)转换为Jensen不等式格式求解
    • logzp(xi|θ)=logzQ(z)p(xi|θ)Q(z)
    • Q(z)表示z的分布函数
    • 由于zQ(z)p(xi|θ)Q(z)p(xi|θ)Q(z)的期望
    • 设Y=p(xi|θ)Q(z) 则有:logzQ(z)p(xi|θ)Q(z)=logYP(Y)Y=logE(Y)>=E(logY)
    • E(logY)=YP(Y)logY=zQ(z)logp(xi,z;θ)Q(z)
    • 结论:l(θ)=mi=1logzp(xi,z;θ)>=mi=1zQ(z)logp(xi,z;θ)Q(z)
    • 求下界的最大值,即左右相等的时候
    • Jensen中等式成立的条件是随机变量是常数:Y=p(x,z;θ)Q(z)=c
    • 由于Q(z)是z的分布函数:zQ(z)=zp(xi,z;θ)c=1
    • 由上面的式子得:c=zp(xi,z;θ)
    • Q(z)=p(xi,z;θ)c=p(xi,z;θ)zp(xi,z;θ)=p(xi,z;θ)p(xi;θ)=p(z|xi;θ)
    • Q(z)表示第i个数据来自Zi的概率