一文读懂高斯混合模型
一文读懂高斯混合模型
概述
高斯混合模型(Gaussian Mixture Model,GMM)是一种用于表示数据分布的概率模型。它假设数据集中的数据点是从多个高斯分布中独立采样得到的,每个高斯分布代表一个簇或类别。
高斯混合模型(GMM)在多个领域和应用中都有广泛的用途,以下是一些主要的应用场景:
- 聚类分析:GMM 可以用于数据的无监督聚类,能够处理形状不规则的簇。与 k-means 方法不同,GMM允许每个数据点属于多个簇,并给出相应的概率(这也称为soft clustering)。
- 密度估计:GMM可以用于非参数密度估计,帮助建模复杂的数据分布,尤其是在数据分布不明确或复杂时。它能够更好地捕捉数据的多模态特征。
- 图像处理:在图像分割中,GMM 可用于区分不同区域或对象。通过对图像的颜色或像素值建模,可以实现对图像中物体的识别和提取。
- 模式识别:GMM 可以用于图像、手写字符、面部识别等模式识别任务。通过对不同类别的数据分布建模,GMM 可以提高识别的准确性。
高斯分布采样
高斯分布,也就是正常所说的正态分布,是一种常见的概率分布,通常用来描述自然界中许多现象的随机性。高斯分布的概率密度函数为:
f
(
x
)
=
1
2
π
σ
e
−
(
x
−
μ
)
2
2
σ
2
f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}}
f(x)=2πσ1e−2σ2(x−μ)2
高斯分布的采样过程就是从一个高斯分布中采样一个数据点
高斯混合模型
假设我们有 K个高斯分布,每个分布有自己的均值和协方差矩阵。这些分布共同组成了一个混合模型,这就是高斯混合模型。
每个高斯分布有三个重要参数:
- 均值向量(mean vector):表示分布的中心位置。
- 协方差矩阵(covariance matrix):表示分布的形状和方向。
- 权重(weight):表示该分布在总体中的比例或重要性。
GMM 的整体概率密度函数是各高斯分布的加权和。对于任意数据点 x,它的概率可以用所有高斯分布的概率密度值加权求和得到:
EM算法(划重点)
接下来我们介绍高斯混合模型中最为重要的参数估计算法:期望最大化算法(EM算法)!
给定一个数据集 {
x
1
,
x
2
,
…
,
x
n
x_1, x_2, …, x_n
x1,x2,…,xn},假设数据来自 K个不同的高斯分布。我们希望找到每个高斯分布的均值、协方差和混合系数,使得模型生成该数据集的概率最大。
也就是说,要得到下面这三个参数:
- 均值向量:{ μ k μ_k μk},每个高斯分布的中心。
- 协方差矩阵:{ ∑ k \sum_k ∑k},每个高斯分布的形状。
- 混合系数:{ π k π_k πk},每个高斯分布的权重,满足 ∑ π k = 1 \sum\pi_k=1 ∑πk=1
不难得出,整个数据集的似然函数是所有数据点概率的乘积:
直接最大化这个似然函数比较困难,因为它是多个分布的加和。为了解决这个问题,我们引入期望最大化 (Expectation-Maximization, EM) 算法。
初始步骤
- 随机初始化{ μ k μ_k μk}、{ ∑ k \sum_k ∑k}、{ π k π_k πk}
- 计算初始似然的估计值
E 步骤(期望步骤)
在此步骤中,我们计算每个数据点属于第k个高斯分布的概率,表示为
γ
i
k
\gamma_{ik}
γik:
γ
i
k
=
π
k
⋅
N
(
x
i
∣
μ
k
,
Σ
k
)
∑
j
=
1
K
π
j
⋅
N
(
x
i
∣
μ
j
,
Σ
j
)
\gamma_{i k}=\frac{\pi_{k} \cdot \mathcal{N}\left(x_{i} \mid \mu_{k}, \Sigma_{k}\right)}{\sum_{j=1}^{K} \pi_{j} \cdot \mathcal{N}\left(x_{i} \mid \mu_{j}, \Sigma_{j}\right)}
γik=∑j=1Kπj⋅N(xi∣μj,Σj)πk⋅N(xi∣μk,Σk)
这里,
γ
i
k
\gamma_{ik}
γik 表示数据点在给定参数
x
i
x_i
xi的情况下由第k个高斯分布生成的概率。这些
γ
i
k
\gamma_{ik}
γik值用于对每个数据点的分配进行软分配,即每个数据点属于各高斯分布的概率。
M步骤(最大化步骤)
在 M 步骤中,我们使用 E步骤计算得到的责任值来更新模型参数。具体更新公式如下
- 更新混合系数
π
k
\pi_k
πk:
π k = 1 n ∑ i = 1 n γ i k \pi_k=\frac{1}{n}\sum\limits_{i=1}^{n}\gamma_{ik} πk=n1i=1∑nγik
这里, π k \pi_k πk是第k个高斯分布的权重,表示在所有数据中属于第k个分布的平均概率。 - 更新均值
μ
k
\mu_k
μk:
μ k = ∑ i = 1 n γ i k x i ∑ i = 1 n γ i k \mu_{k}=\frac{\sum_{i=1}^{n} \gamma_{i k} x_{i}}{\sum_{i=1}^{n} \gamma_{i k}} μk=∑i=1nγik∑i=1nγikxi
新的 μ k \mu_k μk 是各数据点在第K个分布下的加权均值,权重为每个点的责任值 γ i k \gamma_{ik} γik。 - 更新协方差矩阵
∑
k
\sum_k
∑k
Σ k = ∑ i = 1 n γ i k ( x i − μ k ) ( x i − μ k ) T ∑ i = 1 n γ i k \Sigma_{k}=\frac{\sum_{i=1}^{n} \gamma_{i k}\left(x_{i}-\mu_{k}\right)\left(x_{i}-\mu_{k}\right)^{T}}{\sum_{i=1}^{n} \gamma_{i k}} Σk=∑i=1nγik∑i=1nγik(xi−μk)(xi−μk)T
协方差矩阵 ∑ k \sum_k ∑k是各数据点与均值偏差的加权和,权重为每个点的责任值 γ i k \gamma_{ik} γik
计算对数似然
在每次的EM步骤之后,计算在当前参数下的对数似然:
ln
L
(
θ
)
=
∑
i
=
1
n
ln
(
∑
k
=
1
K
π
k
⋅
N
(
x
i
∣
μ
k
,
Σ
k
)
)
\ln L(\theta)=\sum_{i=1}^{n} \ln \left(\sum_{k=1}^{K} \pi_{k} \cdot \mathcal{N}\left(x_{i} \mid \mu_{k}, \Sigma_{k}\right)\right)
lnL(θ)=i=1∑nln(k=1∑Kπk⋅N(xi∣μk,Σk))
然后判断似然函数的变化量是否小于预设的阈值,如果小于阈值,则判断为收敛,算法停止;否则继续执行E和M步骤。
介绍完了EM算法,我们再来介绍一下高斯分布在扩散模型的应用
高斯分布在扩散模型的应用
基础知识
首先复习一下正态分布的概率密度函数:
下面是关于d维正态分布的概率密度函数:
如果 x是一个 d维随机变量,服从多元正态分布,其均值为
μ
\mu
μ,协方差矩阵为
β
I
\beta I
βI(其中
I
I
I 是 d-维单位矩阵),那么其概率密度函数可以写为:
接下来再来复习一下两个正态分布变量相加的有关结论:
还有关于马尔科夫链的知识:
马尔可夫链(Markov Chain)是概率论中的一种随机过程,用来描述一个系统在离散时间点上的状态转移。它的核心特点是无后效性:系统在某一时刻的状态只依赖于前一时刻的状态,而与更早时刻的状态无关。
接下来要上正文了!
高斯分布在扩散模型的应用
我们可以通过逐步添加高斯噪声来将数据逐渐“扩散”到随机噪声,然后再通过逆过程从噪声中恢复原始数据,这正是扩散模型的工作原理。
更形象的来看:
前向过程 (Forward Process)
逆向过程 (Reverse Process)
经过推导, t时刻的数据可以直接表达为初始数据
x
0
x_0
x0 和噪声
ϵ
\epsilon
ϵ 的线性组合:
其中
ϵ
∼
N
(
0
,
I
)
ϵ∼N(0, I)
ϵ∼N(0,I)是标准正态噪声
总结
在扩散模型(Diffusion Models)中,高斯分布扮演着至关重要的角色。这些模型使用一系列逐步添加噪声的过程来将数据逐渐“扩散”到随机噪声,然后再通过逆过程从噪声中恢复原始数据。高斯分布在这一过程中有以下几方面的重要作用:
- 噪声的引入:
在前向扩散过程中,高斯分布用于逐步向数据添加噪声。每次迭代时,当前状态的数据点
X t X_t Xt会根据一个高斯分布 q ( x t + 1 ∣ x t ) q\left(\mathbf{x}_{t+1} \mid \mathbf{x}_{t}\right) q(xt+1∣xt)被转换为更噪的状态 X t + 1 X_{t+1} Xt+1。这有助于创建一个平滑且连续的从原始数据到纯噪声的转换路径。 - 可逆性:
使用高斯分布作为噪声的来源,确保了该过程是可逆的。这意味着不仅可以通过前向过程添加噪声,还可以设计出一个逆过程,通过训练一个神经网络来估计每个时间步的噪声,并尝试逆转这个过程以生成新的样本。 - 数学上的便利性:
高斯分布具有一系列优良的数学性质,例如其概率密度函数的形式简单、易于计算,以及与线性变换的良好兼容性。这些特性使得它非常适合用于构建和分析扩散模型。 - 稳定性和数值性能:
在实际应用中,使用高斯分布可以提高数值稳定性,因为它们具有有限的方差并且不会产生极端值。这对于确保模型训练过程中的稳定性和效率非常重要。 - 理论支持:
理论上,随着时间步数 T 的增加,扩散过程最终会使任何初始数据分布接近于标准正态分布(即高斯分布)。这种性质由中心极限定理所保证,从而提供了坚实的理论基础。
综上所述,高斯分布在扩散模型中不仅是噪声添加机制的核心组成部分,而且也是实现模型强大生成能力和良好性能的关键因素之一。通过精心设计的前向和逆向过程,扩散模型可以在保持灵活性的同时提供高效的样本生成方法。