对于高维随机变量Multivariate Gaussian Distribution 多元高斯分布 - 图1,样本均值为Multivariate Gaussian Distribution 多元高斯分布 - 图2和协方差矩阵Multivariate Gaussian Distribution 多元高斯分布 - 图3,服从多元高斯分布的概率密度函数(Probability Density Function, PDF)为:

Multivariate Gaussian Distribution 多元高斯分布 - 图4,
Multivariate Gaussian Distribution 多元高斯分布 - 图5

其中样本均值Multivariate Gaussian Distribution 多元高斯分布 - 图6就是各个维度的均值,设一共有Multivariate Gaussian Distribution 多元高斯分布 - 图7个样本Multivariate Gaussian Distribution 多元高斯分布 - 图8,有:

Multivariate Gaussian Distribution 多元高斯分布 - 图9

而协方差矩阵可以参考另一篇文章。

本文不涉及多元高斯分布的数学推导,只希望对多元高斯分布的表达式进行直观的剖析,解释多元高斯分布中协方差矩阵的作用。详细高斯分布的数学推导,可以参考文章

1 一维高斯分布

高斯分布(Gaussian distribution)又被称为正态分布(normal distribution)。一维随机变量Multivariate Gaussian Distribution 多元高斯分布 - 图10服从于均值为Multivariate Gaussian Distribution 多元高斯分布 - 图11方差为Multivariate Gaussian Distribution 多元高斯分布 - 图12的高斯分布可以被记为Multivariate Gaussian Distribution 多元高斯分布 - 图13,其概率密度函数 PDF 为

Multivariate Gaussian Distribution 多元高斯分布 - 图14

其中Multivariate Gaussian Distribution 多元高斯分布 - 图15可以看作是归一化因子,主要是为了Multivariate Gaussian Distribution 多元高斯分布 - 图16。BTW,这里插一句证明高斯概率密度函数的积分为 1Multivariate Gaussian Distribution 多元高斯分布 - 图17这个积分无法直接求出,需要通过一点 trick。

要证明Multivariate Gaussian Distribution 多元高斯分布 - 图18,只需要证明Multivariate Gaussian Distribution 多元高斯分布 - 图19,进而只需证明Multivariate Gaussian Distribution 多元高斯分布 - 图20。接下来证明:

首先看到Multivariate Gaussian Distribution 多元高斯分布 - 图21对于积分的值没有贡献,所以只需证明Multivariate Gaussian Distribution 多元高斯分布 - 图22

Multivariate Gaussian Distribution 多元高斯分布 - 图23

Multivariate Gaussian Distribution 多元高斯分布 - 图24转换到极坐标:
Multivariate Gaussian Distribution 多元高斯分布 - 图25%22%20aria-hidden%3D%22true%22%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJSZ3-7B%22%3E%3C%2Fuse%3E%0A%3Cg%20transform%3D%22translate(917%2C0)%22%3E%0A%3Cg%20transform%3D%22translate(-11%2C0)%22%3E%0A%3Cg%20transform%3D%22translate(0%2C633)%22%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-78%22%20x%3D%220%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-3D%22%20x%3D%22850%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-72%22%20x%3D%221906%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3Cg%20transform%3D%22translate(2524%2C0)%22%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-63%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-6F%22%20x%3D%22444%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-73%22%20x%3D%22945%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3C%2Fg%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-3B8%22%20x%3D%224030%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3C%2Fg%3E%0A%3Cg%20transform%3D%22translate(0%2C-727)%22%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-79%22%20x%3D%220%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-3D%22%20x%3D%22775%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-72%22%20x%3D%221831%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3Cg%20transform%3D%22translate(2449%2C0)%22%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-73%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-69%22%20x%3D%22394%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMAIN-6E%22%20x%3D%22673%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3C%2Fg%3E%0A%20%3Cuse%20xlink%3Ahref%3D%22%23E1-MJMATHI-3B8%22%20x%3D%223845%22%20y%3D%220%22%3E%3C%2Fuse%3E%0A%3C%2Fg%3E%0A%3C%2Fg%3E%0A%3C%2Fg%3E%0A%3C%2Fg%3E%0A%3C%2Fsvg%3E#card=math&code=%5Cbegin%7Bcases%7D%0Ax%20%3D%20r%5Ccos%5Ctheta%20%5C%5C%0Ay%20%3D%20r%5Csin%5Ctheta%0A%5Cend%7Bcases%7D&id=Wdsuk)

用极坐标就一定要标好换元后的定义域:

Multivariate Gaussian Distribution 多元高斯分布 - 图26

此外,积分式中的Multivariate Gaussian Distribution 多元高斯分布 - 图27也应该被替换成Multivariate Gaussian Distribution 多元高斯分布 - 图28,快速的求法为雅可比矩阵的行列式。雅可比矩阵为:

Multivariate Gaussian Distribution 多元高斯分布 - 图29

