本文主要转载了关于多元高斯分布概率密度函数的推导过程,并画出了二维高斯分布的图像,以便得到更直观的理解。
在知乎上看到两篇文章,分别是
多元高斯分布完全解析 , 记为 文章一 , 从零开始推导多元高斯分布 ,记为 文章二
文章一的流程大致为
给出一维高斯分布及其概率密度函数, X ∼ N ( μ , σ 2 ) X \sim \mathcal{N}(\mu, \sigma^2) X ∼ N ( μ , σ 2 )
对随机变量 X X X 进行标准化,用 Z = X − μ σ Z=\frac{X-\mu}{\sigma} Z = σ X − μ 进行换元,得到的随机变量 Z Z Z 服从一元标准高斯分布,即 Z ∼ N ( 0 , 1 ) Z \sim \mathcal{N}(0,1) Z ∼ N ( 0 , 1 )
随机变量 X X X 标准化的过程, 实际上的消除量纲影响和分布差异的过程. 通过将随机变量的值减去其均值再除以标准差, 使得随机变量与其均值的差距可以用若干个标准差来衡量, 从而实现了不同随机变量与其对应均值的差距, 可以以一种相对的距离来进行比较.
将一元高斯分布和多元高斯分布联系起来。如果随机向量 Z ⃗ = [ Z 1 , ⋯ , Z n ] T \vec{Z}=[Z_1,\cdots, Z_n]^T Z = [ Z 1 , ⋯ , Z n ] T 中每个随机变量 Z i Z_i Z i 都服从标准高斯分布且两两彼此独立,则随机向量 Z ⃗ = [ Z 1 , ⋯ , Z n ] T \vec{Z}=[Z_1,\cdots, Z_n]^T Z = [ Z 1 , ⋯ , Z n ] T 的联合概率密度函数为 p ( z 1 , ⋯ , z n ) = p ( z 1 ) ⋯ p ( z n ) p(z_1,\cdots,z_n) = p(z_1)\cdots p(z_n) p ( z 1 , ⋯ , z n ) = p ( z 1 ) ⋯ p ( z n ) ,称之为 Z ⃗ ∼ N ( 0 ⃗ , I ) \vec{Z} \sim \mathcal{N}(\vec{0}, \boldsymbol{I}) Z ∼ N ( 0 , I ) . 即随机向量服从均值为零向量, 协方差矩阵为单位矩阵的高斯分布。
对于普通的随机向量 X ⃗ ∼ N ( μ ⃗ , Σ ) \vec{X} \sim \mathcal{N}(\vec{\mu}, \Sigma) X ∼ N ( μ , Σ ) , 即其每个随机变量 X i ∼ N ( μ i , σ i 2 ) ( i = 1 , ⋯ , n ) X_i \sim \mathcal{N}(\mu_i, \sigma^2_i)(i=1,\cdots,n) X i ∼ N ( μ i , σ i 2 ) ( i = 1 , ⋯ , n ) 且 X i , X j ( i , j = 1 , ⋯ , n ) X_i,X_j(i,j=1,\cdots,n) X i , X j ( i , j = 1 , ⋯ , n ) 彼此不独立的情况下 我们通过线性变换, 使得随机向量 X ⃗ = [ X 1 , ⋯ , X n ] T \vec{X}=[X_1,\cdots,X_n]^T X = [ X 1 , ⋯ , X n ] T 中的每个随机变量彼此独立, 则我们也可以通过独立随机变量概率密度函数之间的关系求出其联合概率密度函数
引入定理 1 ,将随机向量 X ⃗ ∼ N ( μ ⃗ , Σ ) \vec{X} \sim \mathcal{N}(\vec{\mu}, \Sigma) X ∼ N ( μ , Σ ) 变换为 Z ⃗ ∼ N ( 0 ⃗ , I ) \vec{Z} \sim \mathcal{N}(\vec{0}, \boldsymbol{I}) Z ∼ N ( 0 , I ) . 其中 Z ⃗ = B − 1 ( X ⃗ − μ ⃗ ) \vec{Z}=B^{-1}(\vec{X}-\vec{\mu}) Z = B − 1 ( X − μ ) . 经过推导,得到最终的联合概率密度函数
文章二的流程大致为
给出一元标准高斯分布
给出均值为 μ \mu μ ,方差为 σ 2 \sigma^2 σ 2 情况下,使用 z = x − μ σ z=\frac{x-\mu}{\sigma} z = σ x − μ 进行标准化。标准化的意义在于将数据点 x x x 到均值 μ \mu μ 的距离转化为数据点 x x x 到均值的距离等于多少个总体的标准差 σ \sigma σ ,这样,就消除了数据分布差异和量纲对概率计算的影响 ,此时的概率密度函数为:
f ( x ) = 1 σ 2 π e − z 2 2 = 1 σ 2 π e − ( x − μ ) 2 2 σ 2 f(x)=\frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{z^2}{2}}=\frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}
f ( x ) = σ 2 π 1 e − 2 z 2 = σ 2 π 1 e − 2 σ 2 ( x − μ ) 2
可见,高斯分布的概率密度计算核心在于计算数据点到中心的距离,并且除以标准差将这个绝对距离转化为相对距离,然后通过距离平方的指数衰减计算概率密度。
介绍各维度不相关 的多元正态分布的概率密度函数的推导。
对各维度相关 的多元正态分布,记为随机向量 X X X ,先将数据通过投影到正交单位向量上,进行去相关,投影过程用矩阵 U U U 表示。(其实也可以理解为旋转,通过旋转,将随机向量的每个维度变得不相关)。记投影或旋转后的得到的随机向量为 Y Y Y 。这时,Y Y Y 虽然已经去相关,但是还没有进行标准化,因此,对 Y Y Y 进行标准化,以得到随机向量 Z Z Z 。三者之间的关系如下
从公式可以看出,Z Z Z 是由 X X X 减去均值后的向量,先通过矩阵 U T U^T U T 进行投影/旋转变换,去除相关性,然后通过矩阵 D D D 进行缩放变换得到的。
总结
在文章一中,根据定理一得到 Z ⃗ = B − 1 ( X ⃗ − μ ⃗ ) \vec{Z}=B^{-1}(\vec{X}-\vec{\mu}) Z = B − 1 ( X − μ ) ,其具体操作了
文章二中 Z = D U T ( X − μ X ) Z=DU^T(X-\mu_X) Z = D U T ( X − μ X ) , 其中 D D D 为缩放矩阵,U T U^T U T 为旋转/投影矩阵
可以看出,文章一中的 B − 1 B^{-1} B − 1 等价于文章二中的 D U T DU^T D U T
在文章一中,存在一个 X X X 空间和 Z Z Z 空间的比例变化,即 d z 1 ⋯ d z n = ∣ B B T ∣ − 1 2 d x i ⋯ d x n dz_1\cdots dz_n=\left|BB^T\right|^{-\frac{1}{2}}dx_i\cdots dx_n d z 1 ⋯ d z n = ∣ ∣ B B T ∣ ∣ − 2 1 d x i ⋯ d x n (雅可比行列式 ,目前还没搞懂,需要了解一下 ), 而又因为 B B T = Σ BB^T=\Sigma B B T = Σ ,因此最后的联合概率密度函数有一项为 1 ∣ Σ ∣ 1 2 \frac{1}{\left|\Sigma\right|^{\frac{1}{2}}} ∣ Σ ∣ 2 1 1 。具体推导见文章一公式(9)-(14)
可以发现,两篇文章都是通过将随机变量 X ∼ N ( μ ⃗ , Σ ) X \sim \mathcal{N}(\vec{\mu}, \Sigma) X ∼ N ( μ , Σ ) 变换到 Z ∼ N ( 0 ⃗ , I ) Z \sim \mathcal{N}(\vec{0}, \boldsymbol{I}) Z ∼ N ( 0 , I ) 来求随机变量的联合概率分布的。不同的是,文章一直接通过 B − 1 B^{-1} B − 1 来表示这种变换,而文章二中则通过 D D D 和 U T U^T U T 两个变换以及引入中间随机向量 Y Y Y 来达到同样的效果。
在文章一中,Σ = B B T \Sigma=BB^T Σ = B B T , 且由于 Σ \Sigma Σ 是实对称矩阵,因此可以正交对角化, Σ = Q Λ Q T \Sigma=Q \Lambda Q^T Σ = Q Λ Q T 。根据定理1,我们有
将 Σ = Q Λ Q T \Sigma=Q \Lambda Q^T Σ = Q Λ Q T 代入,得到
问:这里为什么要计算 Z ⃗ T Z ⃗ \vec{Z}^T\vec{Z} Z T Z 呢?
答:这是因为,由 X ⃗ \vec{X} X 变换得到的 Z ⃗ ∼ N ( 0 ⃗ , I ) \vec{Z} \sim \mathcal{N}(\vec{0},\boldsymbol{I}) Z ∼ N ( 0 , I ) ,因此,随机向量 Z Z Z 的联合概率密度函数为
其中,指数函数的指数部分就是用 Z ⃗ T Z ⃗ \vec{Z}^T\vec{Z} Z T Z 来表示的。我们通过推导,得到 Z ⃗ T Z ⃗ = ( X ⃗ − μ ⃗ ) T Σ − 1 ( X ⃗ − μ ⃗ ) \vec{Z}^T\vec{Z} = (\vec{X}-\vec{\mu})^T\Sigma^{-1}(\vec{X}-\vec{\mu}) Z T Z = ( X − μ ) T Σ − 1 ( X − μ ) 。可以将其代入 p ( z 1 , ⋯ , z n ) p(z_1,\cdots,z_n) p ( z 1 , ⋯ , z n ) 中。又因为 d z 1 ⋯ d z n = ∣ B B T ∣ − 1 2 d x i ⋯ d x n dz_1\cdots dz_n=\left|BB^T\right|^{-\frac{1}{2}}dx_i\cdots dx_n d z 1 ⋯ d z n = ∣ ∣ B B T ∣ ∣ − 2 1 d x i ⋯ d x n (雅可比行列式 ) 关系,所以要在 p ( z 1 , ⋯ , z n ) p(z_1,\cdots,z_n) p ( z 1 , ⋯ , z n ) 上再乘上 ∣ B B T ∣ − 1 2 \left|BB^T\right|^{-\frac{1}{2}} ∣ ∣ B B T ∣ ∣ − 2 1 ,即 ∣ Σ ∣ − 1 2 \left|\Sigma\right|^{-\frac{1}{2}} ∣ Σ ∣ − 2 1 。这样也就得到了最后的概率密度函数。
个人理解:
我个人比较倾向于文章一的推导流程。根据我自己的理解,我总结了完整的推导流程:
给出一元标准高斯分布的概率密度函数,其中 Z ∼ N ( 0 , 1 ) \mathcal{Z} \sim \mathcal{N}(0,1) Z ∼ N ( 0 , 1 ) 即
根据标准高斯分布的概率密度函数,很容易得到内部每个随机变量 Z i Z_i Z i 都服从标准高斯分布且两两彼此独立的随机向量 Z ⃗ = [ Z 1 , ⋯ , Z n ] T \vec{Z}=[Z_1,\cdots, Z_n]^T Z = [ Z 1 , ⋯ , Z n ] T 的概率密度函数。即
当面对普通的随机向量 X ⃗ ∼ N ( μ ⃗ , Σ ) \vec{X} \sim \mathcal{N}(\vec{\mu}, \Sigma) X ∼ N ( μ , Σ ) 时,即其每个随机变量 X i ∼ N ( μ i , σ i 2 ) ( i = 1 , ⋯ , n ) X_i \sim \mathcal{N}(\mu_i, \sigma_i^2) (i = 1, \cdots, n) X i ∼ N ( μ i , σ i 2 ) ( i = 1 , ⋯ , n ) 且 X i , X j ( i , j = 1 , ⋯ , n ) X_i, X_j(i, j = 1, \cdots, n) X i , X j ( i , j = 1 , ⋯ , n ) 彼此不独立的情况下, 我们该如何求随机向量 X ⃗ \vec{X} X 的联合概率密度函数呢?
一个很自然的想法是, 如果我们能通过线性变换, 使得随机向量 X ⃗ = [ X 1 , ⋯ , X n ] ⊤ \vec{X} = [X_1, \cdots, X_n]^\top X = [ X 1 , ⋯ , X n ] ⊤ 中的每个随机变量彼此独立, 则我们也可以通过独立随机变量概率密度函数之间的关系求出其联合概率密度函数。
Note : 文章一说的是通过变换使得每个随机变量彼此独立,我觉得可以更进一步,通过变换使得每个随机变量彼此独立,并服从标准正态分布。文章一也正是这么做的。
通过线性变换公式 Z ⃗ = B − 1 ( X ⃗ − μ ⃗ ) \vec{Z}=B^{-1}(\vec{X}-\vec{\mu}) Z = B − 1 ( X − μ ) , 替换掉联合概率密度函数中指数部分的 Z T Z Z^TZ Z T Z 。这样,联合概率密度函数就变成了 X X X 和 B B B 的函数。
再通过积分的换元,得出 d z 1 ⋯ d z n dz_1\cdots dz_n d z 1 ⋯ d z n 与 d x 1 ⋯ d x n dx_1\cdots dx_n d x 1 ⋯ d x n 之间的关系,体现在联合概率密度函数的系数部分。
接着,通过推导得到的 B B T = Σ BB^T=\Sigma B B T = Σ , 将联合概率密度函数里的 B B B 进行替换,则最后得到的概率密度函数与 B B B 无关。因此,我们无需显式地求出变换 B B B ,就可以得到 X X X 的联合概率密度。
二维高斯分布图像
μ = ( 0 , 0 ) , Σ = [ 1 , 1.5 ; 1.5 , 4 ] \mu=(0,0), \Sigma=[1, 1.5; 1.5, 4] μ = ( 0 , 0 ) , Σ = [ 1 , 1 . 5 ; 1 . 5 , 4 ]
μ = ( 1 , 1.5 ) , Σ = [ 3 , 0 ; 0 , 3 ] \mu=(1,1.5), \Sigma=[3, 0; 0, 3] μ = ( 1 , 1 . 5 ) , Σ = [ 3 , 0 ; 0 , 3 ]
μ = ( 0 , 0 ) , Σ = [ 1 , − 0.8 ; − 0.8 , 1 ] \mu=(0,0), \Sigma=[1, -0.8; -0.8, 1] μ = ( 0 , 0 ) , Σ = [ 1 , − 0 . 8 ; − 0 . 8 , 1 ]