深度贝叶斯神经网络(Deep Bayesian Neural Networks)实现方法

本文内容摘自: https://stefano-cosentino.medium.com/deep-bayesian-neural-networks-952763a9537

1. 目的是什么?

任何深度网络都有参数,通常以权重 (w1,w2,...)(w_1, w_2, ...)(w1​,w2​,...) 和偏差 (b1,b2,...)(b_1, b_2, ...)(b1​,b2​,...)的形式存在。传统的方法(非贝叶斯)是通过最大似然估计(maximum likelihood estimation)仅学习这些参数的最优值。这些值都是标量(scalars),如 w1=0.8w_1=0.8w1​=0.8 或 b1=3.1b_1=3.1b1​=3.1。

而,贝叶斯方法对每个参数相关的分布(distributions)感兴趣。例如,在训练贝叶斯网络收敛后,上述的两个参数可能可以由以下两条高斯曲线(Gaussian curves)描述。

(训练传统网络和贝叶斯网络收敛后获得的两个参数(w1w_1w1​ 和 b1b_1b1​)的表示。)

拥有一个分布而不是单一的值有很多好处。首先,可以从分布中多次取样,查看对模型预测的影响。例如,经过多次取样,模型给出一致的预测,那么我们可以说网络对其做出的预测是自信的(confident)。

2. 难点是什么?

估计这些参数的分布是不容易的。这通常称为后验密度(posterior densities),并使用贝叶斯公式进行估计。可以表示为:

p(w∣x,y)=p(x,y∣w)p(w)p(x,y)=p(x,y∣w)p(w)∫p(x,y∣w)p(w)dwp(w|x,y) = \frac{p(x,y|w)p(w)}{p(x,y)} =\frac{p(x,y|w)p(w)}{\int p(x,y|w)p(w)dw} p(w∣x,y)=p(x,y)p(x,y∣w)p(w)​=∫p(x,y∣w)p(w)dwp(x,y∣w)p(w)​

(贝叶斯公式。xxx 和 yyy 是输入和输出。分母中的积分需要对模型参数 www 所有可能的值进行积分----这使计算变得非常困难。)

难点是分母----也称为模型证据(model evidence)。它需要对所有可能的参数值(即所有权重和偏差空间)进行积分,而这在实际中是做不到的。

做为替代,可以使用以下的伪数字方法,去近似积分的解。

  • 用 MCMC 近似积分的方法
  • 使用黑盒子变分推理(使用 edward 包)
  • 使用 MC dropout

2.1 使用 MCMC 近似积分

由于计算贝叶斯公式的积分的解很难,可以通过使用 MCMC(马尔科夫链蒙特卡洛) 来近似积分的解。MCMC背后的原理真的很酷,建议大家阅读这个博客,通过代码和示例来理解 MCMC 背后的原理。撇开数学,这种方法是三个方法中最慢和最不吸引人的。

  • 优点:理论上,MCMC最终可以获得最优的结果,其近似值接近于后验。
  • 缺点:在实践中,它需要很长的时间来收敛,如果它曾经能收敛的话。

2.2 使用变分推理

变分推理(variational inference)是一种估计密度函数的方法,通过选择一个我们已知的分布(例如高斯),并逐步改变其参数,直到它看起来像我们想要计算的那个分布,即后验。改变参数不再需要计算复杂的微积分,这是一个优化过程,导数通常比积分更容易计算。我们要优化的由我们自己"捏造"的分布称为变分分布(variational distribution)。

  • 优点:它比普通的MCMC方法快,而且通过使用edwar这样的函数包可以在几分钟内构建和运行贝叶斯网络。
  • 缺点:对于非常深的贝叶斯网络来说,它可能会变得很慢,而且性能并不保证总是最佳的。

2.3 使用 MC dropout

Monte Carlo dropout (蒙特卡洛 dropout) 是2016年提出的一个理论1,它通过使用一种称为 droput 的正则化方法提供了贝叶斯解释。

  • 变分推理是一种贝叶斯方法,通过使用任意的分布,即前面介绍的变分分布来估计后验
  • 而,dropout 则是神经网络的一种正则化方法,在训练期间,部分神经元被随机打开或关闭,以防止网络依赖于特定的神经元。

MC dropout 的关键思想是:dropout 可以用来进行变分推理,其中变分分布来自于伯努利分布。MC 指的是 dropout 的采样以"Monte Carlo " 的方式进行。

