GMM及EM算法

标签(空格分隔): 机器学习


前言:

  • EM(Exception Maximizition) -- 期望最大化算法,用于含有隐变量的概率模型参数的极大似然估计;
  • GMM(Gaussian Mixture Model) -- 高斯混合模型,是一种多个高斯分布混合在一起的模型,主要应用EM算法估计其参数;
  • 本篇博客首先从简单的k-means算法给出EM算法的迭代形式,然后用GMM的求解过程给出EM算法的宏观认识;最后给出EM的标准形式,并分析EM算法为什么收敛。

K-Means Clustering

目标函数(损失函数)

EM过程

  1. 随机初始化样本中心点,即均值\(\mu_{k}\).
  2. E step: 固定均值\(\mu_{k}\),用\(r_{n}k\)最小化目标函数J。
  3. M step: 固定\(r_{n}k\),用\(\mu_{k}\)最小化目标函数J。
  4. 不断迭代,直至收敛。

Gaussian Mixture Model

将高斯混合模型看成是高斯分量的简单线性叠加,目标是提供一类比单独高斯分布更强大的概率模型。

  • 假设有K个高斯分布构成了数据X,则其概率分布为:
    \(p(x) = \sum_{k=1}^{K}\pi_{k}N(x|\mu_{k},\Sigma_{k})\).
    其中,数据点x属于第k个高斯分布的概率为\(\pi_{k}\),则有$0\leq \pi_{k} \leq 1, \sum_{k=1}^{K}\pi_{k} = 1 $
  • x的边缘概率分布为\(p(x) = \sum_{k=1}^{K}\pi_{k}N(x|\mu_{k},\Sigma_{k})\)

对数似然函数为:

\(\ln P(X|\pi,\mu,\Sigma) = \sum_{n=1}^{N}\ln\{\sum_{k=1}^{K}\pi_{k}N(x_{n}|\mu_{k},\Sigma_{k})\}\)
其中,\(N(x_{n}|\mu_{k},\Sigma_{k}) =\frac{1}{(2\pi)^{\frac{D}{2}}|\Sigma|^{\frac{1}{2}}}exp\{-\frac{1}{2}(x_{n}-\mu_{k})^{T}\Sigma_{k}^{-1}(x_{n}-\mu_{k})\}\)

关于\(\mu_{k}\)使对数似然函数最大:

\(\frac{\partial P(X|\pi_{k},\mu_{k},\Sigma_{k})}{\partial\mu_{k}} = \sum_{n=1}^{N}\frac{\pi_{k}N(x_{n}|\mu_{k},\Sigma_{k})(-\frac{1}{2}*2*\Sigma_{k}^{-1}(x_{n}-\mu_{k}))}{\sum_{j}\pi_{j}N(x_{n}|\mu_{j},\Sigma_{j})} \\ = -\sum_{n=1}^{N}\frac{\pi_{k}N(x_{n}|\mu_{k},\Sigma_{k})}{\sum_{j}\pi_{j}N(x_{n}|\mu_{j},\Sigma_{j})}\Sigma_{k}^{-1}(x_{n}-\mu_{k}) = 0\)
两边同时乘以\(\Sigma_{k}\),
记\(\gamma(z_{n}k) = \frac{\pi_{k}N(x_{n}|\mu_{k},\Sigma_{k})}{\sum_{j}\pi_{j}N(x_{n}|\mu_{j},\Sigma_{j})}\)得:

\(\mu_{k} = \frac{1}{\sum_{n=1}^{N}\gamma(z_{n}k)}\sum_{n=1}^{N}\gamma(z_{n}k)·x_{n}\)

关于\(\Sigma_{k}\)使对数似然最大:

\(\Sigma_{k} = \frac{1}{\sum_{n=1}^{N}\gamma(z_{n}k)}\sum_{n=1}^{N}\gamma(z_{n}k)(x_{n}-\mu_{k})(x_{n}-\mu_{k})^{T}\)

关于混合系数\(\pi_{k}\)使对数似然函数最大:

