多维高斯分布

高中的时候我们便学过一维正态(高斯)分布的公式:

N(x|u,σ2)=12πσ2exp[12σ2(xu)2]

拓展到高维时,就变成:

N(x¯|u¯,Σ)=1(2π)D/21|Σ|1/2exp[12(x¯u¯)TΣ1(x¯u¯)]

其中,x¯ 表示维度为 D 的向量,u¯ 则是这些向量的平均值,Σ 表示所有向量 x¯ 的协方差矩阵。

本文只是想简单探讨一下,上面这个高维的公式是怎么来的。

二维的情况

为了简单起见,本文假设所有变量都是相互独立的。即对于概率分布函数 f(x0,x1,,xn) 而言,有 f(x0,x1,,xn)=f(x0)f(x1)f(xn) 成立。

现在,我们用一个二维的例子推出上面的公式。

假设有很多变量 x¯=[x1x2],它们的均值为 u¯=[u1u2],方差为 σ¯=[σ1σ2]

由于 x1x2 是相互独立的,所以,x¯ 的高斯分布函数可以表示为:

(1)f(x¯)=f(x1,x2)(2)=f(x1)f(x2)(3)=12πσ12exp(12(x1u1σ1)2)×12πσ22exp(12(x2u2σ2)2)(4)=1(2π)2/2(σ12σ22)1/2exp(12[(x1u1σ1)2+(x2u2σ2)2])

接下来,为了推出文章开篇的高维公式,我们要想办法得到协方差矩阵 Σ

对于二维的向量 x¯ 而言,其协方差矩阵为:

(5)Σ=[σ11σ12σ12σ22](6)=[σ12σ12σ21σ22]

(不熟悉协方差矩阵的请查找其他资料或翻看我之前的文章)

由于 x1x2 是相互独立的,所以 σ12=σ21=0。这样,Σ 退化成 [σ1200σ22]

Σ 的行列式 |Σ|=σ12σ22,代入公式 (4) 就可以得到:

f(x¯)=1(2π)2/2|Σ|1/2exp(12[(x1u1σ1)2+(x2u2σ2)2])

这样一来,我们已经推出了公式的左半部分,下面,开始处理右面的 exp 函数。

原始的高维高斯函数的 exp 函数为:exp[12(x¯u¯)TΣ1(x¯u¯)],根据前面算出来的 Σ,我们可以求出它的逆:Σ1=1σ12σ22[σ2200σ12]

接下来根据这个二维的例子,将原始的 exp() 展开:

(7)exp[12(x¯u¯)TΣ1(x¯u¯)]=exp[12[x1u1   x2u2]1σ12σ22[σ2200σ12][x1u1x2u2]](8)=exp[12[x1u1   x2u2]1σ12σ22[σ22(x1u1)σ12(x2u2)]](9)=exp[12σ12σ22[σ22(x1u1)2+σ12(x2u2)2]](10)=exp[12[(x1u1)2σ12+(x2u2)2σ22]]

展开到最后,发现推出了公式 (4)。说明原公式 N(x¯|u¯,Σ)=1(2π)D/21|Σ|1/2exp[12(x¯u¯)TΣ1(x¯u¯)] 是成立的。你也可以将上面展开的过程逆着推回去,一样可以从例子中的公式 (4) 推出多维高斯公式。

函数图像

知道多维的公式后,下面再简单比较一下一维和二维的图像区别。

上图展示的是 4 个一维高斯函数的图像。高斯函数是一个对称的山峰状,山峰的中心是均值 u,山峰的「胖瘦」由标准差 σ 决定,如果 σ 越大,证明数据分布越广,那么山峰越「矮胖」,反之,则数据分布比较集中,因此很大比例的数据集中在均值附近,山峰越「瘦高」。在偏离均值 u 三个 σ 的范围外,数据出现的概率几乎接近 0,因此这一部分的函数图像几乎与 x 轴重合。

下面看二维的例子:

有了一维图像的例子,二维图像就可以类比出来了。如果说,一维只是山峰的一个横截面,那么二维则是一个完整的有立体感的山峰。山峰的「中心」和「胖瘦」和一维的情况是一致的,而且,对于偏离中心较远的位置,数据出现的概率几乎为 0,因此,函数图像在这些地方就逐渐退化成「平原」了。

参数估计

另外,如果给定了很多数据点,并且知道它们服从某个高斯分布,我们要如何求出高斯分布的参数(μΣ)呢?

当然,估计模型参数的方法有很多,最常用的就是极大似然估计。

简单起见,拿一维的高斯模型举例。假设我们有很多数据点:(x1,x2,x3,,xm),它们的均值是u~。一维高斯函数是:p(x|μ,σ2)=12πσexp((xμ)22σ2)

首先,我们先写出似然函数:

(11)f(x1,x2,,xm)=i=1m12πσexp((xiμ~)22σ2)(12)=(2πσ2)m2exp(i=1n(xiμ~)22σ2)

然后取对数:

lnf(x1,x2,,xm)=m2ln(2πσ2)12σ2i=1n(xiμ~)2

求出导数,令导数为 0 得到似然方程:

lnfμ¯=1σ2i=1n(xiμ~)=0

lnfσ=mσ+1σ3i=1n(xiμ~)=0

我们可以求出:μ=1mi=1m(xiμ~)σ=1mi=1m(xiμ~)2,可以看到,这其实就是高斯函数中平均值和标准差的定义。

对于高维的情况,平均值和协方差矩阵也可以用类似的方法计算出来。

总结

本文只是从一个简单的二维例子出发,来说明多维高斯公式的来源。在 PRML 的书中,推导的过程更加全面,也复杂了许多,想深入学习多维高斯模型的还是参考教材为准。

重新对比一维和多维的公式:

N(x|u,σ2)=12πσ2exp[12σ2(xu)2]

N(x¯|u¯,Σ)=1(2π)D/21|Σ|1/2exp[12(x¯u¯)TΣ1(x¯u¯)]

其实二者是等价的。一维中,我们针对的是一个数,多维时,则是针对一个个向量求分布。如果向量退化成一维,则多维公式中的 D=1Σ=σ2Σ1=1σ2,这时多维公式就退化成一维的公式。所以,在多维的公式中,我们可以把 Σ 当作是样本向量的标准差。

参考

欢迎关注我的公众号「AI小男孩」,立志用大白话讲懂AI

posted @   大白话AI  阅读(51446)  评论(3编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示