贝叶斯神经网络

贝叶斯神经网络

1 人工神经网络的作用与局限

人工神经网络(artificial neural network,缩写ANN),简称神经网络(neural network,缩写NN)或类神经网络,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,主要用于对函数进行估计或近似。

在神经网络的训练中,就是训练网络中的参数以实现预测的结果如下所示

y p r e d i c t = W T ∗ x + b y_{predict} = W^T * x +b ypredict=WTx+b

对于一个神经网络来说,最为核心的是如何根据训练集的数据,得到各层的模型参数,使得Loss最小,因其强大的非线性拟合能力而在各个领域有着重要应用。而其问题是在数据量较少的情况下存在严重的过拟合现象,对于获得数据代价昂贵的一些课题比如车辆控制等领域,应用存在局限性。

2 贝叶斯网络简介

贝叶斯神经网络(BNN)不同于一般的神经网络,其权重参数是随机变量,而非确定的值。贝叶斯神经网络把权重看成是服从均值为 μ \mu μ ,方差为 δ \delta δ 的高斯分布,每个权重服从不同的高斯分布,反向传播网络优化的是权重,贝叶斯神经网络优化的是权重的均值和方差。BNN把概率建模和神经网络结合起来,并能够给出预测结果的置信度。

2.1 BNN模型

假设BNN的网络参数为 W W W, p ( W ) p(W) p(W) 是参数的先验分布,给定观测数据 D = X , Y D = X,Y D=X,Y, 这里 X X X是输入数据, Y Y Y 是标签数据。BNN 希望给出以下的分布:

网络的预测值为:

P ( Y ∣ X , D ) = ∫ P ( Y ∣ X , W ) P ( W ∣ D ) d W P(Y|X,D)=\int P(Y|X,W)P(W|D) dW P(YX,D)=P(YX,W)P(WD)dW   (1)

由于 W W W 是随机变量,因此,我们的预测值也是个随机变量。 P ( Y ∣ X , W ) P(Y|X,W) P(YX,W) 表示给定权重 W W W 和输入 X X X,输出 Y Y Y的概率分布,其实就是神经网络。我们只需要依据训练集 D D D 建模出权重的分布 P ( W ∣ D ) P(W|D) P(WD),就可以依据蒙特卡罗方法,采样 m m m个服从 P ( W ∣ D ) P(W|D) P(WD)分布的样本,计算 1 m ∑ i = 1 m p ( Y ∣ X , W i ) \frac{1}{m}\sum_{i=1}^mp(Y|X,W_i) m1i=1mp(YX,Wi) ,即可得到 p ( Y ∣ X , D ) p(Y|X,D) p(YX,D)

其中:

P ( W ∣ D ) = P ( W ) P ( D ∣ W ) P ( D ) P(W|D)=\frac{P(W)P(D|W)}{P(D)} P(WD)=P(D)P(W)P(DW)   (2)

P ( W ∣ D ) P(W|D) P(WD) 是后验分布, P ( D ∣ W ) P(D|W) P(DW) 是似然函数, P ( D ) P(D) P(D) 是边缘似然。

2.2 基于变分推断的BNN训练

上述公式 ( 1 ) (1) (1) 说明用NN 对数据进行概率建模并预测的核心在于做高效近似后验推断。如果直接采样后验概率 P ( W ∣ D ) P(W|D) P(WD) 来评估 p ( Y ∣ X , D ) p(Y|X,D) p(YX,D) 的话,存在后验分布多维的问题,而变分推断的思想是使用简单分布去近似后验分布。
核心思想是利用一个分布利用一个分布 q ( W ∣ θ ) q(W|\theta) q(Wθ) 来逼近 p ( W ∣ D ) p(W|D) p(WD) ,利用KL散度度量 q ( W ∣ θ ) q(W|\theta) q(Wθ) p ( W ∣ D ) p(W|D) p(WD)两个分布之间的相似性。 其中 θ = ( μ , δ ) \theta = (\mu,\delta) θ=(μ,δ), 表示每个权重 w i w_i wi 从正态分布 ( μ i , δ i ) (\mu_i,\delta_i) (μi,δi) 中采样。 希望 q ( W ∣ θ ) q(W|\theta) q(Wθ) p ( W ∣ D ) p(W|D) p(WD) 距离最小,也就是优化:

