我是靠谱客的博主 勤奋钥匙,这篇文章主要介绍十一、高斯混合模型(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π ​σ1​exp(−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​∣Σ∣21​1​exp(−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=1∑K​αk​ϕ(x∣θk​)
其中, α k alpha_k αk​ 是系数, α k ≥ 0 alpha_k geq 0 αk​≥0, ∑ 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​∣Σk​∣21​1​exp(−2(x−μk​)TΣk−1​(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=1∑K​γjk​p(Γj​)​=1=k=1∏K​α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=1∏K​N(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=1∏K​αkγjk​​N(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=1∏N​k=1∏K​αkγjk​​N(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=1∑N​k=1∑K​(γjk​lnαk​+γjk​lnN(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​))=−2D​ln(2π)−21​ln∣Σk​∣−21​(xj​−μk​)TΣk−1​(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=1N​∑k=1K​γjk​∑j=1N​∑k=1K​γjk​xj​​=∑j=1N​∑k=1K​γjk​∑j=1N​∑k=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​γjk​∑j=1N​γjk​xj​​=∑j=1N​γjk​∑j=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​=N∑j=1N​γjk​​

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

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

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{γjk​∣x,θ}​=P(γjk​=1∣x,θ)=∑k=1K​P(γjk​=1,xj​∣θ)P(γjk​=1,xj​∣θ)​=∑k=1K​P(xj​∣γjk​=1,θ)P(γjk​=1∣θ)P(xj​∣γjk​=1,θ)P(γjk​=1∣θ)​=∑k=1K​αk​N(xj​∣μk​,Σk​)αk​N(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​αk​N(xj​∣μk​,Σk​)αk​N(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​γjk​∑j=1N​γjk​xj​​,k=1,2,⋯,K=∑j=1N​γjk​∑j=1N​γjk​(xj​−μk​)(xj​−μk​)T​,k=1,2,⋯,K=N∑j=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内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部