由于所有混合系数的和为1,即满足\(\sum_{k=1}^{K}\pi_{k} = 1\),则原来的最大似然问题变为带约束条件的似然函数最大化,使用Lagrange乘子法
\(max \ln P(X|\pi,\mu,\Sigma) + \lambda(\sum_{n=1}^{N}\pi_{k} - 1)\)
对\(\pi_{k}\)求偏导,令导数为0:
$0 = \sum_{n=1}^{N}\frac{N(x_{n}|\mu_{k},\Sigma_{k})}{\sum_{j}\pi_{j}N(x_{n}|\mu_{j},\Sigma_{j})} + \lambda $

两边同乘\(\pi_{k}\),得
\(0 = \sum_{n=1}^{N}\frac{\pi_{k}N(x_{n}|\mu_{k},\Sigma_{k})}{\sum_{j}\pi_{j}N(x_{n}|\mu_{j},\Sigma_{j})} + \lambda·\pi_{k}\ \ \ \ (*)\)

对k = 1,..,K求和,得:
\(\sum_{n=1}^{N}\sum_{k=1}^{K}\gamma(z_{n}k) + \lambda = 0\),

所以\(\lambda = -N\),代入(*)式,得:
\(\pi_{k} = \frac{\sum_{n=1}^{N}\gamma(z_{n}k)}{N}\)

Exception Maximizition

期望最大化EM算法的标准形式:

  • E-step:来自第j个组份的概率
  • \(x_{j}^{i} = Q_{i}(z_{i} = j) = p(z^{i} = j | x^{i};\Phi, \mu, \Sigma)\)
  • S-step:估计每个组份的参数。
  • \(\sum_{i=1}^{m}\sum_{z^{(i)}}Q_{i}(z^{(i)})log\frac{P(x^{i},z^{i};\Phi,\mu\Sigma)}{Q_{i}(z^{(i)})}\)

EM process:

Initilization:

First, choose some initial values for the means \(\mu\{\mu_{1}, \mu_{2},...,\mu_{K}\}\), covariances \(\Sigma\{\Sigma_{1},\Sigma_{2},...,\Sigma_{K}\}\), and mixing coefficients \(\pi\{\pi_{1},\pi_{2},...,\pi_{K}\}\).

E-Step:

Use the current values for the parameters \(\mu, \Sigma, \pi\) to evaluate the posterior probabilities, or responsibilities \(\gamma(z_{n}k) = \frac{\pi_{k}N(x_{n}|\mu_{k},\Sigma_{k})}{\sum_{j}\pi_{j}N(x_{n}|\mu_{j},\Sigma_{j})}\);

M-step:

Re-estimate the means \(\mu\), covariances \(\Sigma\), and mixing coefficients \(\pi\) using the results:
\(\mu_{k} = \frac{1}{\sum_{n=1}^{N}\gamma(z_{n}k)}\sum_{n=1}^{N}\gamma(z_{n}k)·x_{n}\)

\(\Sigma_{k} = \frac{1}{\sum_{n=1}^{N}\gamma(z_{n}k)}\sum_{n=1}^{N}\gamma(z_{n}k)(x_{n}-\mu_{k})(x_{n}-\mu_{k})^{T}\)

\(\pi_{k} = \frac{\sum_{n=1}^{N}\gamma(z_{n}k)}{N}\)

Evaluate the log likelihood

\(\ln P(X|\pi,\mu,\Sigma) = \sum_{n=1}^{N}\ln\{\sum_{k=1}^{K}\pi_{k}N(x_{n}|\mu_{k},\Sigma_{k})\}\)
and check for convergence of either the parameters or the log likelihood.

隐变量的视角解释GMM

