我是靠谱客的博主 勤奋钥匙,最近开发中收集的这篇文章主要介绍十一、高斯混合模型(Gaussian Mixed Model, GMM)1 高斯模型2 高斯混合模型与 EM 算法3 GMM 和 K-means 的对比,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1 高斯模型

1.1 单高斯模型

当样本数据 X X X 是一维数据时, X X X 服从高斯分布是指其概率密度函数(Probability Density Function)可以用下面的式子表示:

P ( x ∣ θ ) = 1 2 π σ exp ⁡ ( − ( x − μ ) 2 2 σ 2 ) P(x|theta)=frac{1}{sqrt{2pi} sigma} exp (-frac{(x-mu)^2}{2sigma^2}) P(xθ)=2π σ1exp(2σ2(xμ)2)

其中, μ mu μ 为数据均值(期望), σ sigma σ 为数据标准差(Standard Deviation)。

当样本数据 X X X 是多维数据时, X X X 服从高斯分布是指其概率密度函数(Probability Density Function)可以用下面的式子表示:

P ( x ∣ θ ) = 1 ( 2 π ) D 2 ∣ Σ ∣ 1 2 exp ⁡ ( − ( x − μ ) T Σ − 1 ( x − μ ) 2 ) P(x|theta)=frac{1}{(2pi)^{frac{D}{2}} |Sigma|^{frac{1}{2}}} exp (-frac{(x-mu)^T Sigma^{-1} (x-mu)}{2}) P(xθ)=(2π)2DΣ211exp(2(xμ)TΣ1(xμ))

其中, μ mu μ 为数据均值(期望), σ sigma σ 为数据标准差(Standard Deviation), D D D 为数据维度。

1.2 高斯模型混合模型

高斯混合模型可以看做是由 K K K 个单高斯模型组合而成的模型,其定义为:

高斯混合模型是指具有如下形式的概率分布模型:
P ( x ∣ θ ) = ∑ k = 1 K α k ϕ ( x ∣ θ k ) P(x|theta)=sum_{k=1}^{K}alpha_k phi(x|theta_k) P(xθ)=k=1Kαkϕ(xθk)
其中, α k alpha_k αk 是系数, α k ≥ 0 alpha_k geq 0 αk0 ∑ k = 1 K α k = 1 sum_{k=1}^{K}alpha_k=1 k=1Kαk=1 ϕ ( x ∣ θ k ) phi(x|theta_k) ϕ(xθk) 是高斯分布, θ k = ( μ k , Σ k 2 ) theta_k=(mu_k,Sigma_k^2) θk=(μk,Σk2)
ϕ ( x ∣ θ k ) = 1 ( 2 π ) D 2 ∣ Σ k ∣ 1 2 exp ⁡ ( − ( x − μ k ) T Σ k − 1 ( x − μ k ) 2 ) phi(x|theta_k)=frac{1}{(2pi)^{frac{D}{2}} |Sigma_k|^{frac{1}{2}}} exp (-frac{(x-mu_k)^T Sigma_k^{-1} (x-mu_k)}{2}) ϕ(xθk)=(2π)2DΣk211exp(2(xμk)TΣk1(xμk))
称为第 k k k 个分模型

高斯混合模型是一个生成式模型,可以这样理解数据的生成过程:假设一个最简单的情况,即只有两个一维标准高斯分布的分模型 N ( 0 , 1 ) N(0,1) N(0,1) N ( 2 , 1 ) N(2,1) N(2,1) ,这两个分布的权重分别为 0.7 和 0.3,那么在生成一个数据点时,先按照 0.7 和 0.3 的概率随机选择一个分布,比如选择的是第一个分布 N ( 0 , 1 ) N(0,1) N(0,1),那么下一步就是按照 N ( 0 , 1 ) N(0,1) N(0,1) 生成一个数据点。每一个点的生成过程都是互相独立的,不断循环,就生成了所有的数据点。

2 高斯混合模型与 EM 算法

2.1 基本思想

高斯混合模型的核心思想是: 假设数据可以看作是从多个高斯分布中生成出来的,在该假设下,每个单独的分模型都是标准高斯模型,其均值 μ k mu_k μk 和方差 σ k sigma_k σk 是待估计的参数,每个分模型还有一个需要求解的参数 α k alpha_k αk,可以理解为该分布的权重或生成数据的概率。

通常,高斯混合模型的求解是在给定一系列数据点的情况下,求得最佳的 K K K 个高斯分模型。因为问题的本质,是求解最佳的均值 μ mu μ、方差 σ sigma σ 和权重 α alpha α,这类问题通常是用最大似然估计来求解的,但在这里,如果直接用最大似然估计,得到的是一个复杂的非凸函数,目标函数是和的对数,难以展开和求偏导。

