从贝叶斯角度思考神经网络

01

理解模型所不能胜任的工作是重要的,无论是从实践者的角度,还是对不同机器学习应用的端侧使用者来说。我们在先前的博客里已经讨论了不同类型的不确定性,阐释了如何使用不确定性解释和调试模型。

在这篇博客里,我们将要讨论不同的在深度神经网络中获取不确定性的方法。我们先从贝叶斯的视觉来看待神经网络。

02

贝叶斯学习 101

贝叶斯统计使我们能够基于证据(数据)和先验知识得到关于现实世界的结论。其常常与仅仅考虑证据的频率统计学作比较。先验知识描述了我们关于生成数据的模型或模型权重的信念。我们可以将该信念表示为模型权重上的一个先验分布p(w)。

当我们收集更多数据,我们更新先验分布并基于贝叶斯法则将其转换为后验概率分布,这一过程称为贝叶斯更新:

该等式引入贝叶斯学习中的另一个主角——似然,定义为p(y|x,w)。它表示给定模型权重下数据的可能性。

03

贝叶斯视角下的神经网络

神经网络的目标是估计似然p(y|x,w),即使你明确没有这样做,也是确实如此,例如,当你最小化MSE(均方误差)的时候。

我们可以通过最大化似然估计得到最优的模型权重。

04

或者,我们可以利用表示为关于权重的先验分布的先验知识,最大化后验分布。这一方法称为最大化后验估计(Maximum Aposteriori Estimation):

表示先验的项logP(w),作为一个正则项。若选择均值为0的高斯分布作为先验,你将得到一个在数学上等价的L2的正则项。

现在我们先将神经网络看作概率性的产物,让事情变得有趣点。首先,没有人要求在训练过程结束后我们必须输出一个权重集合。如若我们学习一个关于权重分布的模型,而不是学习模型的权重,会怎样呢?这让我们得以估计关于权重的不确定性。接下来,我们该怎么做?

05

只要你开始尝试使用贝叶斯,你就回不去啦

我们重新开始对权重进行预先分配,并旨在找到它们的后验分布。这一次,我们不是直接优化网络的权重,而是对所有可能的权重(称为边缘化)进行平均。

在推理中,我们不是采用最大化后验分布的单一权重集(或者如果我们使用MLE,则是可能性),而是考虑所有可能的权重,并通过它们的概率加权。这是通过使用积分来实现的:

06

x是我们想要推断y的数据点,X,Y是训练数据。第一项p(y | x,w)是我们很好的旧似然,第二项p(w | X,Y)是给定数据的模型权重的后验概率。

我们可以将其视为由每个模型的概率加权的模型集合。实际上,这相当于无限数量的神经网络的集合,具有相同的架构但具有不同的权重。

我们达到了吗?

事实证明,在大多数情况下,这种积分是难以处理的。这是因为无法通过分析评估后验概率。

这个问题并非贝叶斯神经网络所独有。在很多贝叶斯学习的情况下,你会遇到这个问题,多年来已经开发出许多克服这个问题的方法。我们可以将这些方法分为两类:变分推理和抽样方法

07

蒙特卡洛抽样

我们出现了问题。后验分布是难以处理的。如果不是计算真实分布上的积分而不是计算从中得到的样本的平均值,那么该怎么办呢?一种方法是马尔可夫链蒙特卡罗 - 你构造一个马克夫链,所需的分布作为其平衡分布。

变分推理

另一种解决方案是使用与易处理家庭不同的分布来近似真实难以处理的分布。为了测量两个分布的相似性,我们可以使用KL分歧:

08

设变分分布 q 的变分参数为θ ,目标是找到特定的θ 值最小化 KL 散度。

先来看看已知信息:第一项是变分分布与先验分布之间的 KL 散度,第二项是关于 qθ的似然。因为要求的是解释数据最好的 qθ,另外能够尽可能地靠近先验分布。这只是将引入正则化的另一种方法。

现在可以基于 qθ做预测:

上面的公式来源于 2015 年 DeepMind 发表的论文。类似的想法在 2011 年的时候被 graves 提出,更早的是由 Hinton 和 vanCamp 在 1993 年提出。在 NIPS 的 Keynote talk 上,贝叶斯深度学习工作室展示了这些思想在这些年来的演变。

但是如果不想从头训练一个模型又该怎么办呢?如果已有一个训练过得模型,我们如何基于它获得不确定性估计呢?这可行吗?

结果证明如果在训练时进行 dropout,可以实现上述想法。

09

dropout是不确定性的一种手段 

dropout是一种很好用的练习器作为正规则。在训练时间,你随机抽样节点并将它们删除,即 - 将它们的输出设置为0.动机?您不希望过度依赖特定节点,这可能意味着过度拟合。

2016年,Gal和Ghahramani表明,如果您在推理时间应用 dropout  ,您可以轻松获得不确定性估算:

1.多次推断y | x,每次采样一组不同的节点退出。

2.平均预测以获得最终预测E(y | x)。

3.计算预测的样本方差。

而已!你得到了方差的估计!这种方法背后的直觉是,训练过程可以被认为是同时训练2 ^ m个不同模型 - 其中m是网络中节点的数量:未被丢弃的每个节点子集定义新模型。所有模型共享它们不会丢弃的节点的权重。在每批中,训练随机抽样的这些模型组。

