GMM及EM算法
GMM及EM算法
标签(空格分隔): 机器学习
前言:
- EM(Exception Maximizition) -- 期望最大化算法,用于含有隐变量的概率模型参数的极大似然估计;
- GMM(Gaussian Mixture Model) -- 高斯混合模型,是一种多个高斯分布混合在一起的模型,主要应用EM算法估计其参数;
- 本篇博客首先从简单的k-means算法给出EM算法的迭代形式,然后用GMM的求解过程给出EM算法的宏观认识;最后给出EM的标准形式,并分析EM算法为什么收敛。
K-Means Clustering
目标函数(损失函数)
EM过程
- 随机初始化样本中心点,即均值\(\mu_{k}\).
- E step: 固定均值\(\mu_{k}\),用\(r_{n}k\)最小化目标函数J。
- M step: 固定\(r_{n}k\),用\(\mu_{k}\)最小化目标函数J。
- 不断迭代,直至收敛。
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\).
- Choose an initial setting for the parameters \(\theta^{old}\).
- E step Calculate \(Q(\theta, \theta^{old}) = \sum_{z}p(Z|X,\theta^{old})\ln p(X,Z|\theta)\).
- M step Evaluate \(\theta^{new}\) given by \(\theta^{new} = argmax_{\theta}Q(\theta, \theta^{old})\).
- 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算法的更多相关文章
- 高斯混合模型GMM与EM算法的Python实现
GMM与EM算法的Python实现 高斯混合模型(GMM)是一种常用的聚类模型,通常我们利用最大期望算法(EM)对高斯混合模型中的参数进行估计. 1. 高斯混合模型(Gaussian Mixture ...
- 【机器学习】GMM和EM算法
机器学习算法-GMM和EM算法 目录 机器学习算法-GMM和EM算法 1. GMM模型 2. GMM模型参数求解 2.1 参数的求解 2.2 参数和的求解 3. GMM算法的实现 3.1 gmm类的定 ...
- GMM的EM算法实现
转自:http://blog.csdn.net/abcjennifer/article/details/8198352 在聚类算法K-Means, K-Medoids, GMM, Spectral c ...
- [转载]GMM的EM算法实现
在聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut一文中我们给出了GMM算法的基本模型与似然函数,在EM算法原理中对EM算法的实现与收敛性证明 ...
- GMM的EM算法
在聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut一文中我们给出了GMM算法的基本模型与似然函数,在EM算法原理中对EM算法的实现与收敛性证明 ...
- GMM与EM算法
用EM算法估计GMM模型参数 参考 西瓜书 再看下算法流程
- 5. EM算法-高斯混合模型GMM+Lasso
1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-GMM代码实现 5. EM算法-高斯混合模型+Lasso 1. 前言 前面几篇博文对EM算法和G ...
- 4. EM算法-高斯混合模型GMM详细代码实现
1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-高斯混合模型GMM详细代码实现 5. EM算法-高斯混合模型GMM+Lasso 1. 前言 EM ...
- 3. EM算法-高斯混合模型GMM
1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-高斯混合模型GMM详细代码实现 5. EM算法-高斯混合模型GMM+Lasso 1. 前言 GM ...
随机推荐
- 解决ultravnc在win2008 R2下CTRL+ALT+DELETEA组合键发送失败的问题
首先,请google “ultravnc ctrl+alt+delete”,得到的解决方法是,更改UAC.进入组策略-计算机配置-管理模板-windows登陆选项,“禁用或启用软件注意序列”,更改成“ ...
- IT书籍的选择与阅读
拍摄是一件艰苦而有趣的事情. 它需要眼睛和心灵完全融合投入, 需要耐心等待排除干扰, 需要敏捷捕捉稍纵即逝的瞬间. 但是, 非艰苦不成乐趣. 人生也应该选择一件有难度的事情来做. 做不成, 可以收获过 ...
- mysql的内存表和临时表
内存表: session $ mysql -uroot root@(none) ::>use test Database changed root::>CREATE TABLE tmp_m ...
- 【python cookbook】【字符串与文本】13.对齐文本字符串
问题:以某种对齐方式将文本做格式化处理 解决方案: 1.针对字符串:ljust().rjust().center()方法 2.针对任何值,更加通用的:format() 更多内容:https://do ...
- Unicode : RLO
分类:备忘,Unicode,Perl 我们一般的输入文字的方向是从左往右,但是世界上总有特例,阿拉伯国家是从右到左的书写方式.经常看到微信里面好友得瑟,也就拿过来总结一下. 每个语言都能实现字符串反转 ...
- ansible
3.1 配置 #vim /etc/ansible/hosts //定义主机,支持IP和域名,支持分组 [local] 127.0.0.1 [nginx] 192.168.0.10 ...
- JavaEE基础(二十七)/反射、JDK新特性
1.反射(类的加载概述和加载时机) A:类的加载概述 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. 加载 就是指将class文件读入 ...
- 每日一九度之 题目1033:继续xxx定律
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5502 解决:1351 题目描述: 当n为3时,我们在验证xxx定律的过程中会得到一个序列,3,5,8,4,2,1,将3称为关键数, ...
- 八大排序算法之三选择排序—简单选择排序(Simple Selection Sort)
基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素 ...
- linux ubuntu12.04 解压中文zip文件,解压之后乱码
在windows下压缩后的zip包,在ubuntu下解压后显示为乱码问题 1.zip文件解压之后文件名乱码: 第一步 首先安装7zip和convmv(如果之前没有安装的话) 在命令行执行安装命令如下: ...