一、GMM算法
EM算法实在是难以介绍清楚,因此我们用EM算法的一个特例GMM算法作为引入。
1、GMM算法问题描述
GMM模型称为混合高斯分布,顾名思义,它是由几组分别符合不同参数的高斯分布的数据混合而成的。
假设有n个样本点\(x_{1},x_{2},...,x_{n}\),它们来自K个不同的高斯分布。有如下参数:
1、不同高斯分布的数据占比:\(\pi_{i}\)
2、每个高斯分布的均值与方差:\(\pi_{i}~N(\mu_{i},\sigma_{i}^2)\)
我们的目的是求出每个\(\pi_{i}\),\(\mu_{i}\),\(\sigma_{i}\)
因此我们的目标即是求合适的\(\pi_{i}\),\(\mu_{i}\),\(\sigma_{i}\)来最大化对数似然函数。
\[l_{\pi,\mu\sigma}(x)=\sum^{N}_{i=1}log[\sum^{K}_{k=1}\pi_{k}N(x_{I}|\mu_{k},\sigma_{k})]\]
这个目标函数中既有对数又有加和,因此不能直接求导因此我们采用迭代的方法。
2、GMM迭代方法描述
Step1:对于每一个样本点i,计算它由不同组分(第k个组分)生成的概率\[r(i,k)=\dfrac{\pi_{k}N(x_{i}|\mu_{k},\sigma_{k})}{\sum^{K}_{j=1}\pi_{j}N(x_{i}|\mu_{j},\sigma_{j})}\]
Step2:由各个样本点的\(r(i,k)\)更新参数\(\pi_{i}\),\(\mu_{i}\),\(\sigma_{I}\)
Step3:回到Step1,迭代更新
这其实就是EM算法的E步和M步的过程。
下面给出通用的EM算法伪代码。
3、EM算法
Repeat util 收敛{
(E步):对每个样本\(x_{i}\),计算\[Q_{i}(z^{i})=P(z^{i}|x^{i};\theta)\]
(M步):对每个参数\(\theta\),有\[\theta:=argmax_{\theta }l\left( \theta \right) =argmax_{\theta}\sum^{}_{i}\sum^{}_{z^{i}}Q_{i}(z^{i})log\dfrac{P(x_{i};z_{i};\theta)}{Q_{i}(z_{i})}\]
}
其中,E步的那个\(Q\)就是第i个样本的分布,就是那个\(r(i,k)\)
这个形式可以推导可得,其实是等价的
M步中,那个公式就是对数似然函数,求使它最大化的参数
总结:EM算法说到底是一个迭代更新的过程。它首先对各个样本计算分布,然后更新参数;再计算分布,再更新参数……