Gaussian Mixed Model 高斯混合模型
1.高斯分布
Figure 1:高斯分布
高斯分布(正态分布)是统计学常见的分布之一,它在自然界以及社会科学中被广泛使用。高斯分布是连续型的概率分布,其分布曲线呈现对称状。它具有很多重要的性质,其中最重要的是中心极限定理,它表明许多独立随机变量的均值将近似地服从高斯分布,即使这些变量本身不服从高斯分布。
对于一维数据
x
x
x,高斯分布的概率密度函数如Fig. 1:
P
(
x
∣
θ
)
=
N
(
x
;
μ
,
σ
2
)
=
1
2
π
σ
2
e
x
p
(
−
(
x
−
μ
)
2
2
σ
2
)
(1)
P(x|\theta)=\mathcal{N}(x;\mu,\sigma^2)=\frac1{\sqrt{2\pi\sigma^2}}exp(-\frac{(x-\mu)^2}{2\sigma^2}) \tag{1}
P(x∣θ)=N(x;μ,σ2)=2πσ21exp(−2σ2(x−μ)2)(1)
对于多维数据
x
∈
R
D
x\in \mathbb{R}^D
x∈RD ,高斯分布的概率密度函数如下:
P
(
x
∣
θ
)
=
1
(
2
π
)
D
2
∣
Σ
∣
1
2
e
x
p
(
−
(
x
−
μ
)
T
Σ
−
1
(
x
−
μ
)
2
)
(2)
P(x|\theta)=\frac1{(2\pi)^{\frac D2}|\Sigma|^{\frac12}}exp(-\frac{(x-\mu)^T\Sigma^{-1}(x-\mu)}2) \tag{2}
P(x∣θ)=(2π)2D∣Σ∣211exp(−2(x−μ)TΣ−1(x−μ))(2)
其中,
θ
\theta
θ 表示参数
μ
\mu
μ(均值)、
σ
\sigma
σ(标准差)等参数,
Σ
\Sigma
Σ 代表协方差。
2.高斯混合分布
Figure 2:高斯混合分布
如Fig. 2,高斯混合分布可以直观的理解为K个高斯分布混合得到的一种分布,且每个高斯分布被称为一个“分量”。每个分量由其自身的均值和协方差参数化。高斯混合模型的意义在于它能够灵活地拟合各种类型的数据分布,因为它可以由多个高斯分布组合而成。作为生成式模型,高斯混合模型可以拟合数据的分布,也可以根据分布生成新样本。这使得它在处理复杂的数据集时具有较好的表现。高斯混合模型也可以用于聚类任务,其中每个分量可以被视为一个聚类中心。
高斯混合分布的概率密度函数如下:
p
(
x
)
=
∑
i
=
1
K
π
i
N
(
x
∣
π
i
,
Σ
i
)
(3)
p(x)=\sum_{i=1}^K\pi_i\mathcal{N}(x\mid\pi_i,\Sigma_i) \tag{3}
p(x)=i=1∑KπiN(x∣πi,Σi)(3)
其中,
K
K
K 代表高斯分量的数量,
μ
i
,
Σ
i
\mu_i,\Sigma_i
μi,Σi 代表每一个高斯分量的均值与协方差,
π
i
\pi_i
πi 代表每一个高斯分量的权重系数,且满足
∑
i
=
1
K
π
i
=
1
\sum_{i=1}^K\pi_i=1
∑i=1Kπi=1 。
高斯混合分布根据权重进行抽样,通常是根据各个高斯分量的权重来确定选择哪个分量作为抽样数据的分布。权重越大的高斯分量被选择的概率越高,这确保样本更有可能来自于权重较大的高斯分量,从而符合整体混合模型的分布特点。
3.模型参数学习
确定一个高斯混合分布,即确定分布所需的参数(均值,方差,权重系数等),那么如何获取所需参数是得到确切分布的关键性问题。我们通过数量为 N N N 的可观测样本 x x x 来估计的 K K K 个分量的高斯混合模型的参数: π \pi π、 μ , Σ → θ \mu,\Sigma \to\theta μ,Σ→θ ,在确定了模型参数后,我们就得到了高斯混合模型的概率密度函数。
我们使用最大化似然估计来估计模型所需参数:
L
(
θ
)
=
P
(
x
1
:
N
∣
θ
)
=
∏
j
=
1
N
P
(
x
j
∣
θ
)
(4)
L(\theta)=P(x_{1:N}|\theta)=\prod_{j=1}^NP(x_j|\theta) \tag{4}
L(θ)=P(x1:N∣θ)=j=1∏NP(xj∣θ)(4)
我们用联合概率密度作为似然函数,最大化似然函数就是最大化样本的联合概率密度,约束样本在高密度区域。取似然函数最大时的模型参数来塑造出高斯混合模型:
θ
=
argmax
θ
L
(
θ
)
(5)
\theta=\underset{\theta}{\operatorname*{argmax}}L(\theta) \tag{5}
θ=θargmaxL(θ)(5)
我们用对数似然的方式进行计算。因为log函数是单调递增的,y的变化会和x的变化保持一致,同时log运算可以将乘法转换成加法,将乘法式子变成叠加的形式,方便对每一项单独分析。所以取
L
(
θ
)
L(\theta)
L(θ) 的最大值就等价于取
log
[
L
(
θ
)
]
\log[L(\theta)]
log[L(θ)] 的最大值:
θ
=
argmax
θ
L
(
θ
)
=
argmax
θ
log
[
L
(
θ
)
]
(6)
\theta=\underset{\theta}{\operatorname*{argmax}}L(\theta)=\underset{\theta}{\operatorname*{argmax}}\log{[L(\theta)]} \tag{6}
θ=θargmaxL(θ)=θargmaxlog[L(θ)](6)
根据 Eq.(4),
l
o
g
L
(
θ
)
logL(\theta)
logL(θ) 可等价于:
l
o
g
L
(
θ
)
=
∑
j
=
1
N
l
o
g
P
(
x
j
∣
θ
)
=
∑
j
=
1
N
l
o
g
(
∑
k
=
1
K
π
k
ϕ
(
x
i
∣
θ
k
)
)
(7)
logL(\theta)=\sum_{j=1}^NlogP(x_j|\theta)=\sum_{j=1}^Nlog(\sum_{k=1}^K\pi_k\phi(x_i|\theta_k)) \tag{7}
logL(θ)=j=1∑NlogP(xj∣θ)=j=1∑Nlog(k=1∑Kπkϕ(xi∣θk))(7)
其中,
ϕ
(
⋅
)
\phi(\cdot)
ϕ(⋅) 代表高斯分量,
ϕ
(
x
i
∣
θ
k
)
=
N
(
x
i
∣
μ
k
,
Σ
k
)
\phi(x_i|\theta_k)=\mathcal{N}(x_i|\mu_k,\boldsymbol{\Sigma}_k)
ϕ(xi∣θk)=N(xi∣μk,Σk) 表示
x
i
x_i
xi 服从的概率密度函数。对于每一个分量都有未知的参数(隐变量)
π
k
,
μ
k
,
Σ
k
\pi_k,\mu_k,\Sigma_k
πk,μk,Σk 存在(在优化过程中
π
k
\pi_k
πk 与
μ
k
,
Σ
k
\mu_k,\Sigma_k
μk,Σk 之间会相互影响),使得似然函数的形式变得非常复杂,无法直接求偏导计算,无法直接求得解析解。我们不知道哪个数据来自于哪个高斯,也不知道每个高斯的的均值和方差。这个问题就需要引入EM算法了。
EM算法主要用于解决含有隐变量的概率估计问题。主要流程就是先构造一个数学期望(E-step),然后再次期望的基础上使得概率变得最大(M-step)。在 Eq.(7) 求解参数的过程中,首先随机初始化构造 π \pi π 的数学期望,在此基础上我们最大化 l o g L ( θ ) logL(\theta) logL(θ) 进行估计 μ , Σ \mu,\Sigma μ,Σ ,再用估计出来的 μ , Σ \mu,\Sigma μ,Σ 带入模型继续估计 π \pi π,通过EM循环往复不断地迭代,最终确定参数 π , μ , Σ \pi,\mu,\Sigma π,μ,Σ。
E-step:初始化参数,并依据当前参数,我们计算数据
x
j
x_j
xj 来自第
k
k
k 个分量的可能性:
γ
j
k
=
π
k
ϕ
(
x
j
∣
θ
k
)
∑
k
=
1
K
π
k
ϕ
(
x
j
∣
θ
k
)
,
j
=
1
,
2
,
…
,
N
;
k
=
1
,
2
,
…
,
K
(8)
\gamma_{jk}=\frac{\pi_k\phi(x_j|\theta_k)}{\sum_{k=1}^K\pi_k\phi(x_j|\theta_k)},j=1,2,\ldots,N;k=1,2,\ldots,K \tag{8}
γjk=∑k=1Kπkϕ(xj∣θk)πkϕ(xj∣θk),j=1,2,…,N;k=1,2,…,K(8)
M-step:利用计算得到的
γ
j
k
\gamma_{jk}
γjk 更新以下参数:
μ
k
=
∑
j
N
(
γ
j
k
x
j
)
∑
j
N
γ
j
k
,
k
=
1
,
2
,
…
,
K
(9)
\mu_k=\frac{\sum_j^N\left(\gamma_{jk}x_j\right)}{\sum_j^N\gamma_{jk}},k=1,2,\ldots,K \tag{9}
μk=∑jNγjk∑jN(γjkxj),k=1,2,…,K(9)
利用 Eq.(9) 得到的
μ
k
\mu_k
μk 更新下式:
Σ
k
=
∑
j
N
γ
j
k
(
x
j
−
μ
k
)
(
x
j
−
μ
k
)
T
∑
j
N
γ
j
k
,
k
=
1
,
2
,
…
,
K
(10)
\Sigma_k=\frac{\sum_j^N\gamma_{jk}(x_j-\mu_k)(x_j-\mu_k)^T}{\sum_j^N\gamma_{jk}},k=1,2,\ldots,K \tag{10}
Σk=∑jNγjk∑jNγjk(xj−μk)(xj−μk)T,k=1,2,…,K(10)
π k = ∑ j = 1 N γ j k N , k = 1 , 2 , … , K (11) \pi_k=\frac{\sum_{j=1}^N\gamma_{jk}}{N},k=1,2,\ldots,K \tag{11} πk=N∑j=1Nγjk,k=1,2,…,K(11)
通过不断循环EM过程,直到计算至收敛 ∣ ∣ θ i + 1 − θ i ∣ ∣ < ε ||\theta_{i+1}-\theta_i||<\varepsilon ∣∣θi+1−θi∣∣<ε , ε \varepsilon ε 代表一个很小的数。由此,我们确定了高斯混合模型所需的全部参数。需要注意的是,EM 算法具备收敛性,但并不保证找到全局最大值,有可能找到局部最大值。解决方法是初始化几次不同的参数进行迭代,取结果最好的那次。