高斯混合模型GMM是一个非常基础并且应用很广的模型。对于它的透彻理解非常重要。
本文从高斯分布开始逐步透彻讲解高斯混合模型
高斯分布
高斯分布有两个参数:
- μ = mean(数据的中心)
- σ2 =variance(数据的分布扩展范围)
μ是高斯分布的位置参数。由概率密度函数图像可知,离μ越近概率密度越大,离μ越远概率越小。高斯分布以X=μ为对称轴,左右完全对称。期望、均数、中位数、众数相同,均等于μ。
σ2描述数据分布的离散程度,σ越大,数据分布越分散;反之,越聚集。也是高斯分布的形状参数,σ越大,曲线越平扁;反之,σ越小,曲线越瘦峭。
一维高斯分布
下图的数据就是由上图的高斯分布产生的。
高斯分布有如下重要性质
- 中心极限定理:大量相同分布的随机变量的和倾向于高斯分布。
- 高斯随机变量的和与差仍然是高斯。
- 如果X分布为N (µ, σ2)。。。
- aX + b分布为N (aµ + b, (aσ)2)
- 负对数看起来像加权欧几里德距离
二维高斯分布
如上公式所示,二维联合高斯分布的概率密度,从几何上讲,二维高斯分布在二维空间投影近似于椭圆,整个概率密度函数在三维空间上近似于椭球体。
可以参考本头条号另一篇文章《透彻理解高斯分布》一样,二维独立变量高斯分布的指数化简成椭圆曲线的形式,其中r表示其相关系数,如果r = 0,表示两个变量相互独立,联合概率密度为各自密度的乘积。
如果x1,x2不相关。知道x1并不能告诉你关于x2的一切。
下图是r = 0, σ1 = σ2时的分布图形:
x1,x2可以是不相关的并且具有不同的方差。即r = 0, σ1 !=σ2
如果x1,x2相关。那么知道x1能告诉获得一些关于x2的信息
我们把二维高斯分布的协方差矩阵写成如下的形式:
其中, x = (x1, x2), µ = (µ1, µ2)
求对数,与加权欧几里德距离很相似
如果协方差是对角阵:
高斯估计
数据与分布的匹配
通过获得的训练数据,如何选择参数µ、Σ,才能使数据和分布相匹配?
如果分布产生训练数据的可能性很高,就说明数据和分布相匹配的概率很高。
所以,我们用最大似然估计(Maximum Likelihood Estimate,MLE),寻找最优参数µ、Σ,使之最大化训练数据的可能性。表达形式如下:
假设我们开始选择了"正确"的分布。然后,随着训练样本数量的增加,MLE会接近"真实"参数。MLE是非常有效的,对于许多类型的模型,MLE是容易的。
MLE求解
最大似然估计是有封闭形式解的。
求对参数求偏导:
求得:
多维变量时,其均值和协方差是:
高斯估计的缺陷:并不是所有数据都是高斯分布。但是,如果用多个高斯分布(注意,是多个,不是多维),实践证明,是可以表达任何分布的,这就是我们接下来要讲的高斯混合模型GMM。
高斯混合模型
Σj pj = 1 , pj ≥ 0
这就是高斯混合模型。如果使用足够的高斯成分,可以很好地估计任何分布。给定训练数据,如何估计参数µj , Σj , 和混合权重 pj。
为了最大化数据的概率?没有封闭形式的解决方案。我们只能使用优化技术。
我们选择期望最大化算法(Expectation Maximum)。
EM算法就是一个求解GMM的算法,其过程如下:
- 通过隐藏变量寻找模型的ML参数估计值。
- 迭代爬山法
- 调整每次迭代中的参数估计值
- 这样的数据可能性每次迭代都会不断地增加
最后找到最优值。
隐藏变量
无法观察到的随机变量。在GMM计算最后的概率,取决于1、各个产生数据的混合组成部分产;2、各个部分的参数。而这个混合部分就是隐藏变量。
计算数据x的概率,需要计算在隐藏变量h的所有可能值下条件概率之和:
考虑高斯混合的概率分布
- h ⇔哪个组件生成样本
- P(h) = pj ; P(x |h) = N (µj , Σj )
如果确定每个xi的隐藏值,模型不再隐藏!例如,在GMM组件之间已经划分了数据。
因此,对于每个数据点xi,分配单个隐藏值hi。取hi = arg maxh P(h)P(xi |h),确定产生每个点的GMM组成部分分量。
在非隐藏模型中训练参数是非常容易的。我们通过更新P(h), P(x |h)中的参数。获得µj , Σj , pj的MLE。
所以,我们有以下可选的处理方式:
非常“硬”的处理方式:
对于每个xi,分配单个hi = arg maxh P(h, xi ),数量为和1。然后继续其他步骤。
比较“软”的处理方式:
对于每个xi,计算每个h的后验概率:
也称为"分数计数",我们得到每个组件的概率
由于硬处理方式直接分配hi,非常主观,显然是事可取的。所以我们选择软的处理方式。
EM算法步骤
1.以某种方式初始化参数值。
2.迭代
- 期望步骤:计算每个xi的h的后验概率:
- 最大化步骤:更新参数
假定非隐藏数据已经获得,而不是隐藏h的数据xi
本文主要讲解GMM,EM算法就不详细推导了,后面会专门发文讲解。