高斯作为机器学习中的常客也是无法避免的,而线性模型作为比较简单的模型,两者结合出的线性高斯模型,在今后的机器学习中大量涉及到这方面的知识。例如在各种滤波中,高斯滤波,卡曼滤波,粒子滤波。
一维情况 MLE: Maximum Likelihood Estimation
高斯分布在机器学习中占有举足轻重的作用。在 MLE 方法中:
θ=(μ,Σ)=(μ,σ2),xii.i.d⟶p(x|θ),θMLE=argmaxθlogp(X|θ)=i.i.dargmaxθN∑i=1logp(xi|θ)
一般地,高斯分布的概率密度函数 PDF(Probability Density Function)写为:
p(x|μ,Σ)=1(2π)p/2|Σ|1/2e−12(x−μ)TΣ−1(x−μ)
带入 MLE 中我们考虑一维的情况
logp(X|θ)=N∑i=1logp(xi|θ)=N∑i=1log1√2πσexp(−(xi−μ)22σ2)
首先对 μ 的极值可以得到 :
μMLE=argmaxμlogp(X|θ)=argmaxμN∑i=1(xi−μ)2
于是:
∂∂μN∑i=1(xi−μ)2=0⟶μMLE=1NN∑i=1xi
其次对 θ 中的另一个参数 σ ,有:
σMLE=argmaxσlogp(X|θ)=argmaxσN∑i=1[−logσ−12σ2(xi−μ)2]=argminσN∑i=1[logσ+12σ2(xi−μ)2](1)
于是:
∂∂σN∑i=1[logσ+12σ2(xi−μ)2]=0⟶σ2MLE=1NN∑i=1(xi−μ)2
值得注意的是,上面的推导中,首先对 μ 求 MLE, 然后利用这个结果求 σMLE ,因此可以预期的是对数据集D求期望时 ED[μMLE] 是无偏差的:
ED[μMLE]=ED[1NN∑i=1xi]=1NN∑i=1ED[xi]=μ
但是当对 σMLE 求 期望的时候由于使用了单个数据集的 μMLE,因此对所有数据集求期望的时候我们会发现 σMLE 是 有偏的:
ED[σ2MLE]=ED[1NN∑i=1(xi−μMLE)2]=ED[1NN∑i=1(x2i−2xiμMLE+μ2MLE)=ED[1NN∑i=1x2i−μ2MLE]=ED[1NN∑i=1x2i−μ2+μ2−μ2MLE]=ED[1NN∑i=1x2i−μ2]−ED[μ2MLE−μ2]=σ2−(ED[μ2MLE]−μ2)=σ2−(ED[μ2MLE]−E2D[μMLE])=σ2−Var[μMLE]=σ2−Var[1NN∑i=1xi]=σ2−1N2N∑i=1Var[xi]=N−1Nσ2(2)
所以:
^σ2=1N−1N∑i=1(xi−μ)2
多维情况MLE
多维高斯分布表达式为:
p(x|μ,Σ)=1(2π)p/2|Σ|1/2e−12(x−μ)TΣ−1(x−μ)
其中 x,μ∈Rp,Σ∈Rp×p ,$\mu 是期望,\Sigma$ 为协方差矩阵,一般而言也是半正定矩阵。这里我们只考虑正定矩阵,以方便计算。
什么是正定?
当A∈Rn×n,AT=A时,对任意x≠0,x∈Rn,都有xTAx>0
什么是半正定?
当A∈Rn×n,AT=A时,对任意x≠0,x∈Rn,都有xTAx≥0
常用的正定判定有
1. $\lambda(A)\gt0$
2. 各阶主子式均大于0
首先我们处理指数上的数字,指数上的数字可以记为 x 和 μ 之间的马氏距离。对于对称的协方差矩阵可进行特征值分解,
Σ=UΛUT=(u1,u2,⋯,up)diag(λi)(u1,u2,⋯,up)T=p∑i=1uiλiuTi
,于是:
Σ−1=(UΛUT)−1=UΛ−1UT=p∑i=1ui1λiuTi
Δ=(x−μ)TΣ−1(x−μ)=p∑i=1(x−μ)Tui1λiuTi(x−μ)=p∑i=1[(x−u)Tui]2λi=p∑i=1y2iλi(3)(4)(5)
我们注意到 yi 是 x−μ 在特征向量 ui 上的投影长度,相当于是坐标轴的平移与旋转。因此上式子就是 Δ 取不同值时的同心椭圆。

下面我们看多维高斯模型在实际应用时的两个问题
-
参数 Σ,μ 的自由度为 O(p2) 对于维度很高的数据其自由度太高。解决方案:高自由度的来源是 Σ 有 p(p+1)2 个自由参数,可以假设其是对角矩阵,甚至在各向同性假设中假设其对角线上的元素都相同。前一种的算法有 Factor Analysis,后一种有概率 PCA: Principal Component Analysis(p-PCA) 。
∀i,j∈1⋯p,i≠j,λi=λj,Σ为对角矩阵,可判定各特征各自同性。
-
第二个问题是单个高斯分布是单峰的,对有多个峰的数据分布不能得到好的结果。解决方案:高斯混合模型 GMM。
下面对多维高斯分布的常用定理进行介绍。
我们记 x=(x1,x2,⋯,xp)T=(xa,m×1,xb,n×1)T,μ=(μa,m×1,μb,n×1)T,Σ=(ΣaaΣabΣbaΣbb),已知 x∼N(μ,Σ)。
首先是一个高斯分布的定理:`
定理:已知 x∼N(μ,Σ),y∼Ax+b,那么 y∼N(Aμ+b,AΣAT)。
证明:E[y]=E[Ax+b]=AE[x]+b=Aμ+b,Var[y]=Var[Ax+b]=Var[Ax]=A⋅Var[x]⋅AT。
下面利用这个定理得到 p(xa),p(xb),p(xa|xb),p(xb|xa) 这四个量。
-
xa=(Im×mOm×n))(xaxb),代入定理中得到:
E[xa]=(IO)(μaμb)=μaVar[xa]=(IO)(ΣaaΣabΣbaΣbb)(IO)=Σaa
所以 xa∼N(μa,Σaa)。
-
同样的,xb∼N(μb,Σbb)。
-
对于两个条件概率,我们引入三个量:
xb⋅a=xb−ΣbaΣ−1aaxaμb⋅a=μb−ΣbaΣ−1aaμaΣbb⋅a=Σbb−ΣbaΣ−1aaΣab
特别的,最后一个式子叫做 Σbb 的 Schur Complementary。可以看到:
xb⋅a=(−ΣbaΣ−1aaIn×n)(xaxb)
所以:
E[xb⋅a]=(−ΣbaΣ−1aaIn×n)(μaμb)=μb⋅aVar[xb⋅a]=(−ΣbaΣ−1aaIn×n)(ΣaaΣabΣbaΣbb)(−Σ−1aaΣTbaIn×n)=Σbb⋅a
利用这三个量可以得到 xb=xb⋅a+ΣbaΣ−1aaxa。因此:
E[xb|xa]=μb⋅a+ΣbaΣ−1aaxa
Var[xb|xa]=Σbb⋅a
这里同样用到了定理。
-
同样:
xa⋅b=xa−ΣabΣ−1bbxbμa⋅b=μa−ΣabΣ−1bbμbΣaa⋅b=Σaa−ΣabΣ−1bbΣba
所以:
E[xa|xb]=μa⋅b+ΣabΣ−1bbxb
Var[xa|xb]=Σaa⋅b
下面利用上边四个量,求解线性模型:
已知:p(x)=N(μ,Λ−1),p(y|x)=N(Ax+b,L−1),求解:p(y),p(x|y)。
解:令 y=Ax+b+ϵ,ϵ∼N(0,L−1),所以 E[y]=E[Ax+b+ϵ]=Aμ+b,Var[y]=AΛ−1AT+L−1,因此:
p(y)=N(Aμ+b,L−1+AΛ−1AT)
引入 z=(xy),我们可以得到 Cov[x,y]=E[(x−E[x])(y−E[y])T]。对于这个协方差可以直接计算:
Cov(x,y)=E[(x−μ)(Ax−Aμ+ϵ)T]=E[(x−μ)(x−μ)TAT]=Var[x]AT=Λ−1AT(6)(7)(8)
注意到协方差矩阵的对称性,所以 p(z)=N(μAμ+b),(Λ−1Λ−1ATAΛ−1L−1+AΛ−1AT)。根据之前的公式,我们可以得到:
E[x|y]=μ+Λ−1AT(L−1+AΛ−1AT)−1(y−Aμ−b)
Var[x|y]=Λ−1−Λ−1AT(L−1+AΛ−1AT)−1AΛ−1
这里的Λ−1是精度矩阵,L−1是协方差矩阵。
PrecisionMatrix=CovarianceMatrix−1
这里补充一些小知识
- 一般情况下,两个随机变量x,y独立不相关,不相关不一定独立
- 若x,y∼N(μ,Σ),不相关等价于独立
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律