【有啥问啥】多维高斯分布(Multivariate Gaussian Distribution,MGD)的采样过程是什么样的?
多维高斯分布是一个nnn维随机向量x∈Rnx∈Rnpx12πn2∣Σ∣12exp−12x−μ⊤Σ−1x−μpx2πn/2∣Σ∣1/21exp−21x−μ⊤Σ−1x−μμ∈Rnμ∈Rn是均值向量。Σ∈Rn×nΣ∈Rn×n是协方差矩阵,且为对称正定矩阵。∣Σ∣|\Sigma|∣Σ∣是协方差矩阵的行列式。Σ−1Σ−1。
多维高斯分布(Multivariate Gaussian Distribution,MGD)的采样过程是什么样的?
在机器学习、统计学和信号处理等领域,多维高斯分布(Multivariate Gaussian Distribution)是一个非常重要的概念。多维高斯分布不仅仅是高斯分布在高维空间的推广,它在处理具有相关性的多变量数据时表现得尤为出色。本文将详细介绍多维高斯分布的采样过程,帮助大家理解如何从多维高斯分布中生成样本。
一、多维高斯分布的定义
多维高斯分布是一个 n n n 维随机向量 x ∈ R n \mathbf{x} \in \mathbb{R}^n x∈Rn 的概率分布,其概率密度函数 (PDF) 定义如下:
p ( x ) = 1 ( 2 π ) n / 2 ∣ Σ ∣ 1 / 2 exp ( − 1 2 ( x − μ ) ⊤ Σ − 1 ( x − μ ) ) p(\mathbf{x}) = \frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2}} \exp\left(-\frac{1}{2}(\mathbf{x} - \boldsymbol{\mu})^\top \Sigma^{-1} (\mathbf{x} - \boldsymbol{\mu})\right) p(x)=(2π)n/2∣Σ∣1/21exp(−21(x−μ)⊤Σ−1(x−μ))
其中:
- μ ∈ R n \boldsymbol{\mu} \in \mathbb{R}^n μ∈Rn 是均值向量。
- Σ ∈ R n × n \Sigma \in \mathbb{R}^{n \times n} Σ∈Rn×n 是协方差矩阵,且为对称正定矩阵。
- ∣ Σ ∣ |\Sigma| ∣Σ∣ 是协方差矩阵的行列式。
- Σ − 1 \Sigma^{-1} Σ−1 是协方差矩阵的逆矩阵。
多维高斯分布在数据中的作用是非常广泛的,例如在图像处理中的噪声模型、聚类分析中的分布假设等。
二、从多维高斯分布采样的步骤
采样是指从一个给定的概率分布中生成符合该分布的随机样本。对于多维高斯分布,采样过程可以分为以下几个步骤:
1. 生成标准正态分布的样本
首先,从标准正态分布(即均值为0,方差为1的高斯分布)中生成 n n n 维样本 z ∼ N ( 0 , I ) \mathbf{z} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) z∼N(0,I)。 这里的 I \mathbf{I} I 是 n × n n \times n n×n 的单位矩阵。
在代码实现中,常用的做法是直接调用随机数生成库。例如,使用 numpy
库的 numpy.random.randn(n)
函数即可生成一个
n
n
n 维标准正态分布的样本。
2. 进行线性变换
生成的标准正态分布样本 z \mathbf{z} z 需要经过一个线性变换,以使其符合给定的多维高斯分布。这个线性变换由协方差矩阵 Σ \Sigma Σ 的 Cholesky 分解决定。
Cholesky 分解将协方差矩阵 Σ \Sigma Σ 分解为一个下三角矩阵 L \mathbf{L} L,满足 Σ = L L ⊤ \Sigma = \mathbf{L}\mathbf{L}^\top Σ=LL⊤。接着,通过如下线性变换生成目标分布的样本:
x = μ + L z \mathbf{x} = \boldsymbol{\mu} + \mathbf{L}\mathbf{z} x=μ+Lz
其中 L z \mathbf{L}\mathbf{z} Lz 的含义是将原始的标准正态分布样本 z \mathbf{z} z 进行伸缩和平移,以使得样本的协方差结构与目标分布的协方差矩阵 Σ \Sigma Σ 一致。
- Cholesky分解:Cholesky分解是一种将对称正定矩阵分解为一个下三角矩阵和其转置乘积的方法。在多维高斯分布的采样中,Cholesky分解被用来将协方差矩阵 Σ \Sigma Σ分解为一个下三角矩阵 L \mathbf{L} L,使得 Σ = L L ⊤ \Sigma = \mathbf{L}\mathbf{L}^\top Σ=LL⊤。这样,我们就可以通过 L z \mathbf{L}\mathbf{z} Lz将标准正态分布的样本 z \mathbf{z} z变换为符合目标协方差结构的样本。
3. 实现
以下是使用 Python 代码实现从多维高斯分布中采样的完整过程:
import numpy as np
def sample_multivariate_gaussian(mu, Sigma, num_samples=1):
# Cholesky分解
L = np.linalg.cholesky(Sigma)
# 生成标准正态分布的样本
z = np.random.randn(len(mu), num_samples)
# 进行线性变换
samples = mu[:, np.newaxis] + L @ z
return samples.T
# 示例
mu = np.array([0, 0])
Sigma = np.array([[1, 0.8], [0.8, 1]])
samples = sample_multivariate_gaussian(mu, Sigma, 1000)
4. 举个栗子
假设我们需要从一个二维高斯分布中采样,该分布的均值向量为 μ = [ 1 , 2 ] \boldsymbol{\mu} = [1, 2] μ=[1,2],协方差矩阵为:
Σ = ( 1 0.5 0.5 2 ) \Sigma = \begin{pmatrix} 1 & 0.5 \\ 0.5 & 2 \end{pmatrix} Σ=(10.50.52)
我们可以按照上面的步骤进行采样:
-
生成标准正态分布样本:首先,我们生成一个二维标准正态分布的样本 z ∼ N ( 0 , I ) \mathbf{z} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) z∼N(0,I)。假设我们生成的样本为 z = [ 0.3 , − 0.2 ] \mathbf{z} = [0.3, -0.2] z=[0.3,−0.2]。
-
进行线性变换:接下来,我们对 z \mathbf{z} z 进行线性变换。首先对协方差矩阵 Σ \Sigma Σ 进行 Cholesky 分解:
Σ = ( 1 0.5 0.5 2 ) = L L ⊤ \Sigma = \begin{pmatrix} 1 & 0.5 \\ 0.5 & 2 \end{pmatrix} = \mathbf{L}\mathbf{L}^\top Σ=(10.50.52)=LL⊤
经过计算,得到下三角矩阵 L \mathbf{L} L 为:
L = ( 1 0 0.5 1.322 ) \mathbf{L} = \begin{pmatrix} 1 & 0 \\ 0.5 & 1.322 \end{pmatrix} L=(10.501.322)
然后,计算 L z \mathbf{L}\mathbf{z} Lz:
L z = ( 1 0 0.5 1.322 ) ( 0.3 − 0.2 ) = ( 0.3 − 0.0344 ) \mathbf{L}\mathbf{z} = \begin{pmatrix} 1 & 0 \\ 0.5 & 1.322 \end{pmatrix} \begin{pmatrix} 0.3 \\ -0.2 \end{pmatrix} = \begin{pmatrix} 0.3 \\ -0.0344 \end{pmatrix} Lz=(10.501.322)(0.3−0.2)=(0.3−0.0344)
最后,加上均值向量 μ \boldsymbol{\mu} μ,得到最终样本 x \mathbf{x} x:
x = μ + L z = ( 1 2 ) + ( 0.3 − 0.0344 ) = ( 1.3 1.9656 ) \mathbf{x} = \boldsymbol{\mu} + \mathbf{L}\mathbf{z} = \begin{pmatrix} 1 \\ 2 \end{pmatrix} + \begin{pmatrix} 0.3 \\ -0.0344 \end{pmatrix} = \begin{pmatrix} 1.3 \\ 1.9656 \end{pmatrix} x=μ+Lz=(12)+(0.3−0.0344)=(1.31.9656)
因此,最终的采样结果为 x = [ 1.3 , 1.9656 ] \mathbf{x} = [1.3, 1.9656] x=[1.3,1.9656]。
通过这个具体的例子,我们可以更直观地理解从多维高斯分布中采样的整个过程。
三、直观理解
从几何角度来看,标准正态分布 z \mathbf{z} z 是单位圆内的均匀分布。而线性变换 L z \mathbf{L}\mathbf{z} Lz 将这个单位圆拉伸、旋转为具有目标协方差结构的椭圆,从而生成符合多维高斯分布的样本。
这个过程的核心在于如何使用 Cholesky 分解对标准正态分布样本进行适当的变换,以得到具有指定均值和协方差的样本。这也解释了为什么多维高斯分布能够很好地描述具有相关性的数据:通过协方差矩阵,我们可以精确控制数据在不同维度上的相关性。
四、应用场景
多维高斯分布的采样在许多领域中都有广泛的应用。例如:
-
贝叶斯推断:在贝叶斯推断中,多维高斯分布通常用于描述后验分布。通过采样,可以近似后验分布的各种统计量。
- 传送门链接: 深入理解贝叶斯推理:从先验概率到后验概率
-
卡尔曼滤波:卡尔曼滤波算法中,状态和观测误差通常假设为多维高斯分布,通过采样来预测和更新状态。
-
高斯混合模型 (GMM):GMM 是一种常见的聚类模型,其中每个聚类中心用一个多维高斯分布表示,通过采样可以生成仿真的数据点来评估模型性能。
五、总结
从多维高斯分布采样是一个非常重要的操作,其核心思想是通过线性变换将标准正态分布的样本映射到具有指定均值和协方差的目标分布上。这个过程不仅在理论上有着深厚的数学基础,在实际应用中也具有广泛的用途。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)