高斯混合模型可以看做是EM算法的应用之一,下面尝试对迭代公式进行推导。
假设我们有一批观测到的样本,这些样本可能来自于k个不同参数的高斯分布,我们如何根据观测到的样本来估计这k个高斯模型的参数呢?
下面我们尝试直接带入EM算法
E-step:
Qi(z(i)=j)=p(z(i)=j∣x(i);ϕ,μ,Σ)
上式表征的是样本 x(i) 来自于第 j 个高斯分布的概率,为简单起见,记为
M-step:我们需要最大化下式:
∑i∑z(i)Qi(z(i))logp(x(i),z(i);θ)Qi(z(i))=∑i=1m∑z(i)Qi(z(i))logp(x(i),z(i);ϕ,μ,Σ)Qi(z(i))=∑i=1m∑j=1kQi(z(i)=j)logp(x(i)∣z(i)=j;ϕ,μ,Σ)p(z(i)=j;ϕ)Qi(z(i)=j)=∑i=1m∑j=1kw(i)jlog1(2π)n/2|Σj|1/2exp(−12(x(i)−μj)TΣ−1j(x(i)−μj))ϕjw(i)j
为后续简单起见,我们将上式的最终结果成为 M 式
我们依次对参数
ϕ,μ,Σ
求极大值
1. 参数
ϕj
表征的是第j个高斯分布在所有分布中所占的分量。因此这里隐含着一个限制条件
∑kj=1ϕj=1
求带有条件的极值问题,我们使用拉格朗日乘子法,另外由于最后要对
ϕj
求微分,去除无关变量(微分后为0)后,M式可化简为:
∑i=1m∑j=1kw(i)jlogϕj
因此拉格朗日式子可以写作如下:
L(ϕ)=∑i=1m∑j=1kw(i)jlogϕj+β(∑j=1kϕj−1)
对 ϕj 求微分:
∂∂ϕjL(ϕ)=∑i=1mw(i)jϕj+β
令上式为 0 可得:
ϕj=∑mi=1w(i)j−β
这里的
−β
等于什么呢?应用限制条件 :
∑kj=1ϕj=1
可知:
−β=∑i=1m∑j=1kw(i)j=∑i=1m1=m
从而得到 ϕj 的更新公式:
ϕj:=1m∑j=1kw(i)j
2. 参数 μj 表征的是第j个高斯分布的均值
同样的,去除M式中与 μj 不相关的变量, 然后对 μj 求导:
∇μj∑i=1m∑j=1kw(i)j(−12(x(i)−μj)TΣ−1j(x(i)−μj))=12∑i=1mw(i)j(Σ−1j(x(i)−μj)−w(i)j(x(i)−μj)TΣ−1j)=∑i=1mw(i)j(Σ−1jx(i)−Σ−1jμj)
令上式为0可以得到关于参数 μj 的更新式子:
μj:=∑mi=1w(i)jx(i)∑mi=1w(i)j
3. 参数 Σj 表征的是第j个高斯分布的协方差矩阵
类似的我们先简化M式,并对 Σj 求导可得:
∇Σj∑i=1m∑j=1kw(i)j(−12log|Σj|−12(x(i)−μj)TΣ−1j(x(i)−μj))=−12∑i=1mw(i)j(Σ−1j−(x(i)−μj)TΣ−2j(x(i)−μj))
令上式为0可以得到关于参数 Σj 的更新式子:
Σj:=∑mi=1w(i)j(x(i)−μj)(x(i)−μj)T∑mi=1w(i)j
至此,我们通过EM算法推导出了关于混合高斯模型的参数迭代公式。
参考
[1] Andrew Ng CS229 Lecture notes