高斯混合模型GMM及EM算法的求解

高斯混合模型GMM与EM算法的求解

一、基础知识

1.1 高斯分布与概率密度函数

二、高斯混合模型GMM介绍

2.1 示例

2.2 高斯混合模型

三、EM算法

3.1 EM算法估计参数

3.2 EM算法流程

一、基础知识

1.1 高斯分布与概率密度函数

高斯分布也就是我们所熟知的正态分布,是研究表明,在数学、物理科学和经济学等学科中,大量数据的分布通常是服从高斯分布, 应用范围非常广泛。高斯分布的定义为:假设随机变量 X X X服从高斯分布,即:
X ∼ N ( μ , σ 2 ) \begin{array}{c} \mathcal{X\sim N} (\mu , \sigma ^{2} ) \end{array} XN(μ,σ2)
高斯分布的概率密度函数为:
f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 \begin{array}{c} \mathcal{f} (x)=\frac{1}{\sqrt{2\pi }\sigma } e^{-\frac{(x-\mu )^{2} }{2\sigma ^{2} } } \end{array} f(x)=2π σ1e2σ2(xμ)2
其中 μ \mu μ为数学期望, σ 2 \sigma ^{2} σ2为方差。
如图1所示,均值与方差决定分布的位置与幅度。
在这里插入图片描述图1 高斯分布示例图

对于高维高斯模型,与一维类似,自变量变成了多维,多维变量 X = ( x 1 , x 2 , … x n ) \begin{array}{c} X=(x_{1} ,x_{2},\dots x_{n} ) \end{array} X=x1,x2,xn,联合概率密度函数为:
f ( x ) = 1 ( 2 π ) D 2 ∣ Σ ∣ ∣ exp ⁡ ( − ( x − μ ) T Σ − 1 ( x − μ ) 2 ) \begin{array}{l} f(x)=\frac{1}{(2 \pi)^{\frac{D}{2}} \sqrt{|\Sigma|}} \mid \exp \left(-\frac{(x-\mu)^{T} \Sigma^{-1}(x-\mu)}{2}\right) \end{array} f(x)=(2π)2DΣ 1exp(2(xμ)TΣ1(xμ))
其中 D D D表示数据维度, Σ \Sigma Σ表示协方差矩阵,描述各维向量之间的相关度。

二、高斯混合模型GMM介绍

2.1 示例

举一个简单的例子,如图2所示, 对高斯分布做参数估计,得到一个高斯分布模型,很明显这样的分布不太合理,数据点明显分成两个聚类,按照这个模型,椭圆中心的样本数量极少,一般来讲越靠近椭圆中心样本出现的概率越大,这是由概率密度函数所决定的,所以,样本数据服从单高斯分布不合理。
在这里插入图片描述
图2 单高斯模型分析样本

这时求解两个高斯模型,通过一定的权重将两个高斯模型融合成一个模型,即最终的混合高斯模型,图3是混合高斯模型对样本进行描述。
在这里插入图片描述
图3 混合高斯模型分析样本

2.2 高斯混合模型

高斯混合模型GMM(Gaussian Mixture Model)是一类聚类算法。它是多个高斯分布函数的线性组合,通常用于解决统一集合下的数据包含多种不同分布的情况。
设随机变量 X X X,则高斯混合模型的可以描述为:
P ( x ) = ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) \begin{array}{c} P(x)=\sum_{k=1}^{K} \pi _{k}N(x|\mu _{k}, \Sigma _{k} ) \end{array} P(x)=k=1KπkN(xμk,Σk)
其中, K K K为混合模型中子高斯模型的数量, π k \pi _{k} πk 是混合系数,表示观测数据属于第 k k k个子模型的概率,且满足 π k ≥ 0 , ∑ k = 1 K π k = 1 , \begin{array}{c} \pi _{k} \ge 0,\sum_{k=1}^{K} \pi _{k} =1 \end{array} , πk0,k=1Kπk=1也可以理解为每个成分的权重, N ( x ∣ μ k , Σ k ) \begin{array}{c} \mathcal{N(x|\mu _{k} ,\Sigma _{k} )} \end{array} Nxμk,Σk是第 k k k个子模型的高斯分布密度函数, μ \mu μ 为均值, Σ \Sigma Σ是协方差矩阵。

