您的位置:首页 > 其它

EM算法解决GMM问题

2015-11-22 20:52 197 查看
Note:本篇博文1,2部分主要是对书籍Pattern Recognition and Mechine Learning 第九章9.2节的翻译

高斯混合模型

高斯混合模型是几个高斯成分的简单线性叠加,可以提供比单高斯更加丰富的密度模型。

高斯模型的形式:



这就表示此模型是由K个高斯分布线性叠加而成。

高斯混合模型公式的推导

引入一个K维的二进制随机变量z,其中只有一个元素zkz_k为1,其他元素都为0。因此zkz_k的值满足zk∈0,1z_k\in{0,1}并且∑kzk=1\sum_k z_k=1。通过哪个元素不为0,可以看出向量z有K种可能的状态。p(zk=1)=πkp(z_k=1)=\pi_k

πk\pi_k必须满足0≤πk≤10\le\pi_k\le1和∑k=1Kπk=1\sum_{k=1}^K\pi_k=1

因为z是1-K维的表示,所以其分布可以写为

p(z)=∏k=1Kπzkkp(z)=\prod_{k=1}^K \pi_k^{z_k}

同样的,在确定了z后x的条件概率是一个高斯分布

p(x|zk=1)=N(x|uk,∑k)p(x|z_k=1)=\mathcal N(x|u_k,\sum_k)

也可以写成:



由此得



后验概率

另外一个具有重要作用的度量是x确定时z的条件概率。我们可以使用 γ(zk)\gamma(z_k) 来表示p(zk=1|x)p(z_k=1|x),其值可以用贝叶斯公式求得



我们可以把π\pi看作zk=1z_k=1的先验概率,γ(zk)\gamma(z_k)看作已知x时的后验概率。

最大似然

假定一观测样本集x1,...,xN{x_1,...,x_N},我们希望用一个高斯混合模型来描述。我们用一个N*D的矩阵X来表示这个数据集,X的第n行为xTnx_n^T。同样地,相应的隐含变量可以用N*K的矩阵Z表示,每一行是zTnz_n^T。假定每个样本点是从概率分布中独立地抽取出来的,那么对数似然函数可以表示为



高斯分布的EM算法

更新参数

对上面的对数似然函数关于μk\mu_k求偏导使之等于0,我们得到


两侧乘∑k\sum_k得到



对数似然函数关于∑k\sum_k求导可得



最后,我们关于混合系数πk\pi_k来最大化lnp(X|π,μ,∑)lnp(X|\pi,\mu,\sum)。考虑到约束条件∑z=1\sum_z=1引入一个拉格朗日乘子:



对πk\pi_k求导得到



最终得到(这里我推导不出来)



算法步骤

给一个高斯混合模型,我们的目标是最大化与参数(高斯成分的均值,协方差和混合系数)相关的对数似然函数。

1 Initialization

舒适化均值μk\mu_k,协方差矩阵∑k\sum_k和混合系数πk\pi_k,并且估计对数似然函数(log likelihood)的初始值。

2 E step

利用当前参数计算



3 M step

重新估计参数



其中:



4 计算log likelihood



检查参数或者对数似然函数的收敛性。如果不满足收敛准则,返回第二步。

算法实现

算法应用

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: