Jensen不等式

Jensen不等式给出了积分的凸函数值必定大于凸函数(convex)的积分值的定理。在凸函数曲线上的任意两点间连接一条线段,那么线段会位于曲线之上,这就是将Jensen不等式应用到两个点的情况,如图(1)所示\((t\in[0,1])\)。我们从概率论的角度来描述Jensen不等式:假设\(f(x)\)为关于随机变量\(x\)的凸函数\(f'(x)\geq 0\),则有\(f\left(E(x)\right)\leq E\left(f(x)\right)\)。反之,如果\(f(x)\)为关于\(x\)的凹函数(concave),则有\(f\left(E(x)\right)\geq E\left(f(x)\right)\)。

对于严格的凸函数\(\left(f''(x)>0\right)\),想取得相等关系\(f\left(E(x)\right)=E\left(f(x)\right)\),则有\(x=E(x)\),那么\(x\)必须为常数。

期望最大化

期望最大化(Expectation Maximization,EM)算法常用于求解概率模型的极大似然问题,其典型的应用场景包括:1)观察到的数据不完全;2)似然函数无法直接计算但可以用隐变量(latent variables)来表示。对于第一种应用场景,我们可以将缺失的数据视为隐变量,然后用已有的观测数据将其推导出来,最后也就回到了第二种应用场景。假设在概率模型中,\(x^{(i)}\)和\(z^{(i)}\)分别为观测值和隐变量(\(i=1,2,\cdots,m\)),两者的联合概率为\(p(x,z;\theta)\),其中\(\theta\)为模型参数。我们的目标是在仅知道\(x^{(i)}\)的前提下,求最佳的模型参数\(\theta\)以最大化似然函数 \begin{equation} \mathcal{L}(\theta)=\sum_{i=1}^m\log\left(x^{(i)};\theta\right)=\sum_{i=1}^m\log\sum_{j=1}^Kp\left(x^{(i)},z^{(i)}=j;\theta\right) \end{equation} 这里简单假设\(z^{(i)}\)为离散值\(\{1,2,\cdots,K\}\),在\(z^{(i)}\)为连续值或离散值和连续值的组合时情况也是类似的。 在仅知道\(x^{(i)}\)的情况下用极大似然法估计参数很困难。如果\(z^{(i)}\)只可能取少数几个离散值,我们还可以根据\(z^{(i)}\)分情况优化似然函数,最终求得最合理的模型参数;但若\(z^{(i)}\)的取值情况很复杂时,前面的方法很显然是行不通的。既然直接求解似然函数的最大值很难,只能退而求其次,求似然函数下界的最大值,得到一个相对较好的模型参数,这就是EM算法的精髓所在。这里我们引入隐变量\(z^{(i)}\)的概率分布\(Q_i(z^{(i)})\),则对数似然函数表述为如下形式: \begin{equation} \begin{array}{rl} \mathcal{L}(\theta)&=\sum_{i=1}^m\log\sum_{z^{(i)}=1}^KQ_i\left(z^{(i)}\right)\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{Q_i\left(z^{(i)}\right)}\\ &=\sum_{i=1}^m\log E_{z^{(i)}\sim Q_i}\left[\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{Q_i\left(z^{(i)}\right)}\right] \end{array} \end{equation} \(Q_i(z^{(i)})\)为隐变量\(z^{(i)}\)的概率分布,必须满足约束条件: \begin{equation} Q_i(z^{(i)})\geq 0,\sum_{z^{(i)}=1}^KQ_i(z^{(i)})=1 \end{equation} 对数函数\(\log x\)在区间\((0,+\infty)\)上为严格的凹函数,根据Jensen不等式可得到似然函数的下界: \begin{equation} \begin{array}{rl} \mathcal{L}(\theta)&=\sum_{i=1}^m\log E_{z^{(i)}\sim Q_i}\left[\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{Q_i\left(z^{(i)}\right)}\right]\\ &\geq \sum_{i=1}^mE_{z^{(i)}\sim Q_i}\left[\log \frac{p\left(x^{(i)},z^{(i)};\theta\right)}{Q_i\left(z^{(i)}\right)}\right]=L(\theta) \end{array} \end{equation}