高斯混合模型通常是用 EM 算法来求解该优化问题的,EM 算法的基本思想是:

  1. 先固定一个变量使整体函数变为凸优化函数,求导得到最值
  2. 固定步骤 1 中求得的最优参数,通过最优化方法更新步骤 1 中固定的变量
  3. 若达到停止条件,则停止更新;否则,重复步骤 1 和步骤 2

将 EM 算法用于高斯混合模型,其基本步骤为:

  1. 初始随机选择各参数的值
  2. E 步骤:根据当前的参数,计算每个数据点由每个分模型生成的概率
  3. M 步骤:根据 E 步骤生成的概率,来优化每个分模型的均值 μ mu μ、方差 σ sigma σ 和权重 α alpha α
  4. 重复 E 步骤和 M 步骤直到收敛。

2.2 求解过程

1、引入隐变量

首先,我们定义隐变量 γ j k gamma_{jk} γjk,它的取值只能是 1 或者 0,其具体含义如下:

  • 取值为 1:第 j j j 个数据来自于第 k k k 个高斯分布
  • 取值为 0:第 j j j 个数据不来自于第 k k k 个高斯分布

那么,每个数据点都对应于一个向量变量 Γ j = { γ j 1 , ⋯   , γ j K } Gamma_j={gamma_{j1},cdots,gamma_{jK}} Γj={γj1,,γjK},因为GMM 中的各个高斯分布相互独立,且 α k alpha_k αk 可以看作是数据来自第 k k k 个高斯分布的概率,因此可以通过连乘得到整个隐变量 Γ j Gamma_j Γj 的先验概率分布,则有:

∑ k = 1 K γ j k = 1 p ( Γ j ) = ∏ k = 1 K α k γ j k begin{aligned} sum_{k=1}^{K}gamma_{jk} &=1 \ p(Gamma_j) &= prod_{k=1}^K alpha_k^{gamma_{jk}} end{aligned} k=1Kγjkp(Γj)=1=k=1Kαkγjk

2、得到所有数据的似然函数

对于每个样本数据 x j x_j xj,在已知其是由哪个高斯分布生成的之后,那么它服从的概率分布即为:

p ( x j ∣ γ j k = 1 ; θ ) = N ( x j ∣ μ k , Σ k ) p(x_j|gamma_{jk}=1;theta)=N(x_j|mu_k,Sigma_k) p(xjγjk=1;θ)=N(xjμk,Σk)

因为这些高斯分布之间互相独立,因此,可以写作:

p ( x j ∣ Γ j ; θ ) = ∏ k = 1 K N ( x j ∣ μ k , Σ k ) γ j k p(x_j|Gamma_{j};theta)=prod_{k=1}^K N(x_j|mu_k,Sigma_k)^{gamma_{jk}} p(xjΓj;θ)=k=1KN(xjμk,Σk)γjk

这样就得到了已知 Γ j Gamma_j Γj 的情况下单个数据的后验概率分布,结合之前得到的 Γ j Gamma_j Γj 的先验概率分布,则单个样本的似然函数为:

p ( x j , Γ j ∣ θ ) = ∏ k = 1 K α k γ j k N ( x j ∣ μ k , Σ k ) γ j k p(x_j,Gamma_{j}|theta)=prod_{k=1}^K alpha_k^{gamma_{jk}} N(x_j|mu_k,Sigma_k)^{gamma_{jk}} p(xj,Γjθ)=k=1KαkγjkN(xjμk,Σk)γjk

则,所有样本点的似然函数为:

p ( x , Γ j ∣ θ ) = ∏ j = 1 N ∏ k = 1 K α k γ j k N ( x j ∣ μ k , σ k ) γ j k p(x,Gamma_{j}|theta)=prod_{j=1}^N prod_{k=1}^K alpha_k^{gamma_{jk}} N(x_j|mu_k,sigma_k)^{gamma_{jk}} p(x,Γjθ)=j=1Nk=1KαkγjkN(xjμk,σk)γjk

取对数,则对数似然函数为:

ln ⁡ p ( x , Γ j ∣ θ ) = ∑ j = 1 N ∑ k = 1 K ( γ j k ln ⁡ α k + γ j k ln ⁡ N ( x j ∣ μ k , Σ k ) ) ln p(x,Gamma_{j}|theta)=sum_{j=1}^N sum_{k=1}^K (gamma_{jk} ln alpha_k+gamma_{jk} ln N(x_j|mu_k,Sigma_k)) lnp(x,Γjθ)=j=1Nk=1K(γjklnαk+γjklnN(xjμk,Σk))

3、计算各个高斯分布的参数