有时模型内既存在观测变量(observable variable),又存在隐变量(latent variable). 当存在隐变量时,直接使用极大似然法或者贝叶斯估计模型参数就比较困难。而EM算法的目标是找到具有潜在变量的模型的最大似然解
图模型:

  • 记所有的观测数据的集合为\(X = {x_{1}, x_{2}, ..., x_{n}}\), 所有隐变量的集合为\(Z = {z_{1}, z_{2}, ..., z_{k}}\),模型所有参数的集合为\(\theta\).
    则对数似然函数为:
    \(\ln p(X|\theta) = \ln\{\sum_{z} p(X, Z|\theta) \}\);
  • 但是由于对数似然内部存在求和符号,所以一般情况下边缘概率分布\(p(X|\theta)\)一定不是指数族函数,从而使得对数似然的形式变复杂了;
  • 将\(\{X, Z\}\)数据集称为完全(complete)数据集,称实际观测数据集\(\{X\}\)为不完全(incomplete)数据集.一般我们所拥有的数据集只有不完全数据集。
  • E-step: 使用当前的参数\(\theta^{old}\)计算隐变量的后验概率\(p(Z|Z, \theta^{old})\),然后计算完全数据(X,Z)对数似然对于参数值\(\theta\)的期望:
    \(Q(\theta, \theta^{old}) = \sum_{z}p(Z|X,\theta^{old})\ln p(X, Z|\theta)\);
  • M-step: 通过最大化Q函数更新模型参数\(\theta\):
    \(\theta^{new} = argmax_{\theta}Q(\theta, \theta^{old})\)

### 引入隐变量z
用1-of-K的形式表示K维的二元随机变量z,\(z_{k} \in \{0, 1\} 并且 \sum_{k=1}^{K} = 1\),则\(p(z_{k} = 1) = \pi_{k}\),

  • z的概率分布可以表示为:\(p(z) = \Pi_{k=1}^{K}\pi_{k}^{z_{k}}\);
  • 在给定隐变量z的条件下x的条件概率分布为:\(p(x|z) = \Pi_{k=1}^{K}N(x|\mu_{k}, \Sigma_{k})^{z_{k}}\)
  • 完全数据(X,Z)的似然函数为:\(p(X,Z|\pi,\mu,\Sigma) = P(X|Z,\pi,\mu,\Sigma)·P(Z|\pi,\mu,\Sigma)\\ = \Pi_{n=1}^{N}\Pi_{k=1}^{K}\pi_{k}^{z_{n}k}N(x_{n}|\mu_{k},\Sigma_{k})^{z_{n}k}\)
  • 完全数据(X,Z)取对数,得到对数似然:
    \(\ln P(X,Z|\pi,\mu,\Sigma) = \sum_{n=1}^{N}\sum_{k=1}^{K}z_{nk}(\ln\pi_{k} + \ln N(x_{n}|\mu_{k}, \Sigma_{k})) \ \ \ \ \ (1)\)
  • 不完全数据(X)的对数似然为:
    \(\ln P(X|\pi,\mu,\Sigma) = \sum_{n=1}^{N}\ln\{\sum_{k=1}^{K}\pi_{k}N(x_{n}|\mu_{k},\Sigma_{k})\} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (2)\)

    对比完全数据的对数似然函数(1)式和不完全数据的对数似然(2)式,可以发现,对于(1)式,log运算放到了里面,而高斯分布是指数族函数,所以大大简化了计算量。

  • 计算隐变量z的条件概率:\(p(Z|X,\pi,\mu,\Sigma) = \frac{p(Z,X|\pi,\mu,\Sigma)}{p(X|\pi,\mu,\Sigma)} \\ = \Pi_{n=1}^{N}\Pi_{k=1}^{K}[\pi_{k}N(x_{n}|\mu_{k},\Sigma_{k})]^{z_{n}k}\)
  • 对\(z_{n}k\)求期望:

Exception Maximizition Algorithm

Input: Observed variables X, latent variables Z, parameters \(\theta\), and joint distribution \(p(X,Z|\theta)\).
Goal: maxizimize the likelihood function \(p(X|\theta)\).
Output: parameters \(\theta\).

  1. Choose an initial setting for the parameters \(\theta^{old}\).
  2. E step Calculate \(Q(\theta, \theta^{old}) = \sum_{z}p(Z|X,\theta^{old})\ln p(X,Z|\theta)\).
  3. M step Evaluate \(\theta^{new}\) given by \(\theta^{new} = argmax_{\theta}Q(\theta, \theta^{old})\).
  4. Check for convergence of either the log likelihood or the parameter values.

GMM与K-Means的关系