从EM算法的描述可知,EM算法的每次迭代分为两步:E-step和M-step,如图(2)所示。

E-step使似然函数下界\(L(\theta)\)在\(\theta^{(t)}\)处紧贴着似然函数\(\mathcal{L}(\theta)\),我们需要调整\(Q_i(z^{(i)})\)以满足: \begin{equation} \frac{p\left(x^{(i)},z^{(i)};\theta\right)}{Q_i\left(z^{(i)}\right)}=C \end{equation} 结合\(Q_i(z^{(i)})\)的约束条件,很容易得到如下关系式: \begin{equation} Q_i(z^{(i)})=\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{\sum_{z^{(i)}=1}^K p\left(x^{(i)},z^{(i)};\theta\right)}=\frac{p\left(x^{(i)},z^{(i)};\theta\right)}{p\left(x^{(i)};\theta\right)}=p\left(z^{(i)}|x^{(i)};\theta\right) \end{equation} M-step则求使\(L(\theta^{(t)})\)取得极大值的参数\(\theta^{(t+1)}\)作为下一次迭代的初始点。

如果将\(L(\theta)\)定义为关于\(Q_i(z^{(i)})\)和\(\theta\)的函数\(J(Q,\theta)\),则EM算法的优化策略和坐标上升(coordinate ascent)是一致的。在E-step中,沿着\(Q\)定义的方向最大化\(J(Q,\theta)\);在M-step中,沿着\(\theta\)定义的方向最大化\(J(Q,\theta)\),这也可以解释EM算法在迭代过程中会使目标函数收敛到局部最优解。

高斯混合模型