伯努利分布 (Bernoulli distribution),又名 0−10-10−1 分布,是一种离散型概率分布。若伯努利试验成功,则伯努利随机变量取值为 111;若试验失败,则取值为 000。

在实践中,通过 MC dropout 可以将传统网络变成贝叶斯网络(在训练和验证期间,通过对每一层使用 dropout);这相当于从伯努利分布中取样和度量模型的确信度(certainty)(多次取样预测的一致性)。也可以用 其他2 变分分布进行实验。

  • 优点:将现有的深度网变成贝叶斯网是容易的。比其他技术要快,而且不需要推理框架。
  • 缺点:对于计算要求高的(如实时)应用来说,在测试阶段的多次取样和预测可能过于昂贵。
#mermaid-svg-6rzVn5AXBmgqA9fR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6rzVn5AXBmgqA9fR .error-icon{fill:#552222;}#mermaid-svg-6rzVn5AXBmgqA9fR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-6rzVn5AXBmgqA9fR .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-6rzVn5AXBmgqA9fR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-6rzVn5AXBmgqA9fR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-6rzVn5AXBmgqA9fR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-6rzVn5AXBmgqA9fR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-6rzVn5AXBmgqA9fR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-6rzVn5AXBmgqA9fR .marker.cross{stroke:#333333;}#mermaid-svg-6rzVn5AXBmgqA9fR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-6rzVn5AXBmgqA9fR .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-6rzVn5AXBmgqA9fR .cluster-label text{fill:#333;}#mermaid-svg-6rzVn5AXBmgqA9fR .cluster-label span{color:#333;}#mermaid-svg-6rzVn5AXBmgqA9fR .label text,#mermaid-svg-6rzVn5AXBmgqA9fR span{fill:#333;color:#333;}#mermaid-svg-6rzVn5AXBmgqA9fR .node rect,#mermaid-svg-6rzVn5AXBmgqA9fR .node circle,#mermaid-svg-6rzVn5AXBmgqA9fR .node ellipse,#mermaid-svg-6rzVn5AXBmgqA9fR .node polygon,#mermaid-svg-6rzVn5AXBmgqA9fR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-6rzVn5AXBmgqA9fR .node .label{text-align:center;}#mermaid-svg-6rzVn5AXBmgqA9fR .node.clickable{cursor:pointer;}#mermaid-svg-6rzVn5AXBmgqA9fR .arrowheadPath{fill:#333333;}#mermaid-svg-6rzVn5AXBmgqA9fR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-6rzVn5AXBmgqA9fR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-6rzVn5AXBmgqA9fR .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-6rzVn5AXBmgqA9fR .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-6rzVn5AXBmgqA9fR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-6rzVn5AXBmgqA9fR .cluster text{fill:#333;}#mermaid-svg-6rzVn5AXBmgqA9fR .cluster span{color:#333;}#mermaid-svg-6rzVn5AXBmgqA9fR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-6rzVn5AXBmgqA9fR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}


  1. https://arxiv.org/abs/1506.02142 ↩︎

  2. https://arxiv.org/abs/1611.01639 ↩︎

