高斯混合模型
高斯混合模型(Gaussian Mixture Model,简称 GMM)是一种半参数的密度估计
方法,它融合了参数估计法和非参数估计法的优点,不局限于特定的概率密度函
数的形式。模型的复杂度仅与所研究问题的复杂度有关,与样本集合的大小无关。
高斯混合模型(GMM)可以看作一种状态数为 1 的 HMM,由 M 个高斯概率密度函
数线形加权求和构成。高斯混合模型的一个重要特性是,当 GMM 的混合度 M
足够高时,它能够以任意精度逼近任意的连续分布。
混合度为 M 的 GMM 概率密度函数表示如下:
p x
(
|
Θ =
)
M
∑
i
1
=
p x i
( ,
|
Θ =
)
M
∑
φ
i
i
1
=
p x i
| ,
(
)
Θ
其中 x 是 d 维的特征矢量,Θ 为 GMM 模型的参数集,i 为隐状态号,也就是高斯
成分的序号,混合度为 M 的 GMM 模型的有 M 个隐状态, iφ为第 i 个高斯成分
的权重,其值对应为隐状态 i 的先验概率,满足限定关系式
M
=∑
φ
i
i
1
=
1
。 (
p x i Θ 为
| ,
)
高斯混合分量,对应隐状态 i 的观察概率密度函数,一般采用 d 维单高斯分布函
数,其中:
p x i
(
| ,
Θ =
)
1
/2
(2 )
p
d
|
∑
i
1/2
|
exp
−
(
x
−
T
)
µ
i
1
−
i
(
x
−
)
µ
i
Σ
2
d 为特征参数矢量的维数, iµ为第 i 个高斯分布的 d 维均值矢量, i∑ 为第 i 个高
斯分布的协方差矩阵,是一个 d d× 的矩阵, 1,2,...,
=
i
M
。因此一个 GMM 模型
可以由下列参数描述:
(1) 模型中的高斯成分的数目 M。
(2) 每个高斯成分的权重 iφ。
(3) 描述每个高斯成分的参数:均值矢量 iµ和协方差矩阵 i∑ 。
因此,GMM 模型的参数为 {
Θ =
M
,{ },{ },{ };(
φ µ
i
i
∑
i
i
=
1,2,...,
M
}
)
。通常 GMM
的混合度 M 是事先选定的。因此模型参数中需要估计的为:
Θ =
{
{ },{ },{ };(
φ µ
i
i
1,2,...,
。协方差矩阵 i∑ 可以取普通矩阵,也可以取对
}
)
M
∑
=
i
i
角阵,由于取对角阵的计算比较简单,并且性能也很好,所以常取对角阵。即
ijσ 为 GMM 的第 i 个分量所对应的特征矢量的
2
diag σ σ σ −
i d
(
1)
,其中 2
∑ =
,...,
2
i
0
2
i
1
{
}
,
i
第 j 维分量的方差。
模型参数估计
GMM 模型的建立,实际上就是通过训练,估计 GMM 模型的参数,常用的是
方法是最大似然估计方法。最大似然估计的目的是在给定训练矢量集的情况下,
寻找合适的模型参数,使 GMM 模型的似然函数值最大。
假设可以使用的训练矢量集为 {
=
,则高斯混合模型的似然函数
}
x
x
,..., m
x x
,
1
2
可表示为
p x
(
|
Θ =
)
m
∏
i
1
=
p x
(
i
|
)
Θ
,由于似然函数 (
p x Θ 和参数集 Θ 是很复杂的非
)
|
线性函数关系,不易用通常方法找到其极大值点,必须引入隐状态来参与计算,
因此这是一个对“不完全数据”进行最大似然估计的问题。针对这一问题,目前
的解决方法是使用 EM 算法来估计高斯混合模型的参数 Θ 。
在 E 步中按照一般 EM 公式,设
i
( )
p z
(
iQ z
(
i
( )
ω
j
=
=
=
i
( )
)
j
=
i
( )
j x
|
;
)
Θ=
p z
(
i
( )
=
i
( )
j x
|
,
;
)
,
Σ
φµ
简单解释就是每个样本 i 的隐含类别 ( )iz 为 j 的概率可以通过后验概率计算得
到。
)i
在 M 步中,需要固定 ( )
iQ z 后最大化似然估计,也就是:
(
固定 jφ 和 jΣ ,对 jµ 求导:
另其等于 0,得到:
µ
l
i
( )
= ∑
:
∑
m
i
( )
xω
l
i
1
=
m
i
( )
ω
l
i
1
=
,这就是我们之前模型中µ的更新公式。
然后固定 jµ 和 jΣ ,对 jφ 求导,由于似然函数
在确定了µ和 Σ 后,分子上面的一串都是常数了,实际上只需要优化下列公式:
m k
∑∑
i
1
=
j
1
=
ω φ
j
log
i
( )
j
,这里 jφ 还满足一定的约束条件就是
k
=∑
j φ=
1
j
束条件直接构造拉格朗日函数:
1
。为了处理这个约
其中β是拉格朗日乘子。这里不需要考虑 0
jφ ≥ ,由于这一点在得到的公式里自
动满足。
求导得到:
另其等于 0,得到:
φ
j
=
− =
β
∑
k
j
)
φ β
1
=
−
(
j
=
。由于
k
=∑
j φ=
1
j
1
,
∑
k
j ω=
i
( )
j
1
=
1
,则:
m
i
( )
ω
j
i
1
=
=
∑ ∑
m
i
1
=
k
j
i
( )
ω
j
1
=
=
∑
m
i
1
=
1
=
m
∑
m
i
( )
ω
j
i
1
=
β
−
∑ ∑
k
j
1
=
那么就顺势得到 M 步中 jφ 的更新公式:
φ
j
m
1:
= ∑ 。
im
i
( )
ω
j
1
=
Σ 的推导也类似,不过稍微复杂一些,这里直接给出结果:
Σ = ∑
:
j
m
i
( )
ω
j
i
1
=
(
i
( )
x
∑
)(
µ
−
j
m
i
( )
ω
j
i
1
=
i
( )
x
−
T
µ
j
)
则应用 EM 算法的步骤如下:
循环下面步骤,直到收敛:{
(E 步)对于每一个 i 和 j,计算:
,
;
,
φµ
j x
|
p z
(
=
=
i
( )
i
( )
i
( )
ω
j
)
Σ
(M 步)更新参数 ,
,φµΣ :
m
1
=
φ
j
1:
= ∑
i
( )
ω
j
im
= ∑
:
∑
Σ = ∑
m
i
( )
xω
l
i
1
=
m
i
( )
ω
l
i
1
=
m
i
( )
ω
j
i
1
=
µ
j
(
:
j
}
i
( )
i
( )
x
∑
i
( )
x
−
T
µ
j
)
)(
µ
−
j
m
i
( )
ω
j
i
1
=
在 E 步中,将其他参数 ,
,φµΣ 看作常量,计算 ( )iz 的后验概率,也就是估计隐
含类别变量。在 M 步中,利用上面的公式重新计算其他参数,计算好后发现最
大化似然估计时, ( )i
jω 的值又不对了,需要重新计算,反复循环,直到收敛。
( )i
jω 的具体计算公式如下:
i
( )
ω
j
=
i
( )
p z
(
=
i
( )
j x
|
;
,
,
φµ
)
Σ =
p x
(
k
l
1
=
i
( )
|
p x
(
∑
i
( )
z
i
( )
|
i
( )
=
i
( )
z
j
;
,
µ
l
;
=
)
Σ
,
µ
p z
(
)
Σ
p z
(
=
i
( )
j
; )
φ
l
; )
=
φ