雅可比矩阵的行列式为Multivariate Gaussian Distribution 多元高斯分布 - 图30,故 (4) 中的积分式经过换元后有:

Multivariate Gaussian Distribution 多元高斯分布 - 图31

得证。

如果对一般高斯分布进行还换元,令Multivariate Gaussian Distribution 多元高斯分布 - 图32,有Multivariate Gaussian Distribution 多元高斯分布 - 图33,则

Multivariate Gaussian Distribution 多元高斯分布 - 图34

为了使Multivariate Gaussian Distribution 多元高斯分布 - 图35Multivariate Gaussian Distribution 多元高斯分布 - 图36上的积分等于1,需要Multivariate Gaussian Distribution 多元高斯分布 - 图37,故得到随机变量Multivariate Gaussian Distribution 多元高斯分布 - 图38的概率密度函数

Multivariate Gaussian Distribution 多元高斯分布 - 图39

此时Multivariate Gaussian Distribution 多元高斯分布 - 图40服从于一维标准高斯(正态)分布

2 多元高斯分布:从一维到高维

首先从最简单的情况说起。假设现在有Multivariate Gaussian Distribution 多元高斯分布 - 图41维随机变量Multivariate Gaussian Distribution 多元高斯分布 - 图42,其中Multivariate Gaussian Distribution 多元高斯分布 - 图43服从于标准正态分布,且Multivariate Gaussian Distribution 多元高斯分布 - 图44互相独立(Multivariate Gaussian Distribution 多元高斯分布 - 图45)。令变量Multivariate Gaussian Distribution 多元高斯分布 - 图46,那么该高维随机变量的概率密度函数为

Multivariate Gaussian Distribution 多元高斯分布 - 图47

Multivariate Gaussian Distribution 多元高斯分布 - 图48为一个常数,则可以得到Multivariate Gaussian Distribution 多元高斯分布 - 图49的等高线Multivariate Gaussian Distribution 多元高斯分布 - 图50,是一个圆。当随机变量Multivariate Gaussian Distribution 多元高斯分布 - 图51为二维的时候,有
Multivariate Gaussian Distribution 多元高斯分布 - 图52

画出图像:

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. plt.style.use('ggplot')
  4. x1 = np.random.normal(0, 1, 500)
  5. x2 = np.random.normal(0, 1, 500)
  6. X = np.stack((x1, x2)) # (2, 500)
  7. plt.scatter(X[0, :], X[1, :])
  8. plt.title('$x_1, x_2 \\sim N(0, 1)$')
  9. plt.xlabel("$x_1$")
  10. plt.ylabel("$x_2$")
  11. plt.axis('equal')
  12. plt.show()

Figure_1.png
接下来对Multivariate Gaussian Distribution 多元高斯分布 - 图54进行线性变换。首先是伸缩变换(Scaling),可以用矩阵Multivariate Gaussian Distribution 多元高斯分布 - 图55表示

Multivariate Gaussian Distribution 多元高斯分布 - 图56

得到

Multivariate Gaussian Distribution 多元高斯分布 - 图57

Multivariate Gaussian Distribution 多元高斯分布 - 图58,画出图像

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. plt.style.use('ggplot')
  4. np.random.seed(210224)
  5. S = np.array([[1.5, 0], [0, 3]])
  6. x1 = np.random.normal(0, 1, 500)
  7. x2 = np.random.normal(0, 1, 500)
  8. X = np.stack((x1, x2)) # (2, 500)
  9. Z = np.matmul(S, X) # scaling
  10. plt.scatter(Z[0, :], Z[1, :])
  11. plt.title("$z = Sx$")
  12. plt.xlabel("$z_1$")
  13. plt.ylabel("$z_2$")
  14. plt.axis('equal')
  15. plt.show()

Figure_2.png

可以看到Multivariate Gaussian Distribution 多元高斯分布 - 图60的横坐标Multivariate Gaussian Distribution 多元高斯分布 - 图61和纵坐标Multivariate Gaussian Distribution 多元高斯分布 - 图62分别被缩放了 1.5 和 3 倍得到Multivariate Gaussian Distribution 多元高斯分布 - 图63Multivariate Gaussian Distribution 多元高斯分布 - 图64

随后是旋转变换(ratation),可以用旋转矩阵Multivariate Gaussian Distribution 多元高斯分布 - 图65来表示:

Multivariate Gaussian Distribution 多元高斯分布 - 图66

得到

Multivariate Gaussian Distribution 多元高斯分布 - 图67