θ ∗ = arg min ⁡ θ K L [ q ( W ∣ θ ) ∣ ∣ p ( W ∣ D ) ] \theta^*=\argmin_{\theta} KL[q(W|\theta)||p(W|D)] θ=θargminKL[q(Wθ)p(WD)]   (3)

进一步推导:
θ ∗ = arg min ⁡ θ K L [ q ( W ∣ θ ) ∣ ∣ p ( W ∣ D ) ] \theta^*=\argmin_{\theta} KL[q(W|\theta)||p(W|D)] θ=θargminKL[q(Wθ)p(WD)]
= arg min ⁡ θ E q ( W ∣ θ ) [ l o g [ q ( W ∣ θ ) p ( W ∣ D ) ] ] = \argmin_{\theta} E_{q(W|\theta)}[log[\frac{q(W|\theta)}{p(W|D)}]] =θargminEq(Wθ)[log[p(WD)q(Wθ)]] (KL散度的定义)
= arg min ⁡ θ E q ( W ∣ θ ) [ l o g [ q ( W ∣ θ ) P ( D ) P ( D ∣ W ) P ( W ) ] ] = \argmin_{\theta} E_{q(W|\theta)}[log[\frac{q(W|\theta)P(D)}{P(D|W)P(W)}]] =θargminEq(Wθ)[log[P(DW)P(W)q(Wθ)P(D)]](贝叶斯理论)
= arg min ⁡ θ E q ( W ∣ θ ) [ l o g [ q ( W ∣ θ ) P ( D ∣ W ) P ( W ) ] ] = \argmin_{\theta} E_{q(W|\theta)}[log[\frac{q(W|\theta)}{P(D|W)P(W)}]] =θargminEq(Wθ)[log[P(DW)P(W)q(Wθ)]](P(D)不依赖于 θ \theta θ,消去)  (4)

公式中, q ( W ∣ θ ) q(W|\theta) q(Wθ) 表示给定正态分布的参数后,权重参数的分布。 P ( D ∣ W ) P(D|W) P(DW) 表示给定网络参数后,观测数据的似然; P ( W ) P(W) P(W) 表示权重的先验。

使用

L = − E q ( W ∣ θ ) [ l o g [ q ( W ∣ θ ) P ( D ∣ W ) P ( W ) ] ] L=- E_{q(W|\theta)}[log[\frac{q(W|\theta)}{P(D|W)P(W)}]] L=Eq(Wθ)[log[P(DW)P(W)q(Wθ)]]   (5)
来表示变分下界ELBO, 也就是公式(4)等价于最大化ELBO:
L = ∑ i l o g q ( w i ∣ θ i ) − ∑ i l o g P ( w i ) − ∑ j l o g P ( y j ∣ w , x j ) L=\sum_{i}log q(w_i|\theta_i) - \sum_ilogP(w_i) - \sum_j logP(y_j| w,x_j) L=ilogq(wiθi)ilogP(wi)jlogP(yjw,xj)   (6)

其中, D = ( x , y ) D={(x,y)} D=(x,y).
我们需要对公式(4)中的期望进行求导,但是,这里,我们使用对权重进行重参数的技巧:

w i = μ i + σ i × ϵ i w_i = \mu_i +\sigma_i\times \epsilon_i wi=μi+σi×ϵi   (7)

其中, ϵ i ∼ N ( 0 , 1 ) \epsilon_i\sim N(0,1) ϵiN(0,1)
于是,用 ϵ \epsilon ϵ 代替 w w w 后有:
∂ ∂ θ E q ( ϵ ) [ l o g [ q ( W ∣ θ ) P ( D ∣ W ) P ( W ) ] ] = E q ( ϵ ) [ ∂ ∂ θ l o g [ q ( W ∣ θ ) P ( D ∣ W ) P ( W ) ] ] \frac{\partial}{\partial \theta}E_{q(\epsilon)}[log[\frac{q(W|\theta)}{P(D|W)P(W)}]] = E_{q(\epsilon)}[\frac{\partial}{\partial \theta} log[\frac{q(W|\theta)}{P(D|W)P(W)}]] θEq(ϵ)[log[P(DW)P(W)q(Wθ)]]=Eq(ϵ)[θlog[P(DW)P(W)q(Wθ)]]   (8)

