初探高斯混合模型GMM

文章目录

  • 高斯混合模型 GMM
    • Mixture Model
    • Gaussian Mixture Model
    • 参数估计
    • 使用EM算法求解

高斯混合模型 GMM

本文将介绍常见的一种生成模型——Gaussian Mixture Model 高斯混合模型。

Mixture Model

混合模型是一个可以用来表示在总体分布(distribution)中含有 K 个子分布的概率模型,换句话说,混合模型表示了观测数据在总体中的概率分布,它是一个由 K 个子分布组成的混合分布。混合模型不要求观测数据提供关于子分布的信息,来计算观测数据在总体分布中的概率。

Gaussian Mixture Model

我们知道多维高斯分布遵从如下的概率密度函数:
p ( x ∣ θ ) = 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 e x p ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) p(x\mid \theta)=\dfrac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}}exp(-\dfrac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)) p(xθ)=(2π)2nΣ211exp(21(xμ)TΣ1(xμ))

高斯混合模型(Gaussian Mixture Model, GMM)是单一高斯概率密度函数的延伸,GMM能够平滑地近似任意形状的密度分布。

高斯混合模型可以看作是由 K 个单高斯模型组合而成的模型,这 K 个子模型是混合模型的隐变量。

而我们可以认为混合高斯模型的概率密度函数可由其k个单高斯分布概率密度函数加权得来。

假设我们的样本数据为 X X X,共有 x 1 , x 2 , . . . , x N N x_1,x_2,...,x_N\; N x1,x2,...,xNN个样本,用 α k \alpha_k αk 表示第 k k k 个单高斯模型的权值因子, G ( x ∣ θ ) G(x|\theta) G(xθ) 表示单高斯的概率密度函数,有:
p ( x ∣ θ ) = ∑ k = 1 K α k G ( x ∣ θ k ) p(x|\theta)=\sum_{k=1}^{K}\alpha_kG(x|\theta_k) p(xθ)=k=1KαkG(xθk)

显然,GMM的参数是一组 θ \theta θ
θ = ( μ k ~ , Σ k ~ , α k ~ ) \theta = (\tilde{\mu_k},\tilde{\Sigma_k},\tilde{\alpha_k}) θ=(μk~,Σk~,αk~)

看到这里会发现, k k k 的取值需要事先确定,非常重要,类似 k − m e a n s k-means kmeans 那样需要先确定 k k k

参数估计

在多维高斯分布的学习中,我们知道,可以用最大似然来估算 θ \theta θ 的值,似然函数即 L ( θ ) = p ( x ∣ θ ) L(\theta)=p(x|\theta) L(θ)=p(xθ)
θ = a r g m a x L ( θ ) \theta = argmaxL(\theta) θ=argmaxL(θ)
对于GMM,我们假设每组样本数据是独立的,则似然函数就是 k k k 个的累乘,考虑到单个点的概率很小,连乘后数据会更小,容易造成浮点数下溢,所以我们可以采用对数似然:
L ( θ ) = ∏ k = 1 K p ( x k ∣ θ ) l o g L ( θ ) = ∑ j = 1 N l o g ∑ k = 1 K α k G ( x ∣ θ k ) L(\theta)=\prod_{k=1}^{K}p(x_k|\theta) \\ logL(\theta)=\sum_{j=1}^{N}log\sum_{k=1}^{K}\alpha_kG(x|\theta_k) L(θ)=k=1Kp(xkθ)logL(θ)=j=1Nlogk=1KαkG(xθk)

使用EM算法求解

首先随机初始化一组参数
θ = ( μ k , Σ k , α k ) , k = 1 , 2 , . . . , K \theta=(\mu_k,\Sigma_k,\alpha_k),\;k=1,2,...,K θ=(μk,Σk,αk),k=1,2,...,K
E步:

所谓E就是Expectation,就是在当我们知道模型参数时,对隐变量 X X X 求期望,如下所示:
γ j , k = α k G ( x j ∣ μ k , Σ k ) ∑ k = 1 K α k G ( x j ∣ μ k , Σ k ) \gamma_{j,k}=\dfrac{\alpha_k G(x_j|\mu_k,\Sigma_k)}{\sum_{k=1}^{K}\alpha_k G(x_j|\mu_k,\Sigma_k)} γj,k=k=1KαkG(xjμk,Σk)αkG(xjμk,Σk)
γ j , k \gamma_{j,k} γj,k 也就是表示数据 x j x_j xj 属于第 k k k 个子高斯模型的概率。

M步:

现在我们有了 γ j , k \gamma_{j,k} γj,k ,就可以利用最大似然估计下一轮迭代的参数了:
μ 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 \mu_k=\dfrac{\sum_{j=1}^{N}(\gamma_{j,k}x_j)}{\sum_{j=1}^{N}\gamma_{j,k}},\; k=1,2,...,K \\ \Sigma_k=\dfrac{\sum_{j=1}^{N}\gamma_{j,k}(x_j-\mu_k)(x_j-\mu_k)^T}{\sum_{j=1}^{N}\gamma_{j,k}},\; k=1,2,...,K \\ \alpha_k = \dfrac{\sum_{j=1}^{N}\gamma_{j,k}}{N},\; k=1,2,...,K μk=j=1Nγj,kj=1N(γj,kxj),k=1,2,...,KΣk=j=1Nγj,kj=1Nγj,k(xjμk)(xjμk)T,k=1,2,...,Kαk=Nj=1Nγj,k,k=1,2,...,K
重复E步和M步直至收敛

需要注意的是,EM 算法具备收敛性,但并不保证找到全局最大值,有可能找到局部最大值。解决方法是初始化几次不同的参数进行迭代,取结果最好的那次。

参考

  1. 李航老师——《统计学习方法》


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部