数据表示如下:
X X X:观测数据, X = { x 1 , x 2 , . . . , x N } X=\{x_1,x_2,...,x_N\} X={x1,x2,...,xN}
( X , Z ) (X,Z) (X,Z):complete data, ( X , Z ) = { ( x 1 , z 1 ) , ( x 2 , z 2 ) , . . . , ( x N , z N ) } (X,Z)=\{(x_1,z_1),(x_2,z_2),...,(x_N,z_N)\} (X,Z)={(x1,z1),(x2,z2),...,(xN,zN)}
θ \theta θ:参数, θ = { P 1 , . . . , P k , μ 1 , . . . , μ k , Σ 1 , . . . , Σ k } \theta=\{P_1,...,P_k,\mu_1,...,\mu_k,\Sigma_1,...,\Sigma_k\} θ={P1,...,Pk,μ1,...,μk,Σ1,...,Σk},其中 P k P_k Pk表示第k个高斯分布的权重/概率, μ k \mu_k μk表示第k个高斯分布的均值, Σ k \Sigma_k Σk表示第k个高斯分布的协方差矩阵
文章整体思路如下:
- 第一章从几何角度和混合模型角度两个角度,较为直观地介绍GMM,并介绍了GMM的概率图表示
- 第二章基于EM算法推导了GMM的三个参数 p j , μ j , Σ j p_j,\mu_j,\Sigma_j pj,μj,Σj 的更新公式,不过详细的求偏导的过程放在第五章附录中,采用微分法进行求导
- 第三章对GMM进行总结
一、GMM介绍
1.1 几何角度
我们首先从几何角度来看GMM,假设我们现有的数据分布如下图中的 X 所示,可以发现,仅仅使用一个高斯分布很难较好地描述这组数据的分布(任一蓝色曲线),因此,我们可以两个高斯分布进行加权平均得到一个新的分布(红色曲线),可以发现用这个新的分布去描述这组数据的分布是比较合适的,其中每个数据点都有一定的概率属于两个高斯分布中的一个。
这其实就是GMM了,即GMM只是若干个高斯分布的加权平均(上图中是两个高斯分布)而已,即:
P ( x ) = ∑ k = 1 K α k ⋅ N ( μ k , Σ K ) P(x)=\sum_{k=1}^K\alpha_k·N(\mu_k,\Sigma_K) P(x)=∑k=1Kαk⋅N(μk,ΣK), ∑ k = 1 K α k = 1 \sum_{k=1}^K\alpha_k=1 ∑k=1Kαk=1
1.2 混合模型角度
我们还可以从混合模型的角度来看GMM,如下图所示,两个蓝色的同心圆即表示两个高斯分布,与硬分类不同,我们每个数据点都有属于每个高斯分布的可能性,我们用概率去描述这个可能性,如下图中圈起来的 X 所示,它有 p 1 p_1 p1 的概率属于分布 c 1 c_1 c1,有 p 2 p_2 p2 的概率属于分布 $c_2 , 显 然 , ,显然, ,显然,p_1>p_2$:
设 x x x 表示观测数据; z z z 是我们引入的隐变量,用于表示对应的样本属于哪一个高斯分布。
在GMM中, Z Z Z 是离散型的随机变量。
Z | c 1 c_1 c1 | c 2 c_2 c2 | … | c N c_N cN |
---|---|---|---|---|
P | P 1 P_1 P1 | P 2 P_2 P2 | … | P N P_N PN |
引入隐变量
Z
Z
Z 后,有:
基于MLE估计最佳参数
θ
M
L
E
\theta_{MLE}
θMLE,有:
可以发现,无论从哪个角度看,GMM的表达式都是一样的:
- 几何角度: P ( x ) = ∑ k = 1 K α k ⋅ N ( μ k , Σ K ) P(x)=\sum_{k=1}^K\alpha_k·N(\mu_k,\Sigma_K) P(x)=∑k=1Kαk⋅N(μk,ΣK)
- 混合模型角度: P ( x ) = ∑ k = 1 K P k ⋅ N ( x ∣ μ k , Σ k ) P(x)=\sum_{k=1}^KP_k·N(x|\mu_k,\Sigma_k) P(x)=∑k=1KPk⋅N(x∣μk,Σk)
1.3 GMM的概率图
GMM是最简单的生成模型了,其生成过程分为两步:
- 决定当前样本 x i x_i xi 服从哪个高斯分布
- 从所选的高斯分布中进行抽样,生成 x i x_i xi
其概率图如下所示:
二、GMM的参数更新
在1.2通过MLE估计GMM的参数时,我们得到的结果是:
θ
M
L
E
=
arg
max
θ
∑
i
=
1
N
log
∑
k
=
1
K
P
k
⋅
N
(
x
∣
μ
k
,
Σ
k
)
\theta_{MLE}=\mathop{\arg\max}_{\theta}\sum_{i=1}^N\log\sum_{k=1}^KP_k·N(x|\mu_k,\Sigma_k)
θMLE=argmaxθi=1∑Nlogk=1∑KPk⋅N(x∣μk,Σk)
但是,由于对数里面带有连加符号,因此我们没办法通过直接令参数的导数为0,进而求得对应的参数估计值。
现在的问题是,我们引入了隐变量 Z Z Z,想要估计隐变量 Z Z Z,则必须用到参数 p k , μ k , Σ k p_k,\mu_k,\Sigma_k pk,μk,Σk;而想估计参数 p k , μ k , Σ k p_k,\mu_k,\Sigma_k pk,μk,Σk,又必须用到参数 Z Z Z。即我们面对的是先有鸡还是先有蛋的问题。通常面对这种带隐变量的参数估计问题,我们会使用EM算法的思想去解决。
2.1 EM求解GMM:E步
E步主要是计算 complete data 的对数联合概率 log P ( x , z ∣ θ ) \log P(x,z|\theta) logP(x,z∣θ) 在后验概率 P ( z ∣ x , θ t ) P(z|x,\theta^t) P(z∣x,θt) 分布下的期望,我们将期望记作 Q ( θ , θ t ) Q(\theta,\theta^t) Q(θ,θt),下面来化简这个期望值:
2.2 EM求解GMM:M步
M步的目标是通过令期望 Q ( θ , θ t ) Q(\theta,\theta^t) Q(θ,θt) 最大,从而随着迭代,逐渐找到最佳的估计参数 θ \theta θ,在GMM中,待估计的参数 θ \theta θ 包括 p k , μ k , Σ k p_k,\mu_k,\Sigma_k pk,μk,Σk,我们一个个来,注意求解 $p_k $ 的时候,是带有约束条件的:
2.2.1 求解 p j p_j pj
2.2.2 求解 μ j \mu_j μj
由于篇幅的原因,具体求导过程放在最后的附录:
2.2.3 求解 Σ j \Sigma_j Σj
由于篇幅的原因,具体求导过程放在最后的附录:
2.3 总结
至此,我们已经通过EM算法推导出了GMM参数的更新公式:
三、GMM总结
-
GMM克服了单个高斯分布描述能力不足的问题,采用多个高斯分布描述一组数据的分布:通过引入隐变量Z,描述某个样本点属于哪一个高斯分布。
-
引入隐变量后,参数估计问题变成了含隐变量的参数估计问题,采用EM算法求解。
四、参考资料
-
哔哩哔哩白板推导系列
五、附录
采用微分法求解标量/向量的导数