深度贝叶斯神经网络(Deep Bayesian Neural Networks)实现方法相关推荐

  1. 结合随机微分方程,多大Duvenaud团队提出无限深度贝叶斯神经网络

    ©作者 | 小舟.陈萍 来源 | 机器之心 来自多伦多大学和斯坦福大学的研究者开发了一种在连续深度贝叶斯神经网络中进行近似推理的实用方法. 把神经网络的限制视为无限多个残差层的组合,这种观点提供了一种 ...

  2. 贝叶斯神经网络的 MCMC 训练 MCMC Training of Bayesian Neural Networks

    from: http://www.fields.utoronto.ca/talks/MCMC-Training-Bayesian-Neural-Networks 一.贝叶斯神经网络模型 Bayesia ...

  3. 贝叶斯神经网络计算核裂变碎片产额

    作者丨庞龙刚 单位丨华中师范大学 研究方向丨高能核物理.人工智能 今天介绍一篇北京大学物理系使用贝叶斯神经网络计算核裂变碎片产额的文章.这篇文章发表在 PRL 上,业内同行都很感兴趣.这里对我们大同行 ...

  4. 机器学习与高维信息检索 - Note 5 - (深度)前馈神经网络((Deep) Feedforward Neural Networks)及基于CVXOPT的相关实例

    Note 5 - (深度)前馈神经网络((Deep) Feedforward Neural Networks)及相关实例 5.1 FNN的定义和动机 粗略地说,前馈神经网络(FNN)是一种特殊的函数类 ...

  5. 优化概率神经网络_Bayesian Neural Networks:贝叶斯神经网络

    贝叶斯神经网络,简单来说可以理解为通过为神经网络的权重引入不确定性进行正则化(regularization),也相当于集成(ensemble)某权重分布上的无穷多组神经网络进行预测. 本文主要基于 C ...

  6. 贝叶斯深度神经网络_深度学习为何胜过贝叶斯神经网络

    贝叶斯深度神经网络 Recently I came across an interesting Paper named, "Deep Ensembles: A Loss Landscape ...

  7. 《Understanding the Effective Receptive Field in Deep Convolutional Neural Networks》理解深卷积神经网络中的有效感受野

    前言 论文推荐来自B站UP-启释科技,该up对感受野和卷积有深刻的理解 推荐感受野视频讲解: 深度理解感受野(一) 深度理解感受野(二) 深度理解感受野(三) 深度理解感受野(四) 深度理解感受野(五 ...

  8. 吴恩达深度学习笔记——卷积神经网络(Convolutional Neural Networks)

    深度学习笔记导航 前言 传送门 卷积神经网络(Convolutional Neural Networks) 卷积神经网络基础(Foundations of Convolutional Neural N ...

  9. 深度模型压缩论文(01)- Meta Filter Pruning to Accelerate Deep Convolutional Neural Networks

    文章目录 1.摘要和介绍 1.1摘要部分 2.背景和方法 2.1 背景 2.2 贡献 2.3 方法 3.实验和结果 3.1 实验 3.2 结果 4.总结和展望 4.1 总结 4.2 展望 本系列是在阅 ...

  10. 浅析贝叶斯神经网络(Based on Variational Bayesian)

    贝叶斯神经网络简介 对于一个神经网络来说,最为核心的是如何根据训练集的数据,得到各层的模型参数,使得Loss最小,因其强大的非线性拟合能力而在各个领域有着重要应用.而其问题是在数据量较少的情况下存在严 ...

最新文章

  1. android 线程list.add,ListenableWorker 中的线程处理
  2. 学校计算机二级模拟上机能看分数吗,全国计算机二级考试机试考完怎么储存的...
  3. SpringCloud(三) Eureka之服务注册发现以及实现工程间调用
  4. [JZOJ P1281] [DP]背包的第k优解
  5. u盘启动 联想一体机_联想笔记本电脑怎么重装win10系统
  6. mysql不是内部或外部命令,也不是可运行的程序或批处理文件
  7. 开源APP源代码、游戏源代码
  8. Mac上几款好用磁盘分析备份管理工具
  9. 新手SEO优化原创与伪原创
  10. SpringBoot 报错锦集
  11. O光 E光 双折射现象
  12. 微信支付应用签名大小写、errorCode=-6,errorCode=-1
  13. 如何提高亚马逊排名?亚马逊排名规则有哪些?
  14. 伦茨科技-智能语音遥控器
  15. Keil中代码前进后退跳转快捷键修改
  16. PHP对接僵尸,php – 终止从套接字服务器分叉的僵尸子进程
  17. 《高斯数学日记》——简介
  18. sql注入新手入门 从实战讲解SQL注入(手动注入+MySQL+靶场源码)
  19. 使用SR替代LDP,配置ospf sham-link
  20. 肉这么做越吃越瘦!鲜嫩多汁!每次只需 5 分钟,比叫外卖还快!

热门文章

  1. adb命令刷机vivox20_求救VIVO X20的 ROOT可行的方法。
  2. FTP 客户端C实现
  3. t470键盘拆解_张大妈 ThinkPad T470p 首篇 开箱拆机晒物
  4. rx560d linux 图形设计,RX 560D对比RX 560哪个好?RX560D与560的区别对比详细评测
  5. hackerrank答案
  6. 嵌入式软件测试怎么实现自动化测试?
  7. PHP汉字转化为拼音
  8. NS方程求解-PointNet和升维思想(效果很差)
  9. 恒生O32系统的前世今生
  10. 【Arc GIS 零基础教学】环境专业专题图层水系图的绘制方法