备忘录——贝叶斯网络与贝叶斯深度网络学习思路总结

目录

一、贝叶斯公式

二、贝叶斯网络

定义

贝叶斯网络的3种结构形式:

1、head-to-head

2、tail-to-tail

3、head-to-tail

马尔科夫链

三、贝叶斯深度学习

贝叶斯深度学习如何进行预测?

贝叶斯深度学习如何进行训练?

贝叶斯深度学习和深度学习的区别

贝叶斯深度学习框架

四、总结

五、若需理解更加详细资源请从以下链接进入(参考资源):


一、贝叶斯公式

 

                                                                                      p(z|x)=\frac{p(x,z)}{p(x)}=\frac{p(x|z)p(z)}{p(x)}

其中,p(z|x)被称为后验概率(posterior),p(x,z) 被称为联合概率,p(x|z) 被称为似然(likelihood),p(z)被称为先验概率(prior),p(x)被称为证明(evidence)。

  如果再引入全概率公式

                                                                                              p(x)=\int p(x|z)p(z)dz

可以变成如下形式:

                                                                                      p(z|x)=\frac{p(x|z)p(z)}{\int p(x|z)p(z)dz}

  如果z是离散型变量,则将上式中分母积分符号\int改成求和符号 \sum 即可。(概率分布中的概率质量函数一般用大写字母P(\cdot )表示,概率密度函数一般用小写字母 p(\cdot )表示,为了简便,用连续型变量举例)

二、贝叶斯网络

定义

贝叶斯网络可称为信念网络,或有向无环图模型,也是一种概率图模型,是一种模拟人类推理过程中,因果关系的不确定性处理模型,其网络拓朴结构是一个有向无环图(DAG)。 

贝叶斯网络的有向无环图中的节点表示随机变量,它们可以是可观察到的变量,或隐变量、未知参数等。认为有因果关系(或非条件独立)的变量命题用箭头来连接。(若两个节点间以一个单箭头连接在一起,表示其中一个节点是“因(parents)”,另一个是“果(children)”,两节点就会产生一个条件概率值,即连接两个节点的箭头代表此两个随机变量是具有因果关系,或非条件独立)

例如,假设节点E直接影响到节点H,即E→H,则用从E指向H的箭头建立结点E到结点H的有向弧(E,H),权值(即连接强度)用条件概率P(H|E)来表示,如下图所示:

某个系统中涉及的随机变量,根据是否条件独立绘制在一个有向图中,就形成了贝叶斯网络。其主要用来描述随机变量之间的条件依赖,圆圈表示随机变量(random variables),箭头表示条件依赖(conditional dependencies)。

 设G = ( I,E)表示一个有向无环图(DAG),其中 I 代表图形中所有的节点的集合,E代表有向连接线段的集合,且令X = (x_{i}),i ∈ I 为其有向无环图中的某一节点 i 所代表的随机变量,若节点 X 的联合概率可以表示成:

 则称 X 为相对于一有向无环图 G 的贝叶斯网络,其中,pa(i)表示节点 i 之“因”,或称pa(i)是 i 的 parents(父母)。 

此外,对于任意的随机变量,其联合概率可由各自的局部条件概率分布相乘而得出:

如下图所示,便是一个简单的贝叶斯网络:

根据简单贝叶斯网络的关系列出下式:

贝叶斯网络的3种结构形式:

如图示的贝叶斯网络,可以表示为:

x_{1}x_{2}独立(对应head-to-head),x_{6}x_{7}x_{4}给定的条件下独立(对应tail-to-tail)。

1、head-to-head

表示并可以简化为:

c未知的条件下,a、b被阻断(blocked),是独立的,称之为head-to-head条件独立,对应前节那张图中的x_{1}x_{2}独立。

2、tail-to-tail

  • 在 c 未知的时候,有:

                                                                       P(a,b,c)=P(c)*P(a|c)*P(b|c)

此时,无法得出P(a,b)=P(a)P(b),即c未知时,a、b不独立。

  • 在 c 已知的时候,有:

                                                                                      P(a,b|c)=\frac{P(a,b,c)}{P(c)}

然后将P(a,b,c)=P(c)*P(a|c)*P(b|c)带入式子中,得到:

                                                    P(a,b|c)=\frac{P(a,b,c)}{P(c)}=\frac{P(c)*P(a|c)*P(b|c)}{P(c)}=P(a|c)*P(b|c)

即c已知时,a、b独立。

所以,在c已知的条件下,a,b被阻断(blocked),是独立的,称之为tail-to-tail条件独立,对应前节那张图中的“x_{6}x_{7}x_{4}给定的条件下独立”。

3、head-to-tail

  • c未知时,有:

                                                                                 P(a,b,c)=P(a)*P(c|a)*P(b|c)

无法推出P(a,b)=P(a)P(b),即c未知时,a、b不独立。

  • c已知时,有:

                                                                                               P(a,b|c)=\frac{P(a,b,c)}{P(c)}

且根据P(a,c)=P(a)*P(c|a)=P(c)*P(a|c),可化简得到:

 所以,在c给定的条件下,a,b被阻断,是独立的,称之为head-to-tail条件独立,实际为一个链式网络。