K-Means对数据点进行了硬分配,即每个数据点只属于唯一的聚类;
而GMM应用EM算法,进行了软分配。

  • 考虑一个GMM,设所有混合分量的协方差矩阵为\(\epsilon I\),则
    \(p(x|\mu_{k},\Sigma_{k}) = \frac{1}{(2\pi\epsilon)^{\frac{D}{2}}}exp\{-\frac{1}{2\epsilon}||x - \mu_{k}||^{2} \}\)
  • 一个数据点属于一个分量的responsibility为:
  • 当\(\epsilon \to 0\), 分子分母中只有当某项\(||x_{n} - \mu_{j}||^{2} \to 0\)时,整个式子的极限才存在。因此在这种极限情况下,GMM会将一个数据点分配给距它最近的那个中心点所在的簇类中。
  • 当\(\epsilon \to 0\),完全数据的对数似然函数为:
  • 这就退化为K-means的损失函数(目标函数)。

因此,K-means没有估计聚类的协方差,只是估计了聚类的均值。当GMM的方差取极限时,就退化成了k-means算法。
K-means是GMM的方差取为0的极限情况。

Exception Maximizition

期望最大化EM算法的标准形式:

  • E-step:来自第j个组份的概率
  • \(x_{j}^{i} = Q_{i}(z_{i} = j) = p(z^{i} = j | x^{i};\Phi, \mu, \Sigma)\)
  • S-step:估计每个组份的参数。
  • \(\sum_{i=1}^{m}\sum_{z^{(i)}}Q_{i}(z^{(i)})log\frac{P(x^{i},z^{i};\Phi,\mu\Sigma)}{Q_{i}(z^{(i)})}\)

为什么EM算法是可以收敛的

EM算法,是寻找具有潜在变量的概率模型的最大似然解的一种通用的方法.所以,在含有隐变量z的情况下,我们的目标是:最大化似然函数:
\(p(X|\theta) = \sum_{z}p(X, Z|\theta)\)

  • 直接优化\(p(X|\theta)\)是困难的,但是优化完整数据的似然\(p(X, Z|\theta)\)就容易的多。

所以,我们引入隐变量的分布\(q(z)\),将似然函数取对数,总能化简成如下形式:

因为KL散度总是大于等于0,所以\(L(q,\theta)\)可以看做是对数似然的下界。因此EM算法的思想就是:找到似然函数的一个下界,用这个简单的下界来逼近最终的对数似然。

  • E step: 保持\(\theta\)固定,\(L(q,\theta^{old})\)关于q(z)的最大化。实际是求对z的期望。如下图所示,期望为:当\(KL(q||p) = 0\)(即p = q)时,\(L(q,\theta^{old})\)与对数似然相等。

  • M step: 保持\(q(z)\)固定,更新参数\(\theta\),使得\(L(q,\theta^{old})\)关于\(\theta\)求最大值。对每个参数求偏导,然后令偏导为0. 由于\(KL(q||p) > 0\), 因此\(\ln p(X|\theta)\)增加量一定大于其下界\(L(q,\theta)\)的增大量。

  • 通过E step 和 M step不断迭代的过程,如果目标不完全数据的对数似然\(\ln p(X|\theta)\)存在最大值,则EM算法一定能够找到。
  • EM算法对参数初值的选择是敏感的,不同的参数往往会收敛到不同的结果。因此在实际应用中,应该设置几组参数,然后选择一组最好的结果。

关于EM算法导出的几点说明

  • 在[李航,2012]中,使用\(\ln(\theta) - \in(\theta^{old})\)推导出似然函数的下界。然后每次迭代用下界逼近似然的极大值;
  • 在PRML中,将完全数据的似然函数\(L(Z,X|\theta)\)拆分为 下界 + \(KL(q||p)\)的形式,依然是使用下界逼近目标函数的极大值。

[参考文献]

1 M. Jordan, J. Kleinberg, ect. Pattern Recognition and Machine Learning. 2006
2 李航,统计学习方法,清华大学出版社,2012.

