Processing math: 100%

Hiroki

大部分笔记已经转移到 https://github.com/hschen0712/machine_learning_notes ,QQ:357033150, 欢迎交流

贝叶斯线性回归

贝叶斯线性回归

问题背景:

为了与PRML第一章一致,我们假定数据出自一个高斯分布:

p(t|x,w,β)=N(t|y(x,w),β1)=β2πexp(β2(ty(x,w))2)

其中β是精度,y(x,w)=Mj=0wjxj
w的先验为:

p(w)=N(w|0,α1I)=(α2π)(M+1)/2exp(α2wTw)

其中α是高斯分布的精度。
为了表示方便,我们定义一个变换ϕ(x)=(1,x,x2,...,xM)T,那么y(x,w)=wTϕ(x)。为了对w作推断,我们需要收集数据更新先验分布,记收集到的数据为xN={x1,...,xN}tN={t1,...,tN},其中tixi对应的响应。进一步我们引入一个矩阵Φ,其定义如下:

Φ=[ϕ(x1)Tϕ(x2)Tϕ(xN)T]

我们可以认为这个矩阵是由ϕ(xi)T平铺而成。

详细推导过程

首先我们先验证p(w|x,t)是个高斯分布。根据贝叶斯公式我们有:

p(w|x,t)p(w|α)p(t|x,w)=(α2π)(M+1)/2exp(α2wTw)Ni=1β2πexp(β2(tiwTϕ(xi))2)exp(12{αwTw+βNi=1(t2i2tiwTϕ(xi)+wTϕ(xi)ϕ(xi)Tw)})exp(12{wT(αI+βNi=1ϕ(xi)ϕ(xi)T)w2βNi=1tiϕ(xi)Tw})exp(12{wT(αI+βΦTΦ)w2β(ΦTtN)Tw})

S1=αI+βΦTΦ,μ=βSΦTtN(注:原书中式1.72写错了)

p(w|x,t)exp(12(wμ)TS1(wμ))N(w|μ,S)

至此,我们证明了后验分布也是个高斯,接下来我们计算predictive distribution,注意到p(t|x,x,t)是两个高斯分布的卷积,其结果也是一个高斯,但为了严谨起见,还是证明一下。