Multivariate Gaussian Distribution 多元高斯分布 - 图68,则有

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. plt.style.use('ggplot')
  4. np.random.seed(210224)
  5. theta = np.deg2rad(30)
  6. S = np.array([[1.5, 0], [0, 3]])
  7. R = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]])
  8. x1 = np.random.normal(0, 1, 500)
  9. x2 = np.random.normal(0, 1, 500)
  10. X = np.stack((x1, x2)) # (2, 500)
  11. Z = np.matmul(S, X) # scaling
  12. Z = np.matmul(R, Z) # rotation
  13. plt.scatter(Z[0, :], Z[1, :])
  14. plt.title("$z = Sx$")
  15. plt.xlabel("$z_1$")
  16. plt.ylabel("$z_2$")
  17. plt.axis('equal')
  18. plt.show()

Figure_3.png

可以看到图像整体逆时针旋转了 30o。

再对Multivariate Gaussian Distribution 多元高斯分布 - 图70沿着Multivariate Gaussian Distribution 多元高斯分布 - 图71方向进行平移(translation),得到

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. plt.style.use('ggplot')
  4. np.random.seed(210224)
  5. theta = np.deg2rad(30)
  6. S = np.array([[1.5, 0], [0, 3]])
  7. R = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]])
  8. mu = np.array([2, 3]).reshape((2, 1))
  9. x1 = np.random.normal(0, 1, 500)
  10. x2 = np.random.normal(0, 1, 500)
  11. X = np.stack((x1, x2)) # (2, 500)
  12. Z = np.matmul(S, X) # scaling
  13. Z = np.matmul(R, Z) # rotation
  14. Z += mu # translation
  15. plt.scatter(Z[0, :], Z[1, :])
  16. plt.title("$z = RSx + \\mu$")
  17. plt.xlabel("$z_1$")
  18. plt.ylabel("$z_2$")
  19. plt.axis('equal')
  20. plt.show()

Figure_4.png

可以看到样本中心从原点平移到了Multivariate Gaussian Distribution 多元高斯分布 - 图73

经过这三步变换,我们得到了新的随机变量Multivariate Gaussian Distribution 多元高斯分布 - 图74的分布。令线性变换矩阵

Multivariate Gaussian Distribution 多元高斯分布 - 图75

代表先对样本点进行缩放,然后平移。则有

Multivariate Gaussian Distribution 多元高斯分布 - 图76,
Multivariate Gaussian Distribution 多元高斯分布 - 图77

最后的问题来了,如何求Multivariate Gaussian Distribution 多元高斯分布 - 图78的分布(概率密度函数)。既然有了一维高斯分布的铺垫,这就好办了,首先把Multivariate Gaussian Distribution 多元高斯分布 - 图79带入到Multivariate Gaussian Distribution 多元高斯分布 - 图80中,然后求出雅可比行列式使得积分归一就可以。

Multivariate Gaussian Distribution 多元高斯分布 - 图81

Multivariate Gaussian Distribution 多元高斯分布 - 图82Multivariate Gaussian Distribution 多元高斯分布 - 图83求偏导得到雅可比矩阵

Multivariate Gaussian Distribution 多元高斯分布 - 图84

雅可比行列式为

Multivariate Gaussian Distribution 多元高斯分布 - 图85

最终得到Multivariate Gaussian Distribution 多元高斯分布 - 图86的概率密度函数

Multivariate Gaussian Distribution 多元高斯分布 - 图87

这里我们已经完全看到多元高斯分布的影子了,令

Multivariate Gaussian Distribution 多元高斯分布 - 图88

就是协方差矩阵,从而推出 (6) 式多元高斯分布。

Multivariate Gaussian Distribution 多元高斯分布 - 图89

高维随机变量Multivariate Gaussian Distribution 多元高斯分布 - 图90服从均值为Multivariate Gaussian Distribution 多元高斯分布 - 图91,协方差矩阵为Multivariate Gaussian Distribution 多元高斯分布 - 图92的多元高斯分布,可以记作Multivariate Gaussian Distribution 多元高斯分布 - 图93

Multivariate Gaussian Distribution 多元高斯分布 - 图94服从于多元正态分布可以看作由相互独立且服从标准正态的Multivariate Gaussian Distribution 多元高斯分布 - 图95经过线性变换然后平移得到的。故协方差矩阵实际上代表了一种线性变换。

3 协方差矩阵与特征分解

矩阵的特征值分解(eigenvalue decomposition)也被称为对角化(diagonalization),可以参考另一篇文章

对协方差矩阵进行特征值分解有:

Multivariate Gaussian Distribution 多元高斯分布 - 图96

其中Multivariate Gaussian Distribution 多元高斯分布 - 图97是一组标准正交基,Multivariate Gaussian Distribution 多元高斯分布 - 图98为对角阵。进一步对 (7) 式进行变换,得到

Multivariate Gaussian Distribution 多元高斯分布 - 图99

其中Multivariate Gaussian Distribution 多元高斯分布 - 图100

可以看到,多元高斯分布是由协方差矩阵的特征值控制缩放特征向量控制旋转均值控制样本点中心位置的

4 Reference

  1. 多元高斯分布完全解析
  2. 如何直观地理解「协方差矩阵」
  3. Understanding the Covariance Matrix