首先,根据单高斯的向量形式的概率密度函数对 ln ⁡ N ( x j ∣ μ k , Σ k ) ) ln N(x_j|mu_k,Sigma_k)) lnN(xjμk,Σk)) 进行展开:

ln ⁡ N ( x j ∣ μ k , Σ k ) ) = − D 2 ln ⁡ ( 2 π ) − 1 2 ln ⁡ ∣ Σ k ∣ − 1 2 ( x j − μ k ) T Σ k − 1 ( x j − μ k ) ln N(x_j|mu_k,Sigma_k))=-frac{D}{2} ln(2pi) - frac{1}{2} ln | Sigma_k |-frac{1}{2} (x_j-mu_k)^T Sigma_k^{-1}(x_j-mu_k) lnN(xjμk,Σk))=2Dln(2π)21lnΣk21(xjμk)TΣk1(xjμk)

假设隐变量 γ j k gamma_{jk} γjk 的值已知,则对似然函数分别对 α k alpha_k αk Σ k Sigma_k Σk 求偏导,并令偏导为零,则可以得到:

μ k = ∑ j = 1 N ∑ k = 1 K γ j k x j ∑ j = 1 N ∑ k = 1 K γ j k Σ k = ∑ j = 1 N ∑ k = 1 K γ j k ( x j − μ k ) ( x j − μ k ) T ∑ j = 1 N ∑ k = 1 K γ j k begin{aligned} mu_k &=frac{sum_{j=1}^N sum_{k=1}^K gamma_{jk} x_j}{sum_{j=1}^N sum_{k=1}^K gamma_{jk}} \ Sigma_k &= frac{sum_{j=1}^N sum_{k=1}^K gamma_{jk} (x_j-mu_k)(x_j-mu_k)^T}{sum_{j=1}^N sum_{k=1}^K gamma_{jk}} end{aligned} μkΣk=j=1Nk=1Kγjkj=1Nk=1Kγjkxj=j=1Nk=1Kγjkj=1Nk=1Kγjk(xjμk)(xjμk)T

因为 γ j k gamma_{jk} γjk 只在 k k k 处取值为 1,其他取值均为 0,因此,上面两式可以简化为:

μ k = ∑ j = 1 N γ j k x j ∑ j = 1 N γ j k Σ k = ∑ j = 1 N γ j k ( x j − μ k ) ( x j − μ k ) T ∑ j = 1 N γ j k begin{aligned} mu_k &=frac{sum_{j=1}^N gamma_{jk} x_j}{sum_{j=1}^N gamma_{jk}} \ Sigma_k &= frac{sum_{j=1}^N gamma_{jk} (x_j-mu_k)(x_j-mu_k)^T}{sum_{j=1}^N gamma_{jk}} end{aligned} μkΣk=j=1Nγjkj=1Nγjkxj=j=1Nγjkj=1Nγjk(xjμk)(xjμk)T

下面对 α k alpha_k αk 进行求解,因为 ∑ k = 1 K α k = 1 sum_{k=1}^{K}alpha_k=1 k=1Kαk=1,利用拉格朗日乘子法,结合似然函数和约束条件对 α k alpha_k αk 求偏导,有:

α k = ∑ j = 1 N γ j k − λ alpha_k=frac{sum_{j=1}^N gamma_{jk}}{-lambda} αk=λj=1Nγjk

因为 ∑ k = 1 K α k = 1 sum_{k=1}^{K} alpha_k=1 k=1Kαk=1,所以可以得到:

λ = − N lambda=-N λ=N

因此,

α k = ∑ j = 1 N γ j k N alpha_k=frac{sum_{j=1}^N gamma_{jk}}{N} αk=Nj=1Nγjk

4、得到隐变量的估计公式

根据 EM 算法,选择需要根据当前参数的取值求隐变量的期望,即求 E { γ j k ∣ x , θ } E{gamma_{jk}|x,theta} E{γjkx,θ}