训练结束后,你手中就会拥有一系列模特。如果你在推理时使用这个整体,如上所述,你会得到整体的不确定性。

10

采样方法与变分推理

就偏差 - 方差权衡而言,变分推理具有较高的偏差,因为我们选择了分布族。这是我们正在做的一个强有力的假设,并且作为任何强有力的假设,它引入了偏见。但是,它很稳定,方差很小。

另一方面,采样方法具有较低的偏差,因为我们不对分布做出假设。这是以高差异为代价的,因为结果取决于我们绘制的样本

11

最后的想法

能够估计模型不确定性是一个热门话题。在医疗助理和自动驾驶汽车等高风险应用中了解它非常重要。它也是一个有价值的工具,可以了解哪些数据可以使模型受益,因此我们可以去获取它。

在这篇文章中,我们介绍了一些获得模型不确定性估计的方法。还有更多的方法,所以如果您对此感到高度不确定,请继续寻找更多数据

从Bayes角度理解Deep learning相关推荐

  1. 干货丨科普丨大牛的《深度学习》笔记,Deep Learning速成教程

    深度学习,即Deep Learning,是一种学习算法(Learning algorithm),亦是人工智能领域的一个重要分支.从快速发展到实际应用,短短几年时间里,深度学习颠覆了语音识别.图像分类. ...

  2. Deep Learning(深度学习)学习笔记整理系列

    一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫游一样,是人类最美好的梦想之一.虽然计算机技术已经取得了长足的进步,但是到目前为止,还没有一台电脑能产生& ...

  3. Deep Learning(深度学习)学习笔记整理

    http://blog.csdn.net/zouxy09/article/details/8775360 一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫 ...

  4. 大牛deep learning入门教程

    雷锋网(搜索"雷锋网"公众号关注)按:本文由Zouxy责编,全面介绍了深度学习的发展历史及其在各个领域的应用,并解释了深度学习的基本思想,深度与浅度学习的区别和深度学习与神经网络之 ...

  5. 【深度学习】大牛的《深度学习》笔记,Deep Learning速成教程

    深度学习,即Deep Learning,是一种学习算法(Learning algorithm),亦是人工智能领域的一个重要分支.从快速发展到实际应用,短短几年时间里,深度学习颠覆了语音识别.图像分类. ...

  6. 大牛deep learning集合

    作者1:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 作者1:denghp83 出处:http://blog.csdn.net/denghp83/ ...

  7. Deep Learning(深度学习)之(三)Deep Learning的常用模型或者方法

    转自:http://blog.csdn.net/boon_228/article/details/51700569 Deep Learning(深度学习)之(三)Deep Learning的常用模型或 ...

  8. 大牛的《深度学习》笔记,Deep Learning速成教程

    本文由Zouxy责编,全面介绍了深度学习的发展历史及其在各个领域的应用,并解释了深度学习的基本思想,深度与浅度学习的区别和深度学习与神经网络之间的关系. 深度学习,即Deep Learning,是一种 ...

  9. [深度学习]DEEP LEARNING(深度学习)学习笔记整理

    转载于博客http://blog.csdn.net/zouxy09 一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫游一样,是人类最美好的梦想之中的一个. ...

最新文章

  1. ubuntu-make/makefile/cmake
  2. PowerDesigner导入Excel/CSV
  3. STM32下SD卡驱动详解
  4. superhot预告片下载_预告片:裸指关节SOA
  5. vc 6.0 显示文件全路径_配送路径规划思考(十二)
  6. LeetCode:Combinations
  7. 我的iPhone+Mac+Omnifocus实践GTD和ZTD的几点心得
  8. 线性回归(一)---一元线性回归
  9. 018 HDFS中,namenode与datanode的交互
  10. java线程cpu 1000_CPU突然飙升到300%,Dubbo活动线程数直接飙到1000
  11. 今天终于找到了一款windows下的Zcash钱包(ZEC钱包),推荐给大家
  12. 对sql文件进行读取并通过JDBC批量执行
  13. 高等数学张宇18讲 第三讲 一元函数微分学的概念与计算
  14. isbn书号查询php代码,php根据isbn书号查询amazon网站上的图书信息的示例
  15. Linux I/O编程
  16. NR LDPC 03- Tanner
  17. 前景检测算法(七)--ViBe算法
  18. Java编程入门与应用 P104—例4-12(学生管理系统——密码的重复验证)
  19. 如何反制互联网精准广告定向
  20. arrive at/agree with/account for等动词词组

热门文章

  1. 操作系统之进程管理:7、进程同步、进程互斥
  2. (数据库系统概论|王珊)第三章关系数据库标准语言SQL-第二、三节:数据定义
  3. 从Spring Boot信息泄露到AWS控制台劫持(攻破aws亚马逊服务器)
  4. centos7下安装python3.7.0以上版本时报错ModuleNotFoundError: No module named ‘_ctypes‘的解决办法
  5. sqlmap 注入方式、使用总结
  6. Celery 框架学习笔记(分布式框架)
  7. golang 指针总结(与C/C++区别不大,就是不可以p+1偏移)
  8. 洛谷 P1064 金明的预算方案【有依赖的分组背包】
  9. Alpha 冲刺 (1/10)
  10. 三层架构 android访问MSSQL数据库 程序 (服务器端)