p(t|x,x,t)=p(t|x,w)p(w|x,t)dw=1(2π)M/2+11(β1|S|)1/2exp(12{β(twTϕ(x))2+(wμ)TS1(wμ)})dw=1(2π)M/2+11(β1|S|)1/2exp(12{βt22βtϕ(x)Tw+βwTϕ(x)ϕ(x)Tw+wTS1w2μTS1w+μTS1μ})dw=1(2π)M/2+11(β1|S|)1/2exp(12(βt2+μTS1μ))exp(12{2βtϕ(x)Tw+βwTϕ(x)ϕ(x)Tw+wTS1w2μTS1w})dw=1(2π)M/2+11(β1|S|)1/2exp(12(βt2+μTS1μ))exp(12{wT(βϕ(x)ϕ(x)T+S1)Λ1w2(βtϕ(x)T+μTS1mTΛ1)w}dw=1(2π)M/2+11(β1|S|)1/2exp(12(βt2+μTS1μ))exp(12{wTΛ1w2mTΛ1w+mTΛ1mmTΛ1m})dw=1(2π)M/2+11(β1|S|)1/2exp(12(βt2+μTS1μmTΛ1m))exp(12{(wm)TΛ1(wm)})dw=(2π)(M+1)/2(2π)M/2+1|Λ|1/2(β1|S|)1/2exp(12(βt2+μTS1μmTΛ1m))=1(2π)1/2|(βϕ(x)ϕ(x)T+S1)1|1/2(β1|S|)1/2exp(12(βt2+μTS1μmTΛ1m))=1(2π)1/21(β1|S||βϕ(x)ϕ(x)T+S1|)1/2exp(12(βt2+μTS1μmTΛ1m))

到这里不知道怎么推下去了,于是去网上闲逛找解决办法,终于找到了一篇论文《Modeling Inverse Covariance Matrices by Basis Expansion》这篇论文里介绍了一个引理
引理 (对称矩阵的秩1扰动)αR,aRd,PRd×d 为可逆矩阵。如果αa(aTPa)1那么秩1扰动矩阵P+αaaT可逆,且

(P+αaaT)1=P1αP1aaTP11+αaTP1a

det(P+αaaT)=(1+αaTP1a)det(P)

这条定理说的是如果我们给协方差矩阵一个秩为1的向量外积做扰动,我们可以将扰动后的矩阵的逆和行列式进行展开。具体地,我们考察|βϕ(x)ϕ(x)T+S1|,发现

|βϕ(x)ϕ(x)T+S1|=(1+βϕ(x)TSϕ(x))det(S1)=(1+βϕ(x)TSϕ(x))/|S|

于是

1(β1|S||βϕ(x)ϕ(x)T+S1|)1/2=1(β1|S|(1+βϕ(x)TSϕ(x))|S|)1/2=1(β1+ϕ(x)TSϕ(x))1/2

接下来考察指数部分exp(12(βt2+μTS1μmTΛ1m)),注意到μ=βSΦTtN,于是μTS1μ=β2(ΦTtN)TS(ΦTtN)。同时,应用上述引理我们有

Λ=(βϕ(x)ϕ(x)T+S1)1=SβSϕ(x)ϕ(x)TS1+βϕ(x)TSϕ(x)=SSϕ(x)ϕ(x)TSβ1+ϕ(x)TSϕ(x)

利用以上两个关系,我们进一步进行推导

exp(12(βt2+μTS1μmTΛ1m))=exp(12{βt2+β2(ΦTtN)TS(ΦTtN)(βtϕ(x)T+β(ΦTtN)T)ΛΛ1Λ(βtϕ(x)+βΦTtN)})=exp(12{βt2+β2(ΦTtN)TS(ΦTtN)[β2t2ϕ(x)TΛϕ(x)+2β2tϕ(x)TΛ(ΦTtN)+β2(ΦTtN)TΛ(ΦTtN)]})=exp(12{βt2+β2(ΦTtN)TS(ΦTtN)+[β2t2ϕ(x)TSϕ(x)+β3t2(ϕ(x)TSϕ(x))21+βϕ(x)TSϕ(x)2β2tϕ(x)TS(ΦTtN)+2β3tϕ(x)Tϕ(x)ϕ(x)TS(ΦTtN)1+βϕ(x)TSϕ(x)β2(ΦTtN)TS(ΦTtN)+β3(ΦTtN)TSϕ(x)ϕ(x)TS(ΦTtN)1+βϕ(x)TSϕ(x)]})=exp(12{(ββ2ϕ(x)TSϕ(x)+β3(ϕ(x)TSϕ(x))21+βϕ(x)TSϕ(x))t2+2(β3ϕ(x)Tϕ(x)ϕ(x)TS(ΦTtN)1+βϕ(x)TSϕ(x)β2ϕ(x)TS(ΦTtN))t+β3(ΦTtN)TSϕ(x)ϕ(x)TS(ΦTtN)1+βϕ(x)TSϕ(x)})

我们考察每一个系数,首先是t2的系数

ββ2ϕ(x)TSϕ(x)+β3(ϕ(x)TSϕ(x))21+βϕ(x)TSϕ(x)=β+β2ϕ(x)TSϕ(x)[1+βϕ(x)TSϕ(x)]+β3(ϕ(x)TSϕ(x))21+βϕ(x)TSϕ(x)=ββ2ϕ(x)TSϕ(x)1+βϕ(x)TSϕ(x)=β(1+βϕ(x)TSϕ(x))β2ϕ(x)TSϕ(x)1+βϕ(x)TSϕ(x)=β1+βϕ(x)TSϕ(x)=1β1+ϕ(x)TSϕ(x)

接着是t的系数

β3ϕ(x)Tϕ(x)ϕ(x)TS(ΦTtN)1+βϕ(x)TSϕ(x)β2ϕ(x)TS(ΦTtN)=β3ϕ(x)Tϕ(x)ϕ(x)TS(ΦTtN)β2ϕ(x)TS(ΦTtN)(1+βϕ(x)TSϕ(x))1+βϕ(x)TSϕ(x)=β3ϕ(x)Tϕ(x)ϕ(x)TS(ΦTtN)β2ϕ(x)TS(ΦTtN)β3ϕ(x)TS(ΦTtN)ϕ(x)TSϕ(x)1+βϕ(x)TSϕ(x)=βϕ(x)TS(ΦTtN)β1+ϕ(x)TSϕ(x)

最后我们考察常数项

β3(ΦTtN)TSϕ(x)ϕ(x)TS(ΦTtN)1+βϕ(x)TSϕ(x)=β2(ϕ(x)TS(ΦTtN))2β1+ϕ(x)TSϕ(x)

综合以上,我们有

exp(12(βt2+μTS1μmTΛ1m))=exp(12(β1+ϕ(x)TSϕ(x)){t22βϕ(x)TS(ΦTtN)t+β2(ϕ(x)TS(ΦTtN))2})=exp(12(β1+ϕ(x)TSϕ(x))(tβϕ(x)TS(ΦTtN))2)

综合以上,我们可以得到

p(t|x,x,t)=12π(β1+ϕ(x)TSϕ(x))exp(12(β1+ϕ(x)TSϕ(x))(tβϕ(x)TS(ΦTtN))2)

m(x)=βϕ(x)TS(ΦTtN)=μTϕ(x)s2(x)=β1+ϕ(x)TSϕ(x)

以上两式对应PRML中的式1.70~1.71。式1.71中,第一项表示数据中的噪音(方差越小,数据越集中,不确定性越小);第二项表示关于参数w的不确定性,当N时,第二项趋于0,这是由于当数据量趋于无限大时,关于参数的不确定性逐渐消失,先验的影响逐渐减弱。理论上的证明如下,首先我们考察SN+1:

SN+1=(αI+βNi=1ϕ(xi)ϕ(xi)T+βϕ(xN+1)ϕ(xN+1)T)=(S1N+βϕ(xN+1)ϕ(xN+1)T)=SNβSNϕ(xN+1)ϕ(xN+1)TSN1+βϕ(xN+1)TSNϕ(xN+1)=SNβ1+βϕ(xN+1)TSNϕ(xN+1)(SNϕ(xN+1))(SNϕ(xN+1))T

于是

σ2N+1(x)=β1+ϕ(x)TSN+1ϕ(x)=σ2N(x)β1+βϕ(xN+1)TSNϕ(xN+1)[ϕ(x)T(SNϕ(xN+1))]2σ2N(x)

因此序列σ2N(x)是单调递减序列,又由于有下界(0),因此当N时,σ2N(x)0

于是我们知道

p(t|x,x,t)=N(t|m(x),s2(x))

也就是说后验预测分布也是一个高斯,t的且均值、方差取决于x
需要注意的是当x满足β=(ϕ(x)TSϕ(x))1时,方差

s2(x)=β1+ϕ(x)TSϕ(x)=ϕ(x)TSϕ(x)+ϕ(x)TSϕ(x)=0

因此在这一点分布未定义

posted on   Hiroki  阅读(1792)  评论(0编辑  收藏  举报

编辑推荐:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
阅读排行:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

导航

点击右上角即可分享
微信分享提示