E { γ j k ∣ x , θ } = P ( γ j k = 1 ∣ x , θ ) = P ( γ j k = 1 , x j ∣ θ ) ∑ k = 1 K P ( γ j k = 1 , x j ∣ θ ) = P ( x j ∣ γ j k = 1 , θ ) P ( γ j k = 1 ∣ θ ) ∑ k = 1 K P ( x j ∣ γ j k = 1 , θ ) P ( γ j k = 1 ∣ θ ) = α k N ( x j ∣ μ k , Σ k ) ∑ k = 1 K α k N ( x j ∣ μ k , Σ k ) begin{aligned} E{gamma_{jk}|x,theta} &= P(gamma_{jk}=1|x,theta) \ &= frac{P(gamma_{jk}=1,x_j|theta)}{sum_{k=1}^{K} P(gamma_{jk}=1,x_j|theta)} \ &= frac{P(x_j|gamma_{jk}=1,theta)P(gamma_{jk}=1|theta)}{sum_{k=1}^{K} P(x_j|gamma_{jk}=1,theta)P(gamma_{jk}=1|theta)} \ &= frac{alpha_k N(x_j|mu_k,Sigma_k)}{sum_{k=1}^{K} alpha_k N(x_j|mu_k,Sigma_k)} end{aligned} E{γjkx,θ}=P(γjk=1x,θ)=k=1KP(γjk=1,xjθ)P(γjk=1,xjθ)=k=1KP(xjγjk=1,θ)P(γjk=1θ)P(xjγjk=1,θ)P(γjk=1θ)=k=1KαkN(xjμk,Σk)αkN(xjμk,Σk)

5、根据 EM 算法进行迭代

重复计算直到收敛,常用的收敛条件如 ∥ θ i + 1 − θ i ∥ < ε |theta_{i+1}-theta_{i}|<varepsilon θi+1θi<ε,其中 ε varepsilon ε 是个很小的正数。

2.3 计算过程总结

(1)初始化参数

(2)E step

计算 每个数据 x j x_j xj 来自于子模型 k k k 的概率

γ j k = α k N ( x j ∣ μ k , Σ k ) ∑ k = 1 K α k N ( x j ∣ μ k , Σ k ) , j = 1 , 2 , ⋯   , N ; k = 1 , 2 , ⋯   , K gamma_{jk}=frac{alpha_k N(x_j|mu_k,Sigma_k)}{sum_{k=1}^{K} alpha_k N(x_j|mu_k,Sigma_k)}, j=1,2,cdots,N; k=1,2,cdots,K γjk=k=1KαkN(xjμk,Σk)αkN(xjμk,Σk),j=1,2,,N;k=1,2,,K

(3)M step

计算模型参数

μ k = ∑ j = 1 N γ j k x j ∑ j = 1 N γ j k , k = 1 , 2 , ⋯   , K Σ k = ∑ j = 1 N γ j k ( x j − μ k ) ( x j − μ k ) T ∑ j = 1 N γ j k , k = 1 , 2 , ⋯   , K α k = ∑ j = 1 N γ j k N , k = 1 , 2 , ⋯   , K begin{aligned} mu_k &=frac{sum_{j=1}^N gamma_{jk} x_j}{sum_{j=1}^N gamma_{jk}}, k=1,2,cdots,K \ Sigma_k &= frac{sum_{j=1}^N gamma_{jk} (x_j-mu_k)(x_j-mu_k)^T}{sum_{j=1}^N gamma_{jk}}, k=1,2,cdots,K \ alpha_k&=frac{sum_{j=1}^N gamma_{jk}}{N}, k=1,2,cdots,K end{aligned} μkΣkαk=j=1Nγjkj=1Nγjkxj,k=1,2,,K=j=1Nγjkj=1Nγjk(xjμk)(xjμk)T,k=1,2,,K=Nj=1Nγjk,k=1,2,,K

(4)重复 E-step 和 M-step 直到收敛

收敛条件: ∥ θ i + 1 − θ i ∥ < ε |theta_{i+1}-theta_{i}|<varepsilon θi+1θi<ε,其中 ε varepsilon ε 是个很小的正数。

3 GMM 和 K-means 的对比

首先,总结一下这两种方法的基本步骤。

GMM

  • 计算每个数据由每个分模型生成的概率
  • 根据概率更新每个分模型的参数
  • 迭代直到收敛

K-means

  • 计算所有数据点和 K K K 个中心点的距离,取距离最近的点为该点所属的类
  • 根据上一步的类别更新中心点的位置
  • 迭代直到收敛

可以看出,两种方法有很多的 相同点

  • GMM 中数据点由每个分模型生成的概率就相当于 K-means 中距离的计算
  • GMM 中根据概率计算高斯模型参数的过程就相当于 K-means 中计算分类点的位置
  • 最后两种方法都是通过迭代来达到最优的

两种方法的 不同点 在于:

  • GMM 模型给出的是每个数据点由每个分模型生成的概率,而 K-means 给出的是每个数据点属于哪个类别

最后

以上就是勤奋钥匙为你收集整理的十一、高斯混合模型(Gaussian Mixed Model, GMM)1 高斯模型2 高斯混合模型与 EM 算法3 GMM 和 K-means 的对比的全部内容,希望文章能够帮你解决十一、高斯混合模型(Gaussian Mixed Model, GMM)1 高斯模型2 高斯混合模型与 EM 算法3 GMM 和 K-means 的对比所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部