zoukankan      html  css  js  c++  java
  • EM算法理论与推导

    EM算法(Expectation-maximization),又称最大期望算法,是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计(或极大后验概率估计)

    从定义可知,该算法是用来估计参数的,这里约定参数为 [公式] 。既然是迭代算法,那么肯定有一个初始值,记为 [公式] ,然后再通过算法计算 [公式]

    通常,当模型的变量都是观测变量时,可以直接通过极大似然估计法,或者贝叶斯估计法估计模型参数。但是当模型包含隐变量时,就不能简单的使用这些估计方法

    举个具体的栗子:

    永远在你身后:Matplotlib输出动画实现K-means聚类过程可视化​zhuanlan.zhihu.com

    K-means算法中,除了给定的样本(也就是观测变量) [公式] 以及参数 [公式] (也就是那些个聚类的中心)之外,还包含一个隐变量(记为 [公式] ),它是每个样本的所属类别

    可以理解为,我们之所以对一批样本进行聚类,也是因为认为这些样本是有它们潜在的类别的,也就是说还有一个隐变量是我们没有(或者无法)观测到的


    下面先给出EM算法的步骤公式,然后再对公式进行推导。假设在第 [公式] 次迭代后参数的估计值为 [公式] ,对于第 [公式] 次迭代,分为两步

    • E步,求期望:

    [公式]

    关于的随机变量的函数的期望,公式在后面会给出

    • M步,最大化:

    [公式]

    其中, [公式] 称为 [公式] 函数,是EM算法的核心。下面就来对公式进行推导


    给定一组观测数据记为 [公式] ,以及参数 [公式] 。因为 [公式] 是独立同分布,所以有以下对数似然函数:

    [公式]

    可以通过极大似然估计来求解最优参数,即:

    [公式]

    但是由于隐变量的存在, [公式] 变为

    [公式]

    注意:联合概率公式 P(XZ)=P(X|Z)P(Z)

    这样直接求解就变得困难,一个办法是构造一个容易优化的——关于对数似然函数的——下界函数,通过不断的优化这个下界,迭代逼近最优参数。为了方便下面推导流畅,提前先贴几个公式

    随机变量的数学期望

    [公式]

    随机变量函数的数学期望。设 [公式] ,则 [公式] 的期望为:

    [公式]

    相对熵

    [公式]

     

    下面是具体的推导。首先引入隐变量 [公式] 的概率分布 [公式] ,满足

    [公式]

    并且以下等式成立

    [公式]

    两边同时取对数

    [公式]

    同时求两边在 [公式] 上的期望

    [公式]

    因为 [公式] 与 [公式] 无关,所以求期望仍然不变:

    [公式]

    然后将右边展开

    [公式]

    由此得到对数似然函数的下界。并且当 [公式] ,上式可以取到等号,由相对熵的性质可知,相对熵为0,也就是 [公式]

    其中 [公式] 是 [公式] 的概率分布,但是因为无法观测 [公式] ,所以 [公式] 未知,可以假设其等于 [公式] ,也就是 [公式] 关于给定 [公式] 与 [公式] 的后验,且 [公式] 是由初始值 [公式] 一次次迭代计算而来,所以此处的 [公式] 是迭代 [公式] 次后的值

    [公式]

    然后通过极大似然估计得到:

    [公式]

    以上,就是EM算法中E步的由来,然后令 [公式] ,就得到了M步的公式

    [公式]

     

    以上就是EM算法的推导过程,为了加深理解,我们可以换一个角度来总结一下。前面我们定义了似然函数

    [公式]

    由于累加号嵌套在 [公式] 函数中,难以直接进行求解,如果换一个似然函数,就容易的多

    [公式]

    但是,又由于的 [公式] 是隐变量,无法得到它的概率分布,只能通过给定的 [公式] 和 [公式] 来计算它的后验分布,然后求似然函数在此分布上的期望

    [公式]

    最后,再寻找能使似然函数的期望最大化的参数

  • 相关阅读:
    PE文件捆绑实现二:(远程线程注入)
    C++中Vector清空
    ttrss更新到最新版本后发访问非80和443端口规避
    Git配置https_proxy访问github失败
    Haproxy配置拦截指定src的连接
    synology git管理程序添加
    ActiveMQ深入浅出系列 (一)
    sl4fj日志级别
    HTTP上传文件解析
    linux下jcmd无法获取jvmdump
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/13040616.html
Copyright © 2011-2022 走看看