ASR 混合高斯模型GMM的理解

混合高斯模型(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=1NπkN(μ,σ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=1Nπ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=1Tk=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θ)=logZP(X,Zθ)=logZP(Zθ)P(XZ,θ)
其中集合 { 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(XZ,θ)代表数据在对应高斯分布上的概率。

目前依旧难以直接估计,需要借助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(θ)=logZP(Zθ)P(XZ,θ)logP(Xθ)=logZP(Zθ)P(XZ,θ)×P(Zθ)P(Zθ)logP(Xθ)=logZP(Zθ)×P(Zθ)P(Xθ)P(Zθ)P(XZ,θ)ZP(Zθ)×logP(Zθ)P(Xθ)P(Zθ)P(XZ,θ)

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=1Mλixi)i=1Mλ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(θ)+ZP(Zθ)×logP(Zθ)P(Xθ)P(Zθ)P(XZ,θ)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θZP(Zθ)×logP(Zθ)P(XZ,θ)
其中忽略去了部分 θ ′ \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=1Nk=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=1Nlogk=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=1Nγ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=1Nγ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步
第四步:反复迭代第二步和第三步直至收敛

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值