GMM及EM算法的更多相关文章

  1. 高斯混合模型GMM与EM算法的Python实现

    GMM与EM算法的Python实现 高斯混合模型(GMM)是一种常用的聚类模型,通常我们利用最大期望算法(EM)对高斯混合模型中的参数进行估计. 1. 高斯混合模型(Gaussian Mixture ...

  2. 【机器学习】GMM和EM算法

    机器学习算法-GMM和EM算法 目录 机器学习算法-GMM和EM算法 1. GMM模型 2. GMM模型参数求解 2.1 参数的求解 2.2 参数和的求解 3. GMM算法的实现 3.1 gmm类的定 ...

  3. GMM的EM算法实现

    转自:http://blog.csdn.net/abcjennifer/article/details/8198352 在聚类算法K-Means, K-Medoids, GMM, Spectral c ...

  4. [转载]GMM的EM算法实现

    在聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut一文中我们给出了GMM算法的基本模型与似然函数,在EM算法原理中对EM算法的实现与收敛性证明 ...

  5. GMM的EM算法

    在聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut一文中我们给出了GMM算法的基本模型与似然函数,在EM算法原理中对EM算法的实现与收敛性证明 ...

  6. GMM与EM算法

    用EM算法估计GMM模型参数 参考  西瓜书 再看下算法流程

  7. 5. EM算法-高斯混合模型GMM+Lasso

    1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-GMM代码实现 5. EM算法-高斯混合模型+Lasso 1. 前言 前面几篇博文对EM算法和G ...

  8. 4. EM算法-高斯混合模型GMM详细代码实现

    1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-高斯混合模型GMM详细代码实现 5. EM算法-高斯混合模型GMM+Lasso 1. 前言 EM ...

  9. 3. EM算法-高斯混合模型GMM

    1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-高斯混合模型GMM详细代码实现 5. EM算法-高斯混合模型GMM+Lasso 1. 前言 GM ...

随机推荐

  1. linux与windows的文本文件之间的转换

    在CentOS中需要安装一个软件包:tofrodos 包里包含的命令可以用包管理工具列出包里的文件. 以 CentOS 的 rpm 为例: rpm -ql tofrodos 在ArchLinux中需要 ...

  2. 记在centos中连接无线网络的一次过程

    1. 首先, 你的系统要能驱动无限网卡, 要是人品好的话, 系统已经自带了你的网卡的驱动程序. 不然就要先搞定无线网卡的驱动再说. 不然后面的步骤也就没必要了. 2. 看一下你的无线网卡叫什么: iw ...

  3. RobotFrameWork接口报文测试-----(二)demo的升级版

    在上一篇,简单的demo实现了讲xml的数据发送服务器端并取得recvi_buf,然后进行了简单的解析的操作.现在就要解决之前提过的2个问题: 1. 步骤这么多,难道每写一个脚本都要重复一次么? 2. ...

  4. ASP.NET 中通过Form身份验证 来模拟Windows 域服务身份验证的方法

    This step-by-step article demonstrates how an ASP.NET   application can use Forms authentication to ...

  5. string与char之间的互相转换

    string对象是一种很强大的存在哈~~ 1. string转const char* string s = "abc"; const char* c_s = s.c_str(); ...

  6. Android的startActivityForResult()与onActivityResult()与setResult()参数分析,activity带参数的返回

    一.使用场景 在一个主界面(主Activity)通过意图跳转至多个不同子Activity上去,当子模块的代码执行完毕后再次返回主页面,将子activity中得到的数据显示在主界面/完成的数据交给主Ac ...

  7. ACM题目————吝啬的国度

    描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设 ...

  8. [团队项目]后续安排 Github

    6.后续安排 第16周 周二晚7点之前将本代码上传到GITHUB. 周三上课时运行你们的系统给我观赏一下. 根据博客,运行演示,github代码情况评定第二个冲刺的分数. 至此,软件工程学期平时分截止 ...

  9. MAVEN安装过程

    maven 的压缩包地址: http://pan.baidu.com/s/1kT4ckGf 第三方资源jar包地址:   http://pan.baidu.com/s/1i3vtgED

  10. Robberies(简单的01背包 HDU2955)

    Robberies Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...