贝叶斯神经网络(系列)第一篇
本文为 AI 研习社编译的技术博客,原标题 :
Bayesian Neural Network Series Post 1: Need for Bayesian Neural Networks
作者 | Kumar ShridharFollow
翻译 | mashagua
校对 | 酱番梨 审核 | 约翰逊·李加薪 整理 | 立鱼王
原文链接:
https://medium.com/neuralspace/bayesian-neural-network-series-post-1-need-for-bayesian-networks-e209e66b70b2
图1:点估计作为权重的神经网络 vs 概率分布作为权重的神经网络。
这篇文章是贝叶斯卷积网络八个系列中的第一篇文章。 这些博客的大致结构如下:
贝叶斯网络的应用场景
为了更好的理解贝叶斯网络所需要的背景知识
一些在贝叶斯神经网络方面最新的成果
基于变分推理的贝叶斯卷积神经网络
利用PyTorch 建立你自己的贝叶斯卷积神经网络
贝叶斯神经网络的不确定性估计
贝叶斯神经网络中的模型修剪
在其他领域的应用(超级分辨率,GAN等...)
让我们通过本篇博客理解贝叶斯神经网络的需求场景来开始这个系列。
问题陈述
深度神经网络(DNNs)是通过学习示例来学习执行任务,而无需事先了解任务的连接系统。它们可以轻松扩展到数百万个数据点,并且可以通过随机梯度下降进行优化。
卷积神经网络(CNN)是DNNs的一个变体,已经在图像分类领域超越了人类的准确性。由于CNNs可以拟合各种非线性数据点,因此它们需要大量的训练数据。这会导致CNN和一般的神经网络经常在每类具有少量的训练样例上造成过拟合。神经网络模型可以在训练集上拟合的很好,但是不能很好的预测未曾出现的数据。这种情况经常会造成神经网络无法正确评估训练数据中的不确定性,从而导致对正确的类别,预测或行动的过度自信的决定。
如果博客的这部分对你来说有点超前,那么建议你从这里重新回顾一下深度学习的基本知识。
为了理解这部分,让我们考虑一个猫狗图像的二分类训练任务。现在,当一个豹子的图片出现在测试集中,理想情况下模型应该预测它既不是狗也不是猫(狗的概率为50%,猫类概率为50%)。但是,由于输出层的softmax函数可以获得概率分数,它会调整一个类输出概率分数并最大化另一个类,从而导致一个类的置信度过高。这是点估计神经网络的主要问题之一。
注意到点估计应用在神经网络,其中权重由单个节点表示。另一方面,一个贝叶斯神经网络的权重是由它的分布表示,可见图一。
但是我们真的需要贝叶斯神经网络吗?在工程实践中我们用各种正则化技巧去控制过拟合,比如,提前终止迭代,权重衰减,L1或者L2正则化以及最近流行的并且经验上非常有效的技术,丢弃一些神经网络的节点。
如果我们通过对模型进行正则化可以解决决策置信度过高并且防止模型过拟合,那么问题仍然存在:为什么我们需要贝叶斯神经网络?
简言之,答案是:当前神经网络架构中缺少预测中的不确定性度量,但贝叶斯神经网络将其纳入其中。
发展现状
深度神经网络已经成功的应用在很多领域,包括一些非常敏感的领域,像医疗,安防,欺诈性交易等等。这些领域严重依赖模型预测的准确度,并且甚至一个过度自信的决策可以导致大问题。并且,这些领域的数据集非常不平衡(百万分之一的欺诈交易,接近5%的癌症阳性,不足百分之一的垃圾邮件),这种情况会导致模型在采样的类别上发生过拟合现象。
从概率论的角度来说,使用点估计作为基于任何分类的权重是不合理的。另一方面,贝叶斯神经网络在过拟合现象上更加鲁棒,并且能很好的从小的数据集当中学习。贝叶斯方法通过其参数以概率分布的形式进一步提供不确定性估计(见图1)。同时,通过使用先验概率分布来整合参数,在训练期间在许多模型上计算平均值,这给网络提供正则化效果,从而防止过度拟合。
贝叶斯神经网络的实用性
贝叶斯神经网络通过参数进行后验推断从而防止过拟合在理论上来说是一个有吸引力的方法 ,然而,之前从未成功地对CNN的内核(也称为滤波器)进行分布建模,可能是因为在实际应用中常用的大量参数和极大模型。
即使是一个数量非常少的参数集,利用贝叶斯神经网络进行推断后验估计也是一个非常困难的任务。通常使用模型后验的近似值,变分推理是一种流行的方法。在这里,人们将使用简单的变分分布(例如高斯分布)对后验进行建模,并尝试使分布的参数尽可能接近真实的后验。这个通过最小化简单的变分分布和真实后验分布的Kullback-Leibler差异来完成。许多人过去都采用过这种方法来处理标准神经网络模型。
但是用变分方法来估计贝叶斯网络中的后验估计计算量非常大。使用高斯近似分布会大大增加模型参数的数量,而不会大幅增加模型容量。例如, Blundell et al. (2015),使用贝叶斯神经网络后验近似的高斯分布,并且模型参数的数量加倍,但报告与使用丢弃部分节点的传统方法有着相同的预测性能。这使得该方法在实践中不适合与CNN一起使用,因为参数数量的增加代价太大
接下来我们该怎么做?
有很多种方法构建贝叶斯神经网络(在第三篇博客中我们会考虑到很多种)。然而,在这个系列中,我们将专注于使用Backprop的Bayes方法构建贝叶斯CNN。关于神经网络权重的贝叶斯精确推断是难以处理的,因为参数的数量非常大,并且神经网络的功能形式不适合精确积分。因此我们将会把难以处理的真实后验估计概率分布p(w|D)用带有变分的概率分布q_θ(w|D)去做近似,它符合高斯分布μ∈ℝ^ d和σ∈ℝ^ d的性质,表示为N(θ |μ,σ²),其中d是定义概率分布的参数总数。。这些高斯变分后验分布的形状由它们的方差 σ²决定,表达了一种对于每个模型参数估计的不确定性。
由Graves(2011)提出的上述的图形直觉。
如果你不能准确的理解我们之前的篇章段落,没关系。在下一篇博客中我们将会介绍理解贝叶斯神经网络所用到的所有基础知识。
接下来的几周我们期望做的事情:
我们将看到Backprop方法如何将Bayes有效地应用于CNN。我们将介绍应用两个卷积运算的想法,一个用于均值,一个用于方差。
我们将会看到模型如何从多个简单的模型平均中学习到更为丰富的表现形式和预测结果。
我们将看到,贝叶斯CNN的所提出的通用且可靠的变分推理方法可以应用于各种CNN架构,而不受其性能的任何限制。我们将在PyTorch中对模型进行编码,并将结果与点估计网络进行比较。
我们将估计贝叶斯神经网络中的任意和认知不确定性。更进一步,我们将凭经验证明不确定性如何降低,使得网络做出的决策随着训练准确性的提高而变得置信度更高。
我们将会学习到我们的方法通常使模型的参数增加两倍,并且我们可以通过一个关于梯度的无偏的蒙特卡洛模拟方法训练一个无穷集合。
我们将L1范数应用于训练的模型参数并修剪非零值的数量。另外我们会用一个预训练好的模型去微调模型从而达到减少模型参数而不改变模型准确度的目的。
最后,我们将会应用贝叶斯CNN应用到图像超分辨率和生成对抗网络等任务,我们将结果与相应领域中的其他重要架构进行比较。
想要继续查看该篇文章相关链接和参考文献?
点击【贝叶斯神经网络(系列)第一篇】或长按下方地址:
https://ai.yanxishe.com/page/TextTranslation/1465
AI研习社今日推荐:雷锋网(公众号:雷锋网)雷锋网雷锋网
卡耐基梅隆大学 2019 春季《神经网络自然语言处理》是CMU语言技术学院和计算机学院联合开课,主要内容是教学生如何用神经网络做自然语言处理。神经网络对于语言建模任务而言,可以称得上是提供了一种强大的新工具,与此同时,神经网络能够改进诸多任务中的最新技术,将过去不容易解决的问题变得轻松简单。
加入小组免费观看视频:https://ai.yanxishe.com/page/groupDetail/33
贝叶斯神经网络(系列)第一篇相关推荐
- pytorch贝叶斯网络_贝叶斯神经网络:2个在TensorFlow和Pytorch中完全连接
pytorch贝叶斯网络 贝叶斯神经网络 (Bayesian Neural Net) This chapter continues the series on Bayesian deep learni ...
- 贝叶斯神经网络对梯度攻击的鲁棒性
©PaperWeekly 原创 · 作者|尹娟 学校|北京理工大学博士生 研究方向|随机过程.复杂网络单位 引言 贝叶斯神经网络(BNN)在最近几年得到了一定的重视,因为其具有一定的推断能力.BNN ...
- 贝叶斯神经网络计算核裂变碎片产额
作者丨庞龙刚 单位丨华中师范大学 研究方向丨高能核物理.人工智能 今天介绍一篇北京大学物理系使用贝叶斯神经网络计算核裂变碎片产额的文章.这篇文章发表在 PRL 上,业内同行都很感兴趣.这里对我们大同行 ...
- 贝叶斯深度神经网络_深度学习为何胜过贝叶斯神经网络
贝叶斯深度神经网络 Recently I came across an interesting Paper named, "Deep Ensembles: A Loss Landscape ...
- 实验一:贝叶斯神经网络及其如何用随机梯度马尔可夫链蒙特卡洛有效训练
0.实验环境搭建: 源代码获取: 来源一:google 来源二:web 来源三:github 环境: conda create --name python36_google_deep python=3 ...
- 贝叶斯神经网络最新综述
©PaperWeekly 原创 · 作者|尹娟 学校|北京理工大学博士生 研究方向|随机过程.复杂网络 论文标题:Bayesian Neural Networks: An Introduction a ...
- 贝叶斯神经网络的辩论
贝叶斯概率体系的研究有一段时间了,目前在推进贝叶斯神经网络,看到这篇文章的辩论,这里保存下. https://mp.weixin.qq.com/s?__biz=MzI5NTIxNTg0OA==& ...
- 结合随机微分方程,多大Duvenaud团队提出无限深度贝叶斯神经网络
©作者 | 小舟.陈萍 来源 | 机器之心 来自多伦多大学和斯坦福大学的研究者开发了一种在连续深度贝叶斯神经网络中进行近似推理的实用方法. 把神经网络的限制视为无限多个残差层的组合,这种观点提供了一种 ...
- 【机器学习基础】贝叶斯神经网络
本系列为<模式识别与机器学习>的读书笔记. 一,混合密度网络 作为逆问题,考虑机械臂的运动学问题.正向问题(forward problem)是在给定连接角的情况下求解机械臂末端的位置,这个 ...
最新文章
- R语言数据纵向合并rbind函数实战(以及rbind.fill函数合并两个数据列不同的dataframe)
- php编程用空格,shell 编程中空格的使用方法
- python中os.path.isdir()等函数的作用及用法
- filezilla 设置filezilla使用明文密码_详解WordPress使用FTP上传主题和插件
- java8和9兼容吗_甲骨文限制 Java 9 到 Java 8 的向后兼容性
- java二叉树的深度优先遍历_二叉树的广度优先遍历、深度优先遍历的递归和非递归实现方式...
- mysql5.7组复制多主一从搭建_MySql5.7-多源复制(多主单从)
- 如何创建Java程序
- 【认知femto】femtocell的认知无线电频谱感知算法性能仿真
- ImageJ 插入插件和基本教程
- csapp--键盘驱动程序的分析与修改
- 打印目录和更新时就会出现“错误!未定义书签!”的解决技巧
- 平面弧长极坐标公式的疑问
- qt中如何模拟按钮点击_qt模拟鼠标单击事件
- MySQL-存储IP地址一文解决(随便问~)
- c语言里宏定义算变量嘛,C语言宏定义的一些总结
- 基于深度学习的绘画风格迁移
- 微信公众平台开发调试
- 【R生态】普鲁克分析(Procrustes Analysis)
- weex学习之路(一)--项目快速创建
热门文章
- java数字转汉语读法
- 排查通过服务器中 redis 的漏洞植入 pnscan 病毒进行挖矿
- 人工智能爆发背后的五个冷思考:行业如何脱虚入实?
- 单片机c语言编程编码器数值,基于单片机的光电编码器测速报告详解.doc
- 服务器安装桌面添加计算机,自己电脑桌面架设云服务器
- Centos7挂载ISCSI网络存储
- vue3 antd项目实战——Form表单的提交与校验【v-model双向绑定input输入框、form表单数据,动态校验规则】
- 编程制作动态壁纸的思路_抖音上很火的3D立体动态相册实现教程!(不懂编程也能学会)...
- STM32-GPIO
- “国航”助飞旅日华侨华人子女说中文的梦想