混合高斯模型(GMM)是使用非常广泛的统计模型,一种非常高调的说法是,混合高斯模型能拟合一切数据。虽然实际还是受到很多限制,比如混合高斯分布数量需要确定等等,不难看出其强大指出。此文包含以下内容:
- GMM模型
- EM算法
GMM模型
1.1 简单理解GMM
首先讲一讲什么是高斯分布。在自然界数据中有个奇怪的现象:数据量满足一定量后,其统计分布呈现钟型。前人由此分析得到高斯分布。高斯分布的主要参数是数据的平均值 μ \mu μ和方差 σ 2 \sigma^2 σ2,记作 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2)。
从字面上理解,GMM脱胎于高斯分布,简单来说,它是多个高斯分布的混合。GMM的基本思想是,使用多个高斯分布拟合任意曲线。相比高斯分布,GMM引入另一个参数
π
k
\pi_{k}
πk,对应第
k
k
k个高斯分布的系数值,所以混合高斯分布可记作
G
M
M
=
∑
k
=
1
N
π
k
⋅
N
(
μ
,
σ
2
)
GMM = \sum_{k=1}^{N} \pi_{k} \cdot N(\mu,\sigma^2)
GMM=k=1∑Nπk⋅N(μ,σ2)
其中,
π
k
\pi_{k}
πk是数据指向第k个高斯分布的概率。GMM思想主要体现在聚类算法上:聚类算法将数据归类到最大可能的几个集合中,形成几个类。通常,也称这种功能性明显的变量为(隐\潜变量),可理解为数据的隐藏性质。借此,GMM也能用于实现聚类。
GMM模型在处理数据时,先把数据丢到单独一个高斯分布中,接着就是简单的高斯分布问题。假设一组数据符合GMM,那么只需要估计GMM模型三个参数就好。常用的基础算法是EM算法。EM算法的好处是,它特别适合应对隐变量存在时的参数估计,但是需要提前设定好隐变量的数量。
1.2 图解GMM模型
按照之前的叙述,GMM模型是几个高斯分布的组合,示意图如下:
如果把GMM模型的估计分为两步,第一步估计
π
k
\pi_{k}
πk得到数据指向模型的概率,第二部估计第k组高斯分布的参数
μ
k
\mu_{k}
μk和
σ
k
2
\sigma_{k}^2
σk2,显然第一步是最关键也最为难以理解的部分,即,如何得到数据属于某个高斯分布的概率?
记数据指向第k个模型为事件
γ
k
\gamma_{k}
γk,其集合序列为
γ
=
[
γ
1
,
.
.
.
,
γ
k
]
\gamma=[\gamma_{1},...,\gamma_{k}]
γ=[γ1,...,γk]。于是,数据x指向第k个模型的概率为,
P
(
x
∣
γ
k
=
1
)
=
π
k
P(x|\gamma_{k}=1)=\pi_{k}
P(x∣γk=1)=πk。当已知某个数据指向哪个高斯分布,即
γ
\gamma
γ已知,则数据的概率就是高斯分布概率,有
π
k
=
P
(
x
∣
γ
k
=
k
)
=
N
(
x
∣
μ
k
,
σ
k
2
)
\pi_{k}=P(x|\gamma_{k}=k) = N(x|\mu_{k},\sigma_{k}^2)
πk=P(x∣γk=k)=N(x∣μk,σk2)
数据可能出现在每个高斯分布上,于是数据的实际概率为
P
(
x
)
=
∑
k
=
1
N
π
k
N
(
x
∣
μ
k
,
σ
k
2
)
P(x) =\sum_{k=1}^N \pi_{k} N(x|\mu_{k},\sigma_{k}^2)
P(x)=k=1∑NπkN(x∣μk,σk2)
当观察时间序列
X
=
[
x
1
,
.
.
.
.
,
x
T
]
X=[x_{1},....,x_{T}]
X=[x1,....,xT]已知的时候,首要完成的任务是估计模型参数
(
π
,
μ
,
Σ
)
(\pi,\mu,\Sigma)
(π,μ,Σ),记
Σ
=
σ
k
2
\Sigma=\sigma_{k}^2
Σ=σk2。使用对数似然估计方法,X的联合概率表示为:
L
(
x
1
,
.
.
.
,
x
T
;
π
,
μ
,
Σ
)
=
∏
i
=
1
T
∑
k
=
1
N
π
k
N
(
x
i
∣
μ
k
,
σ
k
2
)
L(x_{1},...,x_{T};\pi,\mu,\Sigma) = \prod_{i=1}^{T}\sum_{k=1}^N \pi_{k} N(x_{i}|\mu_{k},\sigma_{k}^2)
L(x1,...,xT;π,μ,Σ)=∏i=1T∑k=1NπkN(xi∣μk,σk2)
取对数能帮助解开累乘符号,但不能再解开每个log里的累加符号,依旧难以求导取0,估计值。所以,以上估计,将使用EM算法求出。
EM算法
2.1 简单理解EM算法
从高斯混合模型参数的求解任务,我们知道,需要实现的任务是估计出每个高斯模型中的 μ k \mu_{k} μk和 σ k 2 \sigma_{k}^2 σk2。以上使用对数似然的方法无法估计多类相同参数,而EM算法可以,当然EM算法需已知类的个数。
在估计过程中,EM算法首要解决的问题是,隐变量引入造成最大似然估计中每个log项内,都有累加问题。熟悉似然估计的人知道,估计函数取对数后,如果log内依然存在累加项,很难进一步完成估计。于是,根据Jensen不等式,这个问题得以解决,详细解决过程请继续往下阅读。然后估计过程被分为两个相互递进的过程:E步和M步,分别对应Expectation和Maximization。
- E步:估计数据 x i x_{i} xi由属于哪类高斯分布,即估计 γ \gamma γ。估计时固定 μ \mu μ和 Σ \Sigma Σ为常数, π \pi π同样可由高斯分布求出,也固定为常数;
- M步:已知数据是由第k类产生,估计第k类参数 μ \mu μ、 Σ \Sigma Σ和 π \pi π。
2.2 详解EM算法
2.2.1 EM的估计方程
上述说道,GMM中直接使用极大似然方法,无法借助对数手段打开所有项。先写一遍方程在此,方便后面对比
前面已经说过,EM算法用于估计带隐变量的参数,GMM里面隐变量是
γ
\gamma
γ,这里使用一般EM算法介绍中的隐变量符号
Z
Z
Z。对数似然表示中引入为
Z
Z
Z,则有
L
(
θ
)
=
l
o
g
P
(
X
∣
θ
)
=
l
o
g
∑
Z
P
(
X
,
Z
∣
θ
)
=
l
o
g
∑
Z
P
(
Z
∣
θ
)
P
(
X
∣
Z
,
θ
)
L(\theta) = log P(X|\theta) =log \sum_{Z} P(X,Z|\theta) \\ =log \sum_{Z} P(Z|\theta)P(X|Z,\theta)
L(θ)=logP(X∣θ)=logZ∑P(X,Z∣θ)=logZ∑P(Z∣θ)P(X∣Z,θ)
其中集合
{
X
,
Z
}
\{X,Z\}
{X,Z}称作完备集合,是一个
l
e
n
(
X
)
×
l
e
n
(
Z
)
len(X) \times len(Z)
len(X)×len(Z)大小的矩阵,即表示X的数据在Z类中的映射。
θ
\theta
θ表示要估计的参数,GMM任务中代表
μ
\mu
μ、
Σ
\Sigma
Σ和
π
\pi
π。GMM模型里,上式最终变换的含义为,
P
(
Z
∣
θ
)
P(Z|\theta)
P(Z∣θ)代表属于哪类高斯分布的概率(隐变量),
P
(
X
∣
Z
,
θ
)
P(X|Z,\theta)
P(X∣Z,θ)代表数据在对应高斯分布上的概率。
目前依旧难以直接估计,需要借助Jensen不等式。设
θ
′
\theta'
θ′是当前的参数值,
θ
\theta
θ是下个时刻需要估计的参数,取对数表达式的差值为
L
(
θ
)
−
L
(
θ
′
)
=
l
o
g
∑
Z
P
(
Z
∣
θ
)
P
(
X
∣
Z
,
θ
)
−
l
o
g
P
(
X
∣
θ
′
)
=
l
o
g
∑
Z
P
(
Z
∣
θ
)
P
(
X
∣
Z
,
θ
)
×
P
(
Z
∣
θ
′
)
P
(
Z
∣
θ
′
)
−
l
o
g
P
(
X
∣
θ
′
)
=
l
o
g
∑
Z
P
(
Z
∣
θ
′
)
×
P
(
Z
∣
θ
)
P
(
X
∣
Z
,
θ
)
P
(
Z
∣
θ
′
)
P
(
X
∣
θ
′
)
≥
∑
Z
P
(
Z
∣
θ
′
)
×
l
o
g
P
(
Z
∣
θ
)
P
(
X
∣
Z
,
θ
)
P
(
Z
∣
θ
′
)
P
(
X
∣
θ
′
)
L(\theta)-L(\theta') = log\sum_{Z} P(Z|\theta)P(X|Z,\theta)-log P(X|\theta') \\ = log\sum_{Z} P(Z|\theta)P(X|Z,\theta)\times \frac{P(Z|\theta')}{P(Z|\theta')}-log P(X|\theta') \\ = log\sum_{Z} P(Z|\theta')\times \frac{P(Z|\theta)P(X|Z,\theta)}{P(Z|\theta')P(X|\theta')} \\ \geq \sum_{Z} P(Z|\theta') \times log\frac{P(Z|\theta)P(X|Z,\theta)}{P(Z|\theta')P(X|\theta')}
L(θ)−L(θ′)=logZ∑P(Z∣θ)P(X∣Z,θ)−logP(X∣θ′)=logZ∑P(Z∣θ)P(X∣Z,θ)×P(Z∣θ′)P(Z∣θ′)−logP(X∣θ′)=logZ∑P(Z∣θ′)×P(Z∣θ′)P(X∣θ′)P(Z∣θ)P(X∣Z,θ)≥Z∑P(Z∣θ′)×logP(Z∣θ′)P(X∣θ′)P(Z∣θ)P(X∣Z,θ)
Jensen不等式(凸函数性质):
对于任意点集 { x i } \{x_{i}\} {xi},若 λ i > 0 \lambda_{i}>0 λi>0,且 ∑ λ i = 1 \sum \lambda_{i}=1 ∑λi=1,可证明
f ( ∑ i = 1 M λ i x i ) ≤ ∑ i = 1 M λ i f ( x i ) f(\sum^{M}_{i=1}\lambda_{i}x_{i}) \leq \sum^{M}_{i=1} \lambda_{i}f(x_{i}) f(i=1∑Mλixi)≤i=1∑Mλif(xi)
此处 λ = P ( Z ∣ θ ′ ) \lambda=P(Z|\theta') λ=P(Z∣θ′), f ( x ) = l o g ( . . . ) f(x)=log(...) f(x)=log(...)
上式变换后有
L
(
θ
)
≥
L
(
θ
′
)
+
∑
Z
P
(
Z
∣
θ
′
)
×
log
P
(
Z
∣
θ
)
P
(
X
∣
Z
,
θ
)
P
(
Z
∣
θ
′
)
P
(
X
∣
θ
′
)
≜
B
(
θ
′
,
θ
)
L(\theta) \geq L(\theta')+\sum_{Z} P(Z|\theta') \times \log\frac{P(Z|\theta)P(X|Z,\theta)}{P(Z|\theta')P(X|\theta')} \triangleq B(\theta',\theta)
L(θ)≥L(θ′)+Z∑P(Z∣θ′)×logP(Z∣θ′)P(X∣θ′)P(Z∣θ)P(X∣Z,θ)≜B(θ′,θ)
显然
B
(
θ
′
,
θ
)
B(\theta',\theta)
B(θ′,θ)是
L
(
θ
)
L(\theta)
L(θ)的下限,显然提升
L
(
θ
)
L(\theta)
L(θ)的下限有助于其逼近最大,再加上当
θ
=
θ
′
\theta=\theta'
θ=θ′的时候,有
L
(
θ
′
)
=
B
(
θ
′
,
θ
′
)
L(\theta')=B(\theta',\theta')
L(θ′)=B(θ′,θ′)。通过这个变换过程,问题成功的转变成求以下表达式的极大似然估计:
θ
=
arg
m
a
x
θ
∑
Z
P
(
Z
∣
θ
′
)
×
log
P
(
Z
∣
θ
)
P
(
X
∣
Z
,
θ
)
\theta = \arg max_{\theta} \sum_{Z} P(Z|\theta') \times \log P(Z|\theta)P(X|Z,\theta)
θ=argmaxθZ∑P(Z∣θ′)×logP(Z∣θ)P(X∣Z,θ)
其中忽略去了部分
θ
′
\theta'
θ′相关的
P
(
Z
∣
θ
′
)
P
(
X
∣
θ
′
)
P(Z|\theta')P(X|\theta')
P(Z∣θ′)P(X∣θ′)项,可以认为是常数,不影响估计极大过程。
现在解释这样变换的好处。下面给出了极大似然方法估计函数和EM算法估计函数,分别取了对数
log L ( x 1 , . . . , x T ; π , μ , Σ ) = ∑ n = 1 N ∑ k = 1 K π k log N ( x n ∣ μ k , σ k 2 ) \log L(x_{1},...,x_{T};\pi,\mu,\Sigma) = \sum_{n=1}^{N}\sum_{k=1}^{K} \pi_{k} \log N(x_{n}|\mu_{k},\sigma_{k}^2) logL(x1,...,xT;π,μ,Σ)=∑n=1N∑k=1KπklogN(xn∣μk,σk2) — EM算法的估计函数
log L ( x 1 , . . . , x T ; π , μ , Σ ) = ∑ n = 1 N log ∑ k = 1 K π k N ( x i ∣ μ k , σ k 2 ) \log L(x_{1},...,x_{T};\pi,\mu,\Sigma) = \sum_{n=1}^{N} \log \sum_{k=1}^{K} \pi_{k} N(x_{i}|\mu_{k},\sigma_{k}^2) logL(x1,...,xT;π,μ,Σ)=∑n=1Nlog∑k=1KπkN(xi∣μk,σk2) — 极大似然的估计函数
两者相比,EM算法的表达式在解开累乘后,log函数内不再有累加符号,累加符号被变换到了log外面,才能顺利实现参数估计。
表达式确定后,接下即可分为E和M步估计参数
2.2.2 E步
计算
P
(
Z
∣
θ
′
)
P(Z|\theta')
P(Z∣θ′),也是Z的期望。对应GMM问题是,计算后验概率
P
(
γ
∣
θ
′
)
P(\gamma|\theta')
P(γ∣θ′):
γ
k
n
=
P
(
γ
k
∣
θ
′
)
=
π
k
N
(
x
n
∣
μ
k
,
Σ
k
)
∑
j
π
k
N
(
x
n
∣
μ
j
,
Σ
j
)
\gamma_{kn} = P(\gamma_{k}|\theta') = \frac{\pi_{k}N(x_{n}|\mu_{k},\Sigma_{k})}{\sum_{j}\pi_{k}N(x_{n}|\mu_{j},\Sigma_{j})}
γkn=P(γk∣θ′)=∑jπkN(xn∣μj,Σj)πkN(xn∣μk,Σk)
其中n指代时间序列,k、j指代第几类。
2.2.3 M步
根据求得的
P
(
Z
∣
θ
′
)
P(Z|\theta')
P(Z∣θ′)和
θ
′
\theta'
θ′估计参数
θ
′
\theta'
θ′。对应GMM问题是,根据估计到的后验概率
γ
k
n
\gamma_{kn}
γkn和前一时刻参数
μ
′
\mu'
μ′、
Σ
′
\Sigma'
Σ′和
π
′
\pi'
π′,估计下一时刻参数
μ
\mu
μ、
Σ
\Sigma
Σ和
π
\pi
π。
μ
k
=
1
N
k
∑
n
=
1
N
γ
k
n
x
n
\mu_k = \frac{1}{N_{k}} \sum_{n=1}^{N} \gamma_{kn}x_{n}
μk=Nk1n=1∑Nγknxn
Σ
k
=
1
N
k
∑
n
=
1
N
γ
k
n
(
x
n
−
μ
k
)
(
x
n
−
μ
k
)
T
\Sigma_{k} = \frac{1}{N_{k}} \sum_{n=1}^{N} \gamma_{kn}(x_{n}-\mu_{k})(x_{n}-\mu_{k})^{T}
Σk=Nk1n=1∑Nγkn(xn−μk)(xn−μk)T
π
k
=
N
k
N
\pi_{k} = \frac{N_{k}}{N}
πk=NNk
其中
N
k
=
∑
n
=
1
N
γ
k
n
N_{k}=\sum_{n=1}^{N}\gamma_{kn}
Nk=∑n=1Nγkn。
2.3 EM算法估计GMM参数的迭代过程
第一步:初始化参数
μ
\mu
μ、
Σ
\Sigma
Σ和
π
\pi
π
第二步:计算后验概率,即E步
第三步:计算当前估计的参数,即M步
第四步:反复迭代第二步和第三步直至收敛