马尔科夫链

三、贝叶斯深度学习

备忘录——贝叶斯网络与贝叶斯深度网络学习思路总结_第1张图片

 

在深度学习中,w_{i}({i = 1,...,n})和 b 都是一个确定的值,例如w_{1}= 0.1,b = 0.2 。即使我们通过梯度下降(gradient decent)更新 w_{i}= w_{i}-\alpha \cdot \frac{\partial J}{\partial w_{i}},我们仍未改变 “w_{i}b 都是一个确定的值” 这一事实。

那什么是贝叶斯深度学习?将 w_{i}b由确定的值变成分布,这就是贝叶斯深度学习。

贝叶斯深度学习认为每一个权重和偏置都应该是一个分布,而不是一个确定的值。如下图所示,给出一个贝叶斯深度学习示意图:

备忘录——贝叶斯网络与贝叶斯深度网络学习思路总结_第2张图片

上图为一个4*3*1的贝叶斯神经网络。(输入神经元个数为4,中间隐含层神经元个数为3,输出层神经元个数为1)

贝叶斯深度学习如何进行预测?

由于网络的权重和偏置都是分布,于是通过采样获得权重和偏置。使得其像非贝叶斯神经网络那样进行前向传播,可以对贝叶斯神经网络的权重和偏置进行采样,得到一组参数,然后像非贝叶斯神经网络那样使用即可。

当然,也可以对权重和偏置的分布进行多次采样,得到多个参数组合,参数的细微改变对模型结果的影响在这里就可以体现出来。这也是贝叶斯深度学习的优势之一,多次采样最后一起得到的结果更加鲁棒。

贝叶斯深度学习如何进行训练?

对于非贝叶斯神经网络,在各种超参数固定的情况下,训练一个神经网络最终目的就是得到各个层之间的权重和偏置。而对于贝叶斯深度学习,我们训练的目的就是得到权重和偏置的分布。此时就要用到贝叶斯公式了。

给定一个训练集 D=\left \{ (x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m}) \right \},我们用 D训练一个贝叶斯神经网络,则贝叶斯公式可以写为如下形式:

                                                                                        p(w|x,y)=\frac{p(y|x,w)p(w)}{\int p(y|x,w)p(w)dw}

上式中,想要得到的是w的后验概率p(w|x,y) 。先验概率 p(w)无论是根据经验或者瞎猜,总之是已知的,例如初始时将p( w)设成标准正态分布,似然p(y|x,w)是一个关于w的函数。当w等于某个值时,上式的分子很容易就能算出来,但我们想要得到后验概率p(w|x,y),还要将分母算出来。但事实上,分母的积分要在w 的取值空间上进行,但是神经网络的单个权重的取值空间可以是实数集R,而这些不同层之间的权重构成的空间将相当复杂,基本没法积分。所以问题就出现在分母的计算上。

贝叶斯深度学习的训练方法目前有以下几种:(请参考Deep Bayesian Neural Networks. -- Stefano Cosentino)
(1)Approximating the integral with MCMC:用 MCMC(Markov Chains Monte Carlo) 采样去近似分母的积分。
(2)Using black-box variational inference (with Edward):直接用一个简单点的分布 qq 去近似后验概率的分布 pp,即不管分母怎么积分,直接最小化分布 qq 和 pp 之间的差异,如可以使用 KL散度 计算。详情可以参考贝叶斯编程框架 Edward 中的介绍。
(3)Using MC (Monte Carlo) dropout:蒙特卡罗 dropout,简单而强大,不改变一般神经网络结构,只是要求神经网络带 dropout 层,训练过程和一般神经网络一致,只是测试的时候也打开 dropout,并且测试时需要多次对同一输入进行前向传播,然后可以计算平均和统计方差。

贝叶斯深度学习和深度学习的区别

在于权重和偏置是否为离散分布的。贝叶斯深度学习还有以下优点:
(1)贝叶斯深度学习比非贝叶斯深度学习更加的鲁棒。因为可以进行多次采样,贝叶斯深度学习中可以解决在深度学习中对权重进行细微改变所造成的影响。
(2)贝叶斯深度学习可以提供不确定性,且不再是使用softmax生成概率值。(详情参见 Deep Learning Is Not Good Enough, We Need Bayesian Deep Learning for Safe AI)。

贝叶斯深度学习框架

  • 珠算
  • Edward
  • TensorFlow Probability

四、总结

贝叶斯网络(Bayesian network),又称信念网络(belief network)或是有向无环图模型(directed acyclic graphical model),是一种概率图型模型。

但是贝叶斯神经网络(Bayesian neural network)是贝叶斯和神经网络的结合,贝叶斯神经网络和贝叶斯深度学习的概念可以混用。

 

五、若需理解更加详细资源请从以下链接进入(参考资源):

贝叶斯网络:https://cloud.tencent.com/developer/article/1476046

贝叶斯深度学习:https://www.cnblogs.com/wuliytTaotao/p/10281766.html

你可能感兴趣的:(备忘录)