引入一个隐变量 y j y_{j} yj,它是一个 K K K维向量,每一次采样,选择第 k k k个高斯模型的概率,它只在某个特定元素取值为1,其它元素取值为0。将高斯混合模型改写为: P ( x ) = ∑ k = 1 K p ( y j ) p ( x ∣ y j ) \begin{array}{c} P(x)=\sum_{k=1}^{K}p(y_{j})p(x|y_{j}) \end{array} P(x)=k=1Kp(yj)p(xyj)
对比可得: π k = p ( y j ) \pi _{k}=p(y_{j}) πk=p(yj) p ( x ∣ y j ) = N ( x ∣ μ k , Σ k ) p(x|y_{j})=N(x|\mu _{k},\Sigma _{k} ) p(xyj)=N(xμk,Σk),利用这些公式根据贝叶斯理论求解后验概率 p ( y j ∣ x ) p(y_{j}|x) p(yjx)
Υ j k = p ( y j ∣ x ) \begin{array}{c} \Upsilon _{jk} =p(y_{j} |x) \end{array} Υjk=p(yjx),且满足 ∑ k = 1 K Υ j k = 1 \begin{array}{c} \sum_{k=1}^{K} \Upsilon _{jk} =1 \end{array} k=1KΥjk=1

三、EM算法

3.1 EM算法估计参数

解GMM模型,实际上就是确定GMM模型的参数 ( μ , π , Σ ) (\mu ,\pi ,\Sigma ) (μ,π,Σ), 由这些参数确定GMM模型最有可能产生的样本。求解参数的流程为:首先写出似然函数,对似然函数取对数,接着对其求导,并令导数为0,得出模型参数。
最大似然函数为:
L L = ∑ j = 1 M log ⁡ ( ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) ) = ∑ j = 1 M log ⁡ ( ∑ k = 1 K Υ j k π k N ( x ∣ μ k , Σ k ) Υ j k ) ≥ ∑ j = 1 M ∑ k = 1 K Υ j k log ⁡ ( π k N ( x ∣ μ k , Σ k ) Υ j k ) \begin{array}{c} \begin{array}{l} L L=\sum_{j=1}^{M} \log \left(\sum_{k=1}^{K} \pi_{k} N\left(x \mid \mu_{k}, \Sigma_{k}\right)\right) \\ =\sum_{j=1}^{M} \log \left(\sum_{k=1}^{K} \frac{\Upsilon_{j k} \pi_{k} N\left(x \mid \mu_{k}, \Sigma_{k}\right)}{\Upsilon_{j k}}\right) \\ \geq \sum_{j=1}^{M} \sum_{k=1}^{K} \Upsilon_{j k} \log \left(\frac{\pi_{k} N\left(x \mid \mu_{k}, \Sigma_{k}\right)}{\Upsilon_{j k}}\right) \end{array} \end{array} LL=j=1Mlog(k=1KπkN(xμk,Σk))=j=1Mlog(k=1KΥjkΥjkπkN(xμk,Σk))j=1Mk=1KΥjklog(ΥjkπkN(xμk,Σk))

