混合高斯分布与 EM 算法
极大似然估计在混合高斯分布中遇到的困难
在一般的情况下,对于所得到的样本集,\(X=\left\{x_{1}, \dots, x_{N}\right\}\),我们的目标是最大化似然函数,通过最大化似然函数来获取参数的值。这是似然函数往往取对数表示就是:
\[
\begin{aligned} L(\theta | X) &=\log \left(\prod_{i=1}^{N} p\left(x_{i} | \theta\right)\right) \\ &=\sum_{i=1}^{N} \log p\left(x_{i} | \theta\right) \end{aligned}
\]
这个过程的参数估计可以描述成:
\[
\hat{\theta}=\arg \max _{\theta} L(\theta | X)
\]
这个结果是可以直接计算出来的,那么引入混合高斯分布会是什么样呢?
混合高斯分布:
简单的说就是,非混合的情况下,我们的数据集满足高斯分布,这样用极大似然就直接算出高斯分布中的参数就可以了。那么混合的情况下就是,原数据集是由多个满足高斯分布的数据集线性组合起来,这个时候我们理解为:有 \(k\) 个满足不同参数的高斯分布的数据集,并且 \(\sum_{j=1}^{k} \phi_{j}=1\)。其中 $\phi $ 表示权重那么我们新的数据集就可以表示成 \(\sum_{j=1}^{k} \phi_{j} p_{j}\left({x} | \theta_{j}\right)\) 。那么这时参数就有两个,分别是 $ \phi $ 和 $ \theta$ 。现在我们假设有\(\phi_{j} = p\left(z^{(i)}=j\right)\) 。
这个时候,根据条件概率的计算公式,我们似然函数可以写成下面这样的式子:
\[
\begin{aligned} \ell(\phi, \mu, \Sigma) &=\sum_{i=1}^{m} \log p\left(x^{(i)} ; \phi, \mu, \Sigma\right) \\ &=\sum_{i=1}^{m} \log \sum_{z^{(i)}=1}^{k} p\left(x^{(i)} | z^{(i)} ; \mu, \Sigma\right) p\left(z^{(i)} ; \phi\right) \end{aligned}
\]
上式中的 \(x^{(i)}|z^{(i)}\) 可以理解为 $x^{(i)} $ 来自第 $ j$ 个数据集的概率。显然这个 \(p\left(x^{(i)} | z^{(i)} ; \mu, \Sigma\right)\) 表示的是第 \(z^{(i)}\) 个高斯分布的函数。所以 $z^{(i)} $ 是个隐变量。这个式子我感觉自己说的不够清楚,这个里的 $z^{(i)} $ 的选择我们选择的是 \(\{1, \ldots, k\}\) 中的某一个,其实 $z^{(i)} $ 可以用向量来表示,表示成:
\[
\left[ \begin{matrix}
0& 0& 1& 0& ……& 0& 0& 0\\
\end{matrix} \right]
\]
这样说明这个式子更直观,也更加细节,这里推荐一篇博客 传送门 ,
概率论中的 Jensen 不等式
对于 Jensen 不等式,通常情况下是这样的:对于 \(f^{\prime \prime}(x) \geq 0\) 也就是对于凸函数而言,这个可以用中值定理来证明,同时这个公式还可以用于证明多项式的均值不等式与调和不等式,这里就不给出证明了,在概率的条件下就是:实际上,这就是均值不等式来的啊, E 表示数学期望
\[
\mathrm{E}[f(X)] \geq f(\mathrm{E} X)
\]
EM 算法讲了什么东西
对于一般形式的,引入隐变量 \(z\) 的极大似然函数:
\[
\begin{aligned} \ell(\theta) &=\sum_{i=1}^{N} \log p(x ; \theta) \\ &=\sum_{i=1}^{N} \log \sum_{z} p(x, z ; \theta) \end{aligned}
\]
现在,我们假设对于每一个 $ i $ , \(Q_{i}\) 表示 $ z $ 的分布,那么我们有 \(\sum_{z} Q_{i}(z)=1, Q_{i}(z) \geq0\) 。然后我们使用 Jensen 不等式将上面的式子进行放缩,写成下面的这样形式,
\[
\begin{aligned} \ell(\theta) =\sum_{i} \log p\left(x^{(i)} ; \theta\right) &=\sum_{i} \log \sum_{z^{(i)}} p\left(x^{(i)}, z^{(i)} ; \theta\right) \\ &=\sum_{i} \log \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{Q_{i}\left(z^{(i)}\right)} \\ & \geq \sum_{i} \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \log \frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{Q_{i}\left(z^{(i)}\right)} \end{aligned}
\]
这里的 \(Q_{i}\) 应该就是 EM 算法不断的迭代的关键。
上面的式子表明 \(\ell(\theta)\) 有一个下界,从极大似然的角度考虑,我们就是要最大化这个下界,得到 $ \theta $ 的取值,但是其中的 \(Q_{i}\) 是一个隐变量的分布,我们并不知道这个分布是什么样子的。
上面使用 Jensen 不等式关键的一步是:
\[
f\left(\mathrm{E}_{z^{(i)} \sim Q_{i}}\left[\frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{Q_{i}\left(z^{(i)}\right)}\right]\right) \geq \mathrm{E}_{z^{(i)} \sim Q_{i}}\left[f\left(\frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{Q_{i}\left(z^{(i)}\right)}\right)\right]
\]
这个式子取等式的时候,对于数学期望而言,只有常数可以满足数学期望中的 Jensen 不等式相等。这里不做具体的证明,我们可以考虑从均值不等式来理解这个问题,假设这个常数是 $ c$ :
\[
\frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{Q_{i}\left(z^{(i)}\right)}=c
\]
也就是说:
\[
Q_{i}\left(z^{(i)}\right) \propto p\left(x^{(i)}, z^{(i)} ; \theta\right)
\]
我们知道:\(\sum_{z} Q_{i}\left(z^{(i)}\right)=1\) ,那么我可以考虑这样的情况:
\[
1 = \sum{Q_i\left( z^{\left( i \right)} \right)} \propto \sum{p\left( x^{\left( i \right)},z^{\left( i \right)};\theta \right) } = \sum_{z} p\left(x^{(i)}, z ; \theta\right)
\]
这样的话,就有下面的公式:
\[
\begin{aligned} Q_{i}\left(z^{(i)}\right) &=\frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{\sum_{z} p\left(x^{(i)}, z ; \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{aligned}
\]
这一步我们称为 E 步骤,可以得到等式成立的条件, \(Q_{i}\left(z^{(i)}\right) :=p\left(z^{(i)} | x^{(i)} ; \theta\right)\) ,这个是最大化下界的条件,我们将这个条件带入 $\ell(\theta) $ 得到,也就是说,这个是最大似然函数的条件之一:那么我们可以用下面的步骤来计算 $ \theta$ ,
\[
\theta :=\arg \max _{\theta} \sum_{i} \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \log \frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{Q_{i}\left(z^{(i)}\right)}
\]
那么这个 $ \theta$ 是不是最优的呢?接下来我们来证明 EM 算法中一个很关键的问题,那就是上述的 E 步骤与 M 步骤不断放缩与收敛,最终得到最优的 $ \theta$ 的值。
所以 EM 算法的步骤可以表示成下面这样:
- 函数声明 \(\operatorname{EM}\left(p_{Y, C}(y, c ; \theta), p_{C | Y}(c | y ; \theta), \theta^{(0)}\right)\)
- for iteration \(t \in 1,2, \ldots\) do
- \(Q_{i}^{(t)} \leftarrow P\left(z_i | x_i ; \theta^{(t-1)}\right) \quad(\text { E-step })\)
- \(\theta^{(t)} \leftarrow \operatorname{argmax}_{\theta} \mathbb{E}_{Q_{i}^{(t)}}\left[P(y, C ; \theta)\right] \quad\left(\mathrm{M}{-\mathrm{Step}}\right)\)
- if \(\theta^{(t)} \approx \theta^{(t-1)}\) then
- return $\theta^{(t)} $
EM 算法的收敛问题
这个收敛的思想是这样的:我们的 $ \theta $ 是直接通过极大似然函数算出的来的。那么 EM 算法迭代的步骤就是,我们不断地最大化极大似然估计函数,也就是说 \(\ell\left(\theta^{(t)}\right) \leq \ell\left(\theta^{(t+1)}\right)\) ,这样就会不断地逼近最优解。在 EM 迭代的过程中,我们不断改变是 \(Q_{i}\) ,
为了更好的说明,假设上一步我们已经得到了一个最优解 \(\ell\left(\theta^{(t)}\right)\) 以及 $ \theta^{(t)} $ 那么在这一步,我们满足下面的情况:
\[
Q_{i}^{(t)}\left(z^{(i)}\right) :=p\left(z^{(i)} | x^{(i)} ; \theta^{(t)}\right) \ \ \ Jensen不等式条件\\ 用于计算 \ell\left(\theta^{(t+1)}\right)
\]
\[
\ell\left(\theta^{(t)}\right)=\sum_{i} \sum_{z^{(i)}} Q_{i-1}^{(t)}\left(z^{(i)}\right) \log \frac{p\left(x^{(i)}, z^{(i)} ; \theta^{(t)}\right)}{Q_{i-1}^{(t)}\left(z^{(i)}\right)}
\]
上面是一次最大化似然函数的条件,假设在上一次结束后我们得到满足如上的条件,第一个式子是,我们在上一次结束之后我们得到 \(\ell\left(\theta^{(t)}\right)\) 以及最优解 $ \theta^{(t)} $ ,那么接下来的一次 E 步骤中,就会满足上面第一个等式,
那么我们可以推出下面的不等式:
\[
\begin{aligned} \ell\left(\theta^{(t+1)}\right) & \geq \sum_{i} \sum_{z^{(i)}} Q_{i}^{(t)}\left(z^{(i)}\right) \log \frac{p\left(x^{(i)}, z^{(i)} ; \theta^{(t+1)}\right)}{Q_{i}^{(t)}\left(z^{(i)}\right)} \\ & \geq \sum_{i} \sum_{z^{(i)}} Q_{i}^{(t)}\left(z^{(i)}\right) \log \frac{p\left(x^{(i)}, z^{(i)} ; \theta^{(t)}\right)}{Q_{i}^{(t)}\left(z^{(i)}\right)} \\ &=\ell\left(\theta^{(t)}\right) \end{aligned}
\]
对于上面的两个不等式做出以下解释:
- 这个式子来自 Jensen 不等式,原式是这样的:\(\ell(\theta) \geq \sum_{i} \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \log \frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{Q_{i}\left(z^{(i)}\right)}\) 对任意的 $ Q_i $ 与 \(\theta\) 均成立,所以我们进行放缩得到第一个不等式,这个式子比较显然,
EM 算法用于混合高斯分布
\[
\sum_{i=1}^{m} \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \log \frac{p\left(x^{(i)}, z^{(i)} ; \phi, \mu, \Sigma\right)}{Q_{i}\left(z^{(i)}\right)} \\ =\sum_{i=1}^{m} \sum_{j=1}^{k} Q_{i}\left(z^{(i)}=j\right) \log \frac{p\left(x^{(i)} | z^{(i)}=j ; \mu, \Sigma\right) p\left(z^{(i)}=j ; \phi\right)}{Q_{i}\left(z^{(i)}=j\right)} \\ =\sum_{i=1}^{m} \sum_{j=1}^{k} w_{j}^{(i)} \log \frac{\frac{1}{(2 \pi)^{n / 2}\left|\Sigma_{j}\right|^{1 / 2}} \exp \left(-\frac{1}{2}\left(x^{(i)}-\mu_{j}\right)^{T} \Sigma_{j}^{-1}\left(x^{(i)}-\mu_{j}\right)\right) \cdot \phi_{j}}{w_{j}^{(i)}}
\]
然后我们用极大似然函数来将这个函数求最大值,偏导为0,
\[
\nabla_{\mu_{l}} \sum_{i=1}^{m} \sum_{j=1}^{k} w_{j}^{(i)} \log \frac{\frac{1}{(2 \pi)^{n / 2}\left|\Sigma_{j}\right|^{1 / 2}} \exp \left(-\frac{1}{2}\left(x^{(i)}-\mu_{j}\right)^{T} \Sigma_{j}^{-1}\left(x^{(i)}-\mu_{j}\right)\right) \cdot \phi_{j}}{w_{j}^{(i)}} \\ =-\nabla_{\mu_{l}} \sum_{i=1}^{m} \sum_{j=1}^{k} w_{j}^{(i)} \frac{1}{2}\left(x^{(i)}-\mu_{j}\right)^{T} \Sigma_{j}^{-1}\left(x^{(i)}-\mu_{j}\right) \\ =\frac{1}{2} \sum_{i=1}^{m} w_{l}^{(i)} \nabla_{\mu_{l}} 2 \mu_{l}^{T} \Sigma_{l}^{-1} x^{(i)}-\mu_{l}^{T} \Sigma_{l}^{-1} \mu_{l} \\ =\sum_{i=1}^{m} w_{l}^{(i)}\left(\sum_{l}^{-1} x^{(i)}-\Sigma_{l}^{-1} \mu_{l}\right)
\]
然后就可以得出了:
\[
\mu_{l} :=\frac{\sum_{i=1}^{m} w_{l}^{(i)} x^{(i)}}{\sum_{i=1}^{m} w_{l}^{(i)}}
\]
混合高斯分布与 EM 算法的更多相关文章
- 高斯混合模型和EM算法
使用期望最大化算法(Expectation-Maximization)来进行密度估计(density estimation). 与k-means一样,给定的训练样本是,我们将隐含类别标签用表示.与k- ...
- EM算法[转]
最大期望算法:EM算法. 在统计计算中,最大期望算法(EM)是在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐藏变量. 最大期望算法经过两个步骤交替进行计算: 第 ...
- EM算法理解的九层境界
EM算法理解的九层境界 EM 就是 E + M EM 是一种局部下限构造 K-Means是一种Hard EM算法 从EM 到 广义EM 广义EM的一个特例是VBEM 广义EM的另一个特例是WS算法 广 ...
- 记录:EM 算法估计混合高斯模型参数
当概率模型依赖于无法观测的隐性变量时,使用普通的极大似然估计法无法估计出概率模型中参数.此时需要利用优化的极大似然估计:EM算法. 在这里我只是想要使用这个EM算法估计混合高斯模型中的参数.由于直观原 ...
- EM算法与混合高斯模型
非常早就想看看EM算法,这个算法在HMM(隐马尔科夫模型)得到非常好的应用.这个算法公式太多就手写了这部分主体部分. 好的參考博客:最大似然预计到EM,讲了详细样例通熟易懂. JerryLead博客非 ...
- 机器学习笔记(十)EM算法及实践(以混合高斯模型(GMM)为例来次完整的EM)
今天要来讨论的是EM算法.第一眼看到EM我就想到了我大枫哥,EM Master,千里马.RUA!!!不知道看这个博客的人有没有懂这个梗的. 好的,言归正传.今天要讲的EM算法,全称是Expectati ...
- 机器学习笔记—混合高斯和 EM 算法
本文介绍密度估计的 EM(Expectation-Maximization,期望最大). 假设有 {x(1),...,x(m)},因为是无监督学习算法,所以没有 y(i). 我们通过指定联合分布 p( ...
- EM算法总结
EM算法总结 - The EM Algorithm EM是我一直想深入学习的算法之一,第一次听说是在NLP课中的HMM那一节,为了解决HMM的参数估计问题,使用了EM算法.在之后的MT中的词对齐中也用 ...
- EM算法(2):GMM训练算法
目录 EM算法(1):K-means 算法 EM算法(2):GMM训练算法 EM算法(3):EM算法运用 EM算法(4):EM算法证明 EM算法(2):GMM训练算法 1. 简介 GMM模型全称为Ga ...
随机推荐
- spark存储管理之磁盘存储--DiskStore
DiskStore 接着上一篇,本篇,我们分析一下实现磁盘存储的功能类DiskStore,这个类相对简单.在正式展开之前,我觉得有必要大概分析一下BlockManager的背景,或者说它的运行环境,运 ...
- Matlab享元模式
享元模式(Flyweight)通过共享技术实现相同或相似对象的重用,可以减少创建对象的数量,以减少内存占用和提高性能.Java String的常量池,python logging,线程池,数据库连接池 ...
- Django:RestFramework之-------路由
11.路由 路由设置: url(r'^(?P<version>[v1|v2]+)/vview\.(?P<format>\w+)$', views.VView.as_view({ ...
- android studio学习---快捷键
快捷键学习 TIPS: 1.异常代码块 或者自定义代码块结构 Ctrl+Alt+T 或者 File | Settings | File and Code Templates When yo ...
- Spring boot应用如何支持https
首先使用命令行生成一个keystore文件: keytool -genkey -alias tomcat -keyalg RSA -keystore ./jerry.keystore 保存到本地项目文 ...
- Golang Web应用 创建docker镜像笔记(win 平台)
记录的是 本地编译好了再创建容器镜像的方法 ,这样子生成的镜像文件比较小,方便分发部署 win 平台需要设置golang交叉编译 生成linux可执行文件 CMD下: Set GOOS="l ...
- spec开发思路以及理解
一.spec说明 描述:编写SEPC采用创联公司自主开发的CIT语言,它是一种过程化的.类似数据库编码的语言.SPEC中除了关键字外提倡使用中文. 理解:可以理解为业务逻辑层.链接前台页面和后台数据库 ...
- Docker搭建Showdoc
基础安装 安装前请确保你的环境已经装好了docker docker pull star7th/showdoc #新建存放showdoc数据的目录 mkdir /opt/showdoc mkdir ...
- ZYNQ7000性能分析
提到自动驾驶,机器人视觉,高清摄像机,都要想到摄像头这个单元,先前本侠也讲过一些FPGA应用在高清摄像头和机器视觉中的深度摄像头以及双目摄像头等,FPGA在里面的作用主要是对采集的图像进行处理,对图像 ...
- K-Dominant Character CodeForces - 888C
题目链接:https://vjudge.net/problem/CodeForces-888C 划一条线,使得不论怎么划线,都会出现一个特定的字符,那么这条线最短要多长. 用字符间隔考虑. 先判断哪些 ...