初探高斯混合模型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=1∑Kα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 k−means 那样需要先确定 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=1∏Kp(xk∣θ)logL(θ)=j=1∑Nlogk=1∑Kα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,k∑j=1N(γj,kxj),k=1,2,...,KΣk=∑j=1Nγj,k∑j=1Nγj,k(xj−μk)(xj−μk)T,k=1,2,...,Kαk=N∑j=1Nγj,k,k=1,2,...,K
重复E步和M步直至收敛
需要注意的是,EM 算法具备收敛性,但并不保证找到全局最大值,有可能找到局部最大值。解决方法是初始化几次不同的参数进行迭代,取结果最好的那次。
参考
- 李航老师——《统计学习方法》
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