H = ∑ j = 1 M ∑ k = 1 K Υ j k l o g ( π k N ( x n ∣ μ k , Σ k ) Υ j k ) \begin{array}{c} H=\sum_{j=1}^{M} \sum_{k=1}^{K} \Upsilon _{jk} log(\frac{\pi _{k}N(x_{n}|\mu _{k},\Sigma _{k} ) }{\Upsilon _{jk} }) \end{array} H=j=1Mk=1KΥjklog(ΥjkπkN(xnμk,Σk)),分别对 μ k 、 Σ k 和 π k \begin{array}{c} \mu _{k} 、\Sigma _{k} 和\pi _{k} \end{array} μkΣkπk求导,并令结果等于0,得出结果。
H = ∑ j = 1 M ∑ k = 1 K Υ j k log ⁡ ( π k N ( x n ∣ μ k , Σ k ) Υ j k ) = ∑ j = 1 M ∑ k = 1 K Υ j k log ⁡ [ π k Υ j k ⋅ 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 ⋅ exp ⁡ ( − 1 2 ( x n − μ k ) T Σ k − 1 ( x n − μ k ) ] \begin{array}{c} \end{array}\begin{array}{l} H=\sum_{j=1}^{M} \sum_{k=1}^{K} \Upsilon_{j k} \log \left(\frac{\pi_{k} N\left(x_{n} \mid \mu_{k}, \Sigma_{k}\right)}{\Upsilon_{j k}}\right) \\ =\sum_{j=1}^{M} \sum_{k=1}^{K} \Upsilon_{j k} \log \left[\frac{\pi_{k}}{\Upsilon_{j k}} \cdot \frac{1}{(2 \pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}} \cdot \exp \left(-\frac{1}{2}\left(x_{n}-\mu_{k}\right)^{T} \Sigma_{k}^{-1}\left(x_{n}-\mu_{k}\right)\right]\right. \end{array} H=j=1Mk=1KΥjklog(ΥjkπkN(xnμk,Σk))=j=1Mk=1KΥjklog[Υjkπk(2π)2nΣ211exp(21(xnμk)TΣk1(xnμk)]
Σ k \Sigma _{k} Σk求导
∂ H ∂ Σ k = ∑ j = 1 M Υ j k [ π k Υ j k ⋅ 1 − ∣ ∑ ∣ 1 2 ⋅ 1 2 Σ − 1 2 ∣ ∑ k ∣ ( Σ − 1 ) T + 1 2 ( Σ k − 1 ) T ( x n − μ k ) T ( x n − μ k ) ( Σ k − 1 ) T ] = ∑ j = 1 M Υ j k [ − 1 2 ( Σ k − 1 ) T + 1 2 ( Σ k − 1 ) T ( x n − μ k ) ( x n − μ k ) T ( Σ k − 1 ) T ] \begin{array}{l} \frac{\partial H}{\partial \Sigma_{k}}=\sum_{j=1}^{M} \Upsilon_{j k}\left[\frac{\pi_{k}}{\Upsilon_{j k}} \cdot \frac{1}{-\left|\sum\right|^{\frac{1}{2}}} \cdot \frac{1}{2} \Sigma^{-\frac{1}{2}}\left|\sum_{k}\right|\left(\Sigma^{-1}\right)^{T}+\frac{1}{2}\left(\Sigma_{k}^{-1}\right)^{T}\left(x_{n}-\mu_{k}\right)^{T}\left(x_{n}-\mu_{k}\right)\left(\Sigma_{k}^{-1}\right)^{T}\right] \\ =\sum_{j=1}^{M} \Upsilon_{j k}\left[-\frac{1}{2}\left(\Sigma_{k}^{-1}\right)^{T}+\frac{1}{2}\left(\Sigma_{k}^{-1}\right)^{T}\left(x_{n}-\mu_{k}\right)\left(x_{n}-\mu_{k}\right)^{T}\left(\Sigma_{k}^{-1}\right)^{T}\right] \end{array} ΣkH=j=1MΥjk[Υjkπk21121Σ21k(Σ1)T+21(Σk1)T(xnμk)T(xnμk)(Σk1)T]=j=1MΥjk[21(Σk1)T+21(Σk1)T(xnμk)(xnμk)T(Σk1)T]
令导数为0,即:
∂ H ∂ Σ k = ∑ j = 1 M Υ j k [ − 1 2 ( Σ k − 1 ) T + 1 2 ( Σ k − 1 ) T ( x n − μ k ) ( x n − μ k ) T ( Σ k − 1 ) T ] = 0 \begin{array}{l} \frac{\partial H}{\partial \Sigma_{k}}=\sum_{j=1}^{M} \Upsilon_{j k}\left[-\frac{1}{2}\left(\Sigma_{k}^{-1}\right)^{T}+\frac{1}{2}\left(\Sigma_{k}^{-1}\right)^{T}\left(x_{n}-\mu_{k}\right)\left(x_{n}-\mu_{k}\right)^{T}\left(\Sigma_{k}^{-1}\right)^{T}\right] \end{array}=0 ΣkH=j=1MΥjk[21(Σk1)T+21(Σk1)T(xnμk)(xnμk)T(Σk1)T]=0
先左乘 Σ k T \Sigma _{k}^{T} ΣkT,再右乘 Σ k T \Sigma _{k}^{T} ΣkT,注意 Σ k = Σ k T \begin{array}{l} \Sigma _{k} =\Sigma _{k}^{T} \end{array} Σk=ΣkT

Σ j = 1 M Υ j k [ − Σ k + ( x n − μ k ) ( x n − μ k ) T ] = 0 \begin{array}{l} \Sigma _{j=1}^{M} \Upsilon _{jk} [-\Sigma _{k}+(x_{n} -\mu _{k}) (x_{n} -\mu _{k} )^{T} ] \end{array}=0 Σj=1MΥjk[Σk+(xnμk)(xnμk)T]=0
− Σ j = 1 M Υ j k Σ k + Σ j = 1 M Υ j k ( x n − μ k ) ( x n − μ k ) T = 0 \begin{array}{l} -\Sigma _{j=1}^{M} \Upsilon _{jk}\Sigma _{k}+\Sigma _{j=1}^{M} \Upsilon _{jk}(x_{n} -\mu _{k})(x_{n} -\mu _{k} )^{T} \end{array}=0 Σj=1MΥjkΣk+Σj=1MΥjk(xnμk)(xnμk)T=0
得出:
Σ k = ∑ j = 1 M Υ j k ( x n − μ k ) ( x n − μ k ) T ∑ j = 1 M Υ j k \Sigma _{k}=\frac{\sum_{j=1}^{M} \Upsilon_{j k}\left(x_{n} -\mu _{k}\right)\left(x_{n} -\mu _{k} \right)^{T}}{\sum_{j=1}^{M} \Upsilon_{j k}} Σk=j=1MΥjkj=1MΥjk(xnμk)(xnμk)T
同理,求 μ k \mu _{k} μk
∂ H ∂ μ k = ∑ j = 1 M Υ j k [ 1 2 ( ( Σ k − 1 ) T + Σ k − 1 ) ( x n − μ k ) ] = 0 \begin{array}{l} \frac{\partial H}{\partial \mu_{k}}=\sum_{j=1}^{M} \Upsilon_{j k}\left[\frac{1}{2}\left(\left(\Sigma_{k}^{-1}\right)^{T}+\Sigma_{k}^{-1}\right)\left(x_{n}-\mu_{k}\right)\right] \end{array}=0 μkH=j=1MΥjk[21((Σk1)T+Σk1)(xnμk)]=0
两边同时左乘 Σ k \Sigma _{k} Σk,得到:
μ k = ∑ j = 1 M Υ j k x n ∑ j = 1 M Υ j k \mu _{k}=\frac{\sum_{j=1}^{M} \Upsilon_{j k} x_{n}}{\sum_{j=1}^{M} \Upsilon_{j k}} μk=j=1MΥjkj=1MΥjkxn
最后,求解 π k \pi _{k} πk π k \pi _{k} πk有限制条件: ∑ k = 1 K π j k = 1 \begin{array}{l} \sum_{k=1}^{K} \pi _{jk} =1 \end{array} k=1Kπjk=1,需要加入拉格朗日算子进行计算:
F + λ ( ∑ k = 1 K π k − 1 ) = 0 \begin{array}{l} F+\lambda( \sum_{k=1}^{K} \pi _{k} -1)=0 \end{array} F+λ(k=1Kπk1)=0
π k \pi _{k} πk求导:
∂ F ∂ π k + λ ( ∑ k = 1 K π k − 1 ) = 0 \begin{array}{l} \frac{\partial F}{\partial \pi _{k} } +\lambda( \sum_{k=1}^{K} \pi _{k} -1)=0 \end{array} πkF+λ(k=1Kπk1)=0
解出:
π k = − ∑ j = 1 M Υ j k λ \begin{array}{l} \pi _{k} =- \frac{\sum_{j=1}^{M}\Upsilon _{jk} }{\lambda } \end{array} πk=λj=1MΥjk
对和 λ \lambda λ求导:
∂ F ∂ λ = ∑ k = 1 K π k − 1 = 0 \begin{array}{l} \frac{\partial F}{\partial \lambda } =\sum_{k=1}^{K} \pi _{k}-1=0 \end{array} λF=k=1Kπk1=0
π k \pi _{k} πk值代入上式,其中 ∑ k = 1 K Υ j k = 1 \sum_{k=1}^{K} \Upsilon _{jk} =1 k=1KΥjk=1 ∑ k = 1 K ∑ j = 1 M Υ j k = ∑ j = 1 M ∑ k = 1 K Υ j k \sum_{k=1}^{K} \sum_{j=1}^{M} \Upsilon _{jk} =\sum_{j=1}^{M}\sum_{k=1}^{K} \Upsilon _{jk} k=1Kj=1MΥjk=j=1Mk=1KΥjk,得出:
λ = − M \lambda =-M λ=M
λ \lambda λ代回 π k \pi _{k} πk中,得出 π k \pi _{k} πk
π k = ∑ j = 1 M Υ j k M \begin{array}{l} \pi _{k}= \frac{\sum_{j=1}^{M}\Upsilon _{jk}}{M} \end{array} πk=Mj=1MΥjk

3.2 EM算法流程

EM算法是一种迭代算法,具体计算步骤为:
(1)首先初始化参数
(2)E-step,求期望,依据当前的参数,计算每个数据 j j j来自模型 k k k的可能性,
Υ j k = π k N ( x ∣ μ k , Σ k ) ∑ l π l N ( x ∣ μ l , Σ l ) \begin{array}{l} \Upsilon_{j k}=\frac{\pi_{k} N\left(x \mid \mu_{k}, \Sigma_{k}\right)}{\sum_{l} \pi_{l} N\left(x \mid \mu_{l}, \Sigma_{l}\right)} \end{array} Υjk=lπlN(xμl,Σl)πkN(xμk,Σk)
(3)M-step:求极大,计算新一轮迭代的模型参数
μ k n e w = ∑ j = 1 M Υ j k x n ∑ j = 1 M Υ j k \mu_{k}^{n e w}=\frac{\sum_{j=1}^{M} \Upsilon_{j k} x_{n}}{\sum_{j=1}^{M} \Upsilon_{j k}} μknew=j=1MΥjkj=1MΥjkxn
∑ k n e w = ∑ j = 1 M Υ j k ( x n − μ k n e w ) ( x n − μ k n e w ) T ∑ j = 1 M Υ j k {\textstyle \sum_{k}^{new}} =\frac{\sum_{j=1}^{M} \Upsilon_{j k}\left(x_{n}-\mu_{k}^{n e w}\right)\left(x_{n}-\mu_{k}^{n e w}\right)^{T}}{\sum_{j=1}^{M} \Upsilon_{j k}} knew=j=1MΥjkj=1MΥjk(xnμknew)(xnμknew)T
π k new  = ∑ j = 1 M Υ j k M \begin{array}{l} \pi _{k}^{\text {new }}= \frac{\sum_{j=1}^{M}\Upsilon _{jk}}{M} \end{array} πknew =Mj=1MΥjk
(4)重复计算E-step和M-step:直至收敛。

参考:
[1]高斯混合模型
[2]EM算法
[3]GMM 模型与EM算法求解详细推导
[4]高斯混合模型(GMM)及其EM算法的理解

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仙宫大niu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值