当前位置: 首页 > article >正文

一文读懂高斯混合模型

一文读懂高斯混合模型

概述

高斯混合模型(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π σ1e2σ2(xμ)2

高斯分布的采样过程就是从一个高斯分布中采样一个数据点

高斯混合模型

假设我们有 K个高斯分布,每个分布有自己的均值和协方差矩阵。这些分布共同组成了一个混合模型,这就是高斯混合模型。
在这里插入图片描述

每个高斯分布有三个重要参数:

  1. 均值向量(mean vector):表示分布的中心位置。
  2. 协方差矩阵(covariance matrix):表示分布的形状和方向。
  3. 权重(weight):表示该分布在总体中的比例或重要性。

GMM 的整体概率密度函数是各高斯分布的加权和。对于任意数据点 x,它的概率可以用所有高斯分布的概率密度值加权求和得到:
在这里插入图片描述

EM算法(划重点)

接下来我们介绍高斯混合模型中最为重要的参数估计算法:期望最大化算法(EM算法)!
给定一个数据集 { x 1 , x 2 , … , x n x_1, x_2, …, x_n x1,x2,,xn},假设数据来自 K个不同的高斯分布。我们希望找到每个高斯分布的均值、协方差和混合系数,使得模型生成该数据集的概率最大。
也就是说,要得到下面这三个参数:

  1. 均值向量:{ μ k μ_k μk},每个高斯分布的中心。
  2. 协方差矩阵:{ ∑ k \sum_k k​},每个高斯分布的形状。
  3. 混合系数:{ π k π_k πk​},每个高斯分布的权重,满足 ∑ π k = 1 \sum\pi_k=1 πk=1

不难得出,整个数据集的似然函数是所有数据点概率的乘积:
在这里插入图片描述
直接最大化这个似然函数比较困难,因为它是多个分布的加和。为了解决这个问题,我们引入期望最大化 (Expectation-Maximization, EM) 算法。

初始步骤

  1. 随机初始化{ μ k μ_k μk}、{ ∑ k \sum_k k​}、{ π k π_k πk​}
  2. 计算初始似然的估计值

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πjN(xiμj,Σj)πkN(xiμk,Σk)
这里, γ i k \gamma_{ik} γik 表示数据点在给定参数 x i x_i xi的情况下由第k个高斯分布生成的概率。这些 γ i k \gamma_{ik} γik值用于对每个数据点的分配进行软分配,即每个数据点属于各高斯分布的概率。

M步骤(最大化步骤)

在 M 步骤中,我们使用 E步骤计算得到的责任值来更新模型参数。具体更新公式如下

  1. 更新混合系数 π 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=1nγik
    这里, π k \pi_k πk是第k个高斯分布的权重,表示在所有数据中属于第k个分布的平均概率。
  2. 更新均值 μ 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γiki=1nγikxi
    新的 μ k \mu_k μk 是各数据点在第K个分布下的加权均值,权重为每个点的责任值 γ i k \gamma_{ik} γik
  3. 更新协方差矩阵 ∑ 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γiki=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=1nln(k=1KπkN(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)中,高斯分布扮演着至关重要的角色。这些模型使用一系列逐步添加噪声的过程来将数据逐渐“扩散”到随机噪声,然后再通过逆过程从噪声中恢复原始数据。高斯分布在这一过程中有以下几方面的重要作用:

  1. 噪声的引入:
    在前向扩散过程中,高斯分布用于逐步向数据添加噪声。每次迭代时,当前状态的数据点
    X t X_t Xt会根据一个高斯分布 q ( x t + 1 ∣ x t ) q\left(\mathbf{x}_{t+1} \mid \mathbf{x}_{t}\right) q(xt+1xt)被转换为更噪的状态 X t + 1 X_{t+1} Xt+1。这有助于创建一个平滑且连续的从原始数据到纯噪声的转换路径。
  2. 可逆性:
    使用高斯分布作为噪声的来源,确保了该过程是可逆的。这意味着不仅可以通过前向过程添加噪声,还可以设计出一个逆过程,通过训练一个神经网络来估计每个时间步的噪声,并尝试逆转这个过程以生成新的样本。
  3. 数学上的便利性:
    高斯分布具有一系列优良的数学性质,例如其概率密度函数的形式简单、易于计算,以及与线性变换的良好兼容性。这些特性使得它非常适合用于构建和分析扩散模型。
  4. 稳定性和数值性能:
    在实际应用中,使用高斯分布可以提高数值稳定性,因为它们具有有限的方差并且不会产生极端值。这对于确保模型训练过程中的稳定性和效率非常重要。
  5. 理论支持:
    理论上,随着时间步数 T 的增加,扩散过程最终会使任何初始数据分布接近于标准正态分布(即高斯分布)。这种性质由中心极限定理所保证,从而提供了坚实的理论基础。

综上所述,高斯分布在扩散模型中不仅是噪声添加机制的核心组成部分,而且也是实现模型强大生成能力和良好性能的关键因素之一。通过精心设计的前向和逆向过程,扩散模型可以在保持灵活性的同时提供高效的样本生成方法。


http://www.kler.cn/a/457537.html

相关文章:

  • c++ 17 里新出现的修饰符 [ [ maybe_unused ] ]
  • [Leetcode] 最大子数组和 [击败99%的解法]
  • 向bash shell脚本传参
  • 基于Vue+SSM+SpringCloudAlibaba书籍管理系统
  • 十六、流编辑器sed(stream editor)
  • 【超级详细】七牛云配置阿里云域名详细过程记录
  • Tomcat(103)Tomcat的连接器故障排除
  • 嵌入式入门Day35
  • WSL2桥接模式配置(可与外部设备互ping)
  • workman服务端开发模式-应用开发-vue-element-admin封装websocket
  • 139.《python中的正则详解》
  • 解决编译Wireshark4.4.2源码失败的问题
  • Java8-Function的使用之读取文件
  • 【Linux基础】进程(上) —— 概念、状态、优先级与环境变量
  • 前端Python应用指南(六)构建RESTful API:使用Flask和Django实现用户认证与授权
  • 使用Quick 录屏为视频生成二维码
  • 企业人工智能平台 (AIaaP) 的全面解读
  • orm01
  • 深度学习:基于MindSpore NLP的数据并行训练
  • 玩转树莓派Pico(20): 迷你气象站6——软件整合改进