也就是说,我们可以通过 多个不同的 ϵ i ∼ N ( 0 , 1 ) \epsilon_i\sim N(0,1) ϵiN(0,1) ,求取 ∂ ∂ θ l o g [ q ( W ∣ θ ) P ( D ∣ W ) P ( W ) ] \frac{\partial}{\partial \theta} log[\frac{q(W|\theta)}{P(D|W)P(W)}] θlog[P(DW)P(W)q(Wθ)] 的平均值,来近似 KL 散度对 θ \theta θ 的求导。
此外,除了对 w w w 进行重采样之外,为了保证 θ \theta θ 参数取值范围包含这个实轴,对 δ \delta δ 进行重采样,可以令,
δ = l o g ( 1 + e ρ ) \delta=log(1+e^{\rho}) δ=log(1+eρ)   (9)

然后, θ = ( μ , ρ ) \theta = (\mu,\rho) θ=(μ,ρ).

2.3 BNN 算法流程

  1. N ( μ , l o g ( 1 + e ρ ) ) N(\mu, log(1+e^{\rho})) N(μ,log(1+eρ)) 中采样, 获得 w w w;
  2. 分别计算 l o g q ( w ∣ θ ) logq(w|\theta) logq(wθ) l o g p ( w ) log p(w) logp(w) l o g p ( y ∣ w , x ) . log p(y|w,x). logp(yw,x). 其中,计算 l o g p ( y ∣ w , x ) log p(y|w,x) logp(yw,x) 实际计算 l o g p ( y ∣ y p r e ) , y p r e = w ∗ x log p(y|y_{pre}),y_{pre}=w*x logp(yypre)ypre=wx。也就可以得到
    L = ∑ i l o g q ( w i ∣ θ i ) − ∑ i l o g P ( w i ) − ∑ j l o g P ( y j ∣ w , x j ) L=\sum_{i}log q(w_i|\theta_i) - \sum_ilogP(w_i) - \sum_j logP(y_j| w,x_j) L=ilogq(wiθi)ilogP(wi)jlogP(yjw,xj)   (6)
  3. 更新参数 θ ′ = θ − α ▽ θ L \theta' = \theta - \alpha \bigtriangledown_\theta L θ=θαθL.
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pyro贝叶斯神经网络是一种结合了贝叶斯推断和神经网络的统计模型。该模型利用Pyro库实现,可以用于进行概率编程和深度学习任务。 Pyro贝叶斯神经网络的核心思想是在神经网络模型中引入概率的概念,并利用贝叶斯推断的方法对模型的参数进行不确定性建模。与传统的神经网络相比,Pyro贝叶斯神经网络更能够灵活地处理未标记数据,能够为模型提供更加准确和可靠的预测结果。 在Pyro贝叶斯神经网络中,模型的参数不再是确定的值,而是服从概率分布的随机变量。这样带来的好处是可以在训练模型时对参数的不确定性进行建模,提高模型的鲁棒性。同时,模型的参数也可以根据新的数据进行不断更新和调整,从而实现动态的学习过程。 Pyro贝叶斯神经网络的建模过程主要包括定义模型结构、定义先验分布和定义观测数据的条件概率分布。在建模过程中,可以使用Pyro提供的各种分布函数和算子来构建模型的组件。通过贝叶斯推断的方法,可以从观测数据中推断出后验分布,从而得到模型参数的不确定性估计。 总之,Pyro贝叶斯神经网络是一种结合了贝叶斯推断和神经网络的强大统计模型。它能够灵活地处理不确定性,并为模型提供更准确和可靠的预测结果。它的出现进一步丰富了概率编程和深度学习领域的工具箱,为解决实际问题提供了一个强大的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值