密度估计(Density Estimation)中的高斯混合模型(Gaussian Mixture Model,GMM)是EM算法的一个典型应用,下面就以GMM为例展示EM的强大威力。高斯混合模型可以表示成\(K\)个高斯分布的线性加权: \begin{equation} P(x)=\sum_{k=1}^K\phi_k\mathcal{N}(x|\mu_k,\Sigma_k) \end{equation} 其中\(w_k\)为第\(k\)个高斯分布的权值。我们要估算出模型中的所有参数\(\phi_k,\mu_k,\Sigma_k\)。 假设现有观测数据集合\(\mathcal{S}=\{x^{(i)}|x^{(i)}\in\mathbb{R}^n,i=1,\cdots,m\}\),每个样本\(x^{(i)}\)都有一个对应的隐变量\(z^{(i)}\in\{1,\cdots,K\}\)表示\(x^{(i)}\)属于哪一个高斯分布,\(z^{(i)}\)服从参数为\(\phi_1,\cdots,\phi_K\)的多项分布\(P(z^{(i)}=k)=\phi_k\),参数满足以下约束条件: \begin{equation} \sum_{k=1}^K\phi_k=1,\quad \phi_k\geq 0,k=1,\cdots,K \end{equation} \(x^{(i)}\)和\(z^{(i)}\)之间的联合分布\(P(x^{(i)},z^{(i)})=P(x^{(i)}|z^{(i)})P(z^{(i)})\)。在已知\(z^{(i)}=k\)的前提下我们知道\(x^{(i)}\)的概率分布,即\(x^{(i)}|z^{(i)}\sim \mathcal{N}(\mu_k,\Sigma_k)\): \begin{equation} P(x^{(i)}|z^{(i)}=k)=\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma_k|^{\frac{1}{2}}}\exp\left(-\frac{1}{2}(x^{(i)}-\mu_k)^T\Sigma_k^{-1}(x^{(i)}-\mu_k)\right) \end{equation} 很可惜\(z^{(i)}\)是未知的隐变量,可能是任意一个高斯分布,因此\(P(x^{(i)})=\sum_{z^{(i)}=1}^K P(x^{(i})|z^{(i)})P(z^{(i)})\)。似然函数形式如下: \begin{equation} \ell({\phi,\mu,\Sigma})=\prod_{i=1}^mP(x^{(i)};\phi,\mu,\Sigma)=\prod_{i=1}^m\left(\sum_{z^{(i)}=1}^K P(x^{(i}|z^{(i)})P(z^{(i)})\right) \end{equation} 将上式转化为形式上更简单的对数似然函数并加上约束条件构成拉格郎日函数: \begin{equation} \mathcal{L}({\phi,\mu,\Sigma})=\sum_{i=1}^m\log\left(\sum_{z^{(i)}=1}^K P(x^{(i}|z^{(i)})P(z^{(i)})\right)+\lambda(\sum_{k=1}^K\phi_k-1) \end{equation} 仔细观察这个拉格郎日函数,我们发现对数函数的输入为多个高斯函数的加权,这就导致了利用普通的求偏导方法是无法获得一个解析解的。根据前面的EM算法,我们先执行E-step,利用贝叶斯定律猜测每个样本服从每个高斯分布的概率: \begin{equation} Q_k^{(i)}=P(z^{(i)}=k|x^{(i)})=\frac{P(x^{(i)}|z^{(i)}=k)P(z^{(i)}=k)}{\sum_{k=1}^KP(x^{(i)}|z^{(i)}=k)P(z^{(i)}=k)} \end{equation} 然后求得与上述拉格郎日函数等价的下界函数\(L(\phi,\mu,\Sigma)\): \begin{equation} \begin{array}{rl} L(\phi,\mu,\Sigma)&=\sum_{i=1}^m\sum_{k=1}^KQ_k^{(i)}\log P(x^{(i)},z^{(i)}=k)+\lambda(\sum_{k=1}^K\phi_k-1)\\ &=\sum_{i=1}^m\sum_{k=1}^KQ_k^{(i)}\left(\log P(x^{(i)}|z^{(i)}=k)+\log P(z^{(i)}=k)\right)\\ &\quad+\lambda(\sum_{k=1}^K\phi_k-1) \end{array} \end{equation} 注意到该下界函数中的对数函数已经直接作用到每个高斯分布上了。现在我们可以对参数求偏导来计算使下界函数最大的更好的参数。 \begin{equation} \frac{\partial L}{\partial\mu_k}=0\Rightarrow\mu_k=\frac{\sum_{i=1}^mQ_k^{(i)}x^{(i)}}{\sum_{i=1}^mQ_k^{(i)}} \end{equation} \begin{equation} \frac{\partial L}{\partial\Sigma_k}=0\Rightarrow\Sigma_k=\frac{\sum_{i=1}^mQ_k^{(i)}(x^{(i)}-\mu_k)(x^{(i)}-\mu_k)^T}{\sum_{i=1}^mQ_k^{(i)}} \end{equation} \begin{equation} \frac{\partial L}{\partial\phi_k}=0\Rightarrow\sum_{i=1}^m\frac{Q_k^{(i)}}{\phi_k}+\lambda=0 \end{equation} 结合约束条件\(\sum_{k=1}^K\phi_k=1\),得到\(\lambda=-m\),因此\(\phi_k=\sum_{i=1}^mQ_k^{(i)}/m\)。 根据上述推到,我们给出GMM模型的算法:  EM算法收敛速度要比K-means慢,而且每次迭代的计算量也很大。较好的初始值可以加快收敛速度,因此通常可以用K-means完成粗略的聚类,然后用每个类簇的均值、方差和类簇占总样本的比例来初始化GMM的参数。似然函数可能存在多个局部最优解,且EM算法肯定可以搜索到似然函数的局部最大值,但不能保证可以求得全局的最大值。

根据上述的GMM算法,我写了一个Python版本的GMM代码。我随机生成了3组高斯分布的数据,并在图(3)中用三种不同颜色的统计直方图表示;然后用生成的数据用EM算法训练GMM模型,训练过程中的对数似然函数的变化曲线如图(4)所示;最后用训练好的GMM模型反过来预测训练数据的概率密度函数值,如图(3)中的红色曲线所示。

Expectation Maximization and GMM的更多相关文章

  1. EM算法(Expectation Maximization)

    1 极大似然估计     假设有如图1的X所示的抽取的n个学生某门课程的成绩,又知学生的成绩符合高斯分布f(x|μ,σ2),求学生的成绩最符合哪种高斯分布,即μ和σ2最优值是什么? 图1 学生成绩的分 ...

  2. EM算法(Expectation Maximization Algorithm)初探

    1. 通过一个简单的例子直观上理解EM的核心思想 0x1: 问题背景 假设现在有两枚硬币Coin_a和Coin_b,随机抛掷后正面朝上/反面朝上的概率分别是 Coin_a:P1:-P1 Coin_b: ...

  3. EM算法(Expectation Maximization Algorithm)

    EM算法(Expectation Maximization Algorithm) 1. 前言   这是本人写的第一篇博客(2013年4月5日发在cnblogs上,现在迁移过来),是学习李航老师的< ...

  4. 漫谈 Clustering (番外篇): Expectation Maximization

    Expectation Maximization (EM) 是一种以迭代的方式来解决一类特殊最大似然 (Maximum Likelihood) 问题的方法,这类问题通常是无法直接求得最优解,但是如果引 ...

  5. 最大期望算法 Expectation Maximization概念

    在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Lat ...

  6. [转]EM算法(Expectation Maximization Algorithm)详解

    https://blog.csdn.net/zhihua_oba/article/details/73776553 EM算法(Expectation Maximization Algorithm)详解 ...

  7. EM(Expectation Maximization)算法

    EM(Expectation Maximization)算法  参考资料: [1]. 从最大似然到EM算法浅解 [2]. 简单的EM算法例子 [3]. EM算法)The EM Algorithm(详尽 ...

  8. 简单理解EM算法Expectation Maximization

    1.EM算法概念 EM 算法,全称 Expectation Maximization Algorithm.期望最大算法是一种迭代算法,用于含有隐变量(Hidden Variable)的概率参数模型的最 ...

  9. EM(Expectation Maximization )

    概括 看李航老师的<统计学习方法>知道,EM是一个对于有隐含随机变量的概率模型的参数的估计方法,它是一种无监督的算法. 只是有些重要的点并没有给出, 比如没有三硬币例子中直接给出的 u(z ...

随机推荐

  1. Fitnesse启动参数与配置

    Fitnesse最新版20140630默认启动后,网页风格与 fitnesse.org 的Bootstrap风格完全不一致. 需要配置plugins.properties中的Theme=bootstr ...

  2. 帮同事写了几行代码,在 安装/卸载 程序里 注册/卸载 OCX控件

    写了个小控制台程序,这个程序用来注册 / 卸载OCX控件,用在Inno Setup做的安装卸载程序里. #include "stdafx.h" #include <windo ...

  3. BFC--绝对值得你思考

    CSS BFC(Block Formatting Context)      BFC是W3C CSS 2.1规范中的一个概念,他决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用.     ...

  4. 七牛云存储官方接口PHP版本

    PHP SDKv6 此 SDK 适用于 PHP 5.1.0 及其以上版本.基于 七牛云存储官方API 构建.使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云存储上. ...

  5. 分析特定类的python脚本

    今天接触了下pyUSB,事先没看对象内部成员资料,直接用python的dir函数看了看pyUSB的内部构成.突然间想到自己可不可以写个简单的脚本,利用dir或其他函数遍历某个对象内部的所有成员,并打印 ...

  6. leetcode@ [355] Design Twitter (Object Oriented Programming)

    https://leetcode.com/problems/design-twitter/ Design a simplified version of Twitter where users can ...

  7. Himi的base64代码

    // // DataHimi.cpp // Oh!MonsterMR // // Created by Himi on 12-3-8. // Copyright (c) 2012年 Augustimp ...

  8. Homework-10 the Enhanced Version

    经过一周对于JavaScript HTML语言等相关知识的学习,我终于基本完成了作业的要求,也是实现了我原先计划的第二部,推出了加强版的Homework-10 他由3个HTML组成,JS脚本直接选择嵌 ...

  9. Web Service学习之七:CXF拦截器

    一.用途 CXF拦截器类似Struts2的拦截器,后者是拦截和处理请求,前者是对发送和接收的sope消息进行处理,一般用于WS请求响应中的权限验证.日志记录,Soap消息处理,消息的压缩处理等: 这个 ...

  10. Spring AOP Interceptor transaction is not working

    Problem The Spring AOP transaction is not working in following interceptors? <bean id="testA ...