©PaperWeekly 原创 · 作者 | 薛博阳

单位 | 香港中文大学

研究方向 | 语言模型

引言

近年来,贝叶斯深度学习(Bayesian Deep Learn-ing)在诸多领域得到广泛关注应用,效果显著。本文将针对贝叶斯深度学习框架进行系统性的概述,包括模型不确定性的引入;贝叶斯神经网络(Bayesian Neural Network)、高斯过程(Gaussian Process)、变分自编码器(Variational Auto-Encoder)三个主流模型的介绍,以及如何使用变分推断(Variational In-ference)求解上述模型的潜在变量分布;最后对相关参考文献进行总结。

深度学习的不确定性

首先谈下为什么要引入贝叶斯深度学习方法。贝叶斯深度学习能够对传统深度学习模型的不确定性(Model Uncertainty)建模,随着近年来卷积神经网络,Transformer 等发展,主流深度学习框架变得越来越复杂,网络深度可达成百甚至上千层,参数量也超过数千亿。这些大规模的神经网络虽然对信息感知和特征提取能力越来越强,但也存在在有限数据集上容易过拟合及模型泛化能力弱的隐患。

针 对 这 个 问 题, 一 种 常 用 的 方 法 是 引入 Dropout,在模型训练时使用由一个超参数控制的伯努利分布对所有网络节点随机选择丢弃,使每次训练迭代的网络都不完全相同,引入了模型结构的不确定性;而在预测时则考虑所有节点,可看作所 有训练中不同网络的集成(Ensemble)或平均,从而有效减小了过拟合,Dropout 中的超参数通常需要手动调节。

另一种方法是在网络参数上加入随机噪声,这相当于引入参数的不确定性。然而这些不确定 性建模方法都只是简单的正则化,缺乏严谨的数学表述推理论证。深度学习任务通常有两种不确定性,一种是来源于数据噪声的随机不确定性(Aleatoric Uncertainty),另一种就是重点关注的模型不确定性,在不同模型框架上又可分为参数不确定性,结构不确定性以及隐变量的不确定性。下面使用一个更直观的例子来说明引入不确定性如何有效提升模型泛化能力。

传统深度学习模型都是确定函数的点估计(Point Estimation),对于一个鉴别狗品种的图像分类模型,如果输入一张训练集分布外的图像,如一只猫的照片,那样识别结果将很离谱。于是我们希望能在模型返回预测结果时附带不确定性信息,也可以看做对结果的置信度。这需要引入能对不确定性建模的概率模型(Probabilistic Model),如下图所示的二氧化碳浓度预测模型,蓝色虚线左边是观测数据,右边是测试数据;对于测试部分的数据点 ,传统的深度学习模型会给出确定的预测,如左图红色虚线所示;而概率模型则会对未知的测试部分均采用概率分布来表示,如右图蓝色阴影部分所示,在数据集不能学习到准确的数据分布的情况下(当然实际所用的所有数据集都是有限的),很显然引入不确定性更合理,这也是能有效提升模型泛化能力的原因。

▲ 图1. 传统深度学习模型(左)与概率模型(右)对二氧化碳浓度的预测

这里的概率模型就是用的贝叶斯方法建模,假设存在数据集 和标签集 ,在预测测试数据对 的概率分布时,根据边缘概率计算,我们有

其中 为模型参数,问题就转换为求参数 在训练集 上的最大后验分布的问题。根据贝叶斯公式,有

传统深度学习通常是对参数 进行定参估计,而贝叶斯模型把参数看做概率分布,需要对所有 值进行积分,按照 Bishop 的《Pattern Recognition and Machine Learning》的定义,这种积分是贝叶斯方法的核心,在深度学习模型上应用贝叶斯方法就统称为贝叶斯深度学习。我们对公式(2)分母部分进行归一化积分,有

这部分也称作模型证据(Model Evidence)或边缘似然(Marginal Likelihood) 分布。由于积分的存在,通常很难求得解析解,这就需要用到一些近似推断方 法。至此,我们从不确定性,概率模型,贝叶斯方法的基本思路着手,明确了贝叶斯深度学习和不确定性的关系,下面就来讲贝叶斯深度学习里最经典的模型——贝叶斯神经网络。

贝叶斯神经网络

广义的贝叶斯深度学习在不同文章课题中定义略有不同,但狭义的贝叶斯深度学习公认是指贝叶斯神经网络。结合上文不确定性,再来详细讨论贝叶斯神经网络和传统神经网络的区别:传统神经网络中,我们认为模型参数 是定值,如图二左所示,并且在一个任务上存在最优参数 ;训练时,给模型参数赋一组初值 ,基于观测数据集 训练模型不断更新 ,训练时可以使用最大似然估计

或者加入正则项将最大似然变为最大后验估计

其中 正则项是将 假设为拉普拉斯先验, 正则项是高斯先验,不论 MLE 还是 MAP,最终学习目标都是让参数无限逼近 。

▲ 图2. 参数固定的传统神经网络(左)以及参数服从概率分布的贝叶斯神经网络(右)

需要指出虽然最大后验估计也引入先验,但仍属于定参估计,没有引入概率模型,不需要对参数积分,因此不属于贝叶斯方法。传统神经网络无法对不确定性建模,在监督学习中往往对预测结果过于自信,很容易发生过拟合。

顺着前文在参数上引入不确定性的思路,我们 认为 服从某种概率分布而非固定参数,如图二右所示,为了最大化不确定性,我们先假设 服从高 斯分布,这样训练的也不再是单一网络,而是无数个相同位置节点参数服从同一概率分布的集成网络。此时参数 的先验分布不再是简单的正则项,而是对应的共轭分布,高斯分布的共轭先验也应该是一 个高斯分布,对应的后验分布也是一个高斯分布。模型的优化目标就是最大化后验高斯分布 ,也就是公式(1)中的后验。

现在问题的关键就是计算公式(3)的边缘算子了。如果模型是线性回归之类的简单模型,其实也不难求出解析解,但换成神经网络后就会变得异常复杂,下面简单推导一下。假设有模型 ,输入向量 ,标签 ,模型参数为 ,假设模型输出服从均值为 ,方差为 的高斯分布,有

权重 的共轭先验也是高斯分布,假设其均值为 ,方差为 ,可得

后验分布由贝叶斯公式

计算,代入多元高斯概率密度函数,对后验分布取

其中 为常数项。对于一般的线性回归模型, 是关于 的线性函数,后验概率仍是是关于 的高斯分布,可以直接计算出解析解,但是在神经网络中,由于大量非线性单元,模型输出 与 不再是线性关系,网络模型对于参数值的高度非线性意味着精确的贝叶斯方法(即数值求解)不可行,因此我们不得不借助一些近似方法,如拉普拉斯近似(Laplace Approximation),马尔科夫链蒙特卡罗采样(Markov-Chain Monte-Carlo Sampling),以及近几年使用最多的变分推断法。

变分推断

本节主要讲变分推断求解贝叶斯神经网络的过程,类似的也可以用于其他贝叶斯深度学习模型上。

变分法最早起源于 18 世纪欧拉、拉格朗日等关于泛函优化的研究,泛函数 (Functional)是以函数作为输入,返回泛函值作为输出的一种映射,它以一个函数作为输入,返回泛函的值作为输出。研究所有可能的输入函数,找到最大化或者最小化泛函的函数就是问题的解。相比其他近似推断方法,变分法具有更好的收敛性和可扩展性,适合大规模问题的求解。贝叶斯深度学习将参数视作概率分布后,误差函数的输入也就从定值变为函数,从而转变为泛函优化,这就是用变分法来求解贝叶斯深度学习模型的原因。

第三节已经证明了贝叶斯神经网络中的 无法直接计算解析解,甚至很难采样。变分法的核心就是用一个可解的近似分布 逼近真实分布。第二节分析表明估计后验分布 需要最大化公式(3)边缘分布的积分,假设公式(3),根据 Jensen 不等式,有

这也被称为变分下限(Variational Lower Bound), 是对后验概率 的变分近似, 是参数的先验分布,KL 散度用来度量两个概率分布的距离,如下图所示

▲ 图3. 变分下限

一种更直观的理解是,已知后验分布 是 一个未知分布,我们引入已知参数分布的 去逼近 ,所以只需最小化 KL ,可以作如下推导

最终结果第一项 与 无关可以忽略,第二项 和第三项分别求 与先验 的距离,以及 时似然函数 的期望值。这与公式(11)的结果一致,也就是目标函数或误差函数,即

与正则化的传统神经网络对比,贝叶斯神经网络误差函数也分为两部分,一是训练数据相关的似然代 价(Likelihood Cost),其中 服从 ;二是先验相关的复杂性代价(Complexity Cost),也就是把正则项变成 KL 散度,传统方法中引入正则项就有让模型参数变得稀疏的作用,控制了模型的复杂度。误差函数的优化就是在两项函数之间取平衡。

下面说说误差函数两项的求解方法,为了最大化不确定性,假设近似和后验均服从高斯分布,即

似然代价因为积分存在无法直接求解,在此借助蒙特卡罗采样(Monte Carlo Sampling),即

其中 是每次训练中对 的采样次数,如果直接对均值 和方差 采样代入高斯分布因指数运算在反向传播时会造成训练过程不稳定,在此使用一种重参数化(Reparameterize)方法,即

这意味着在前向传播计算似然代价时,参数 需要从公式(17)随机采样获得,对应贝叶斯神经网络的参数 不再是一个定值。

对于 与 的 KL 散度项,需要对积分离散化,然后代入高斯分布的概率密度函数,有

其中 表示 中的第 项参数, 并且相互独立,根据高斯分布均值和二阶矩的性质

402 Payment Required

,即可完成最后一步推导。至此,我们已推导出误差函数项的形式,利用 梯度下降和反向传播算法,就可以完成大规模参数贝叶斯神经网络的训练了,为了稀疏模型我们可以 的标准高斯分布,反向传播算法如下

由于我们假设参数服从高斯分布,因此使用了均值和方差两个参数,参数量为同等规模的传统神经网络的 2 倍。当然实际上只需要对部分参数做贝叶斯推断,就可以取得较好的效果了。

简化后的代价函数也可以进行小批量梯度下降,训练时将 随机分成 个相等的子集。每次梯度更新是小批量上的平均。如果想要衡量复杂性成本与小批量之间的关系,我们可以将小批量均匀随机划分,那么 KL 代价可以在每个训练周期非均匀地分布在小批量 之间:令 ,并且 。

研究发现 时效果最好,这也意味着在前几个小批量更新时在模型比较依赖先验也就是复杂性成本的影响,而后面训练时很大程度上受数据的影响。也就是说,当数据集趋于无穷时,贝叶斯神经网络和传统神经网络相差并不大,但是在有限数据集上,贝叶斯神经网络明显性能更优。

高斯过程

高斯过程是结合连续函数和概率模型的一种非参数化方法,函数 的高斯过程可表示为

其中 是训练集中的随机数据对, 是核函数,上述公式是高斯过程的核空间表述(kernel space view),然而,由于数据集中所有数据点都需要相互运算,在大规模数据集上计算复杂度会特别高,另一种权重空间表述(weight space view)的高斯过程形式为模型中一系列基函数的插值

核函数与基函数的关系为 , 是第 个基函数的系数。

此前已有研究证明,对于单隐层的神经网络,当隐层结点数不断增加并趋于无穷时,输出服从高斯分布。由于输出被描述为基函数的无穷和,因此可以将输出看作高斯过程,如下图所示可以看出高斯

▲ 图4. 单隐层神经网络结点数不断增加 (a),(b),(c),(d) 时输出分布

过程是和模型结构相关的,这也启发了一系列将高斯过程与贝叶斯深度学习相结合的研究,一种思路就是利用上述权重空间的高斯过程,对基函数插值系数使用贝叶斯估计从而为模型结构的不确定性建模,公式(11)可表示如下

相较之下多了一个变量的积分,其余推导过程就按照变分下限,蒙特卡罗采样,重参数化,反向传播等一系列步骤进行,推导过程与第四节类似,在此不作赘述。

变分自编码器

变分自编码器本质上也是贝叶斯深度学习,只不过这次是对隐变量(Latent Variables)进行不确定性建模,也就是将神经网络中的隐藏层输出视作随机变量。传统自编码器是一种由编码器和解码器组成的用于特征提取或数据降维的模型。如下图所示左边是编码器,右边是解码器,通过自编码器将输

▲ 图5. 自编码器

入 映射到低维空间 再通过解码器还原回真实数据。

在数据处理时会遇到数据量不足的情况,这时就会考虑使用生成模型生成数据,变分自编码器就是在自编码器基础上对 引入变分贝叶斯估计,使其能够生成数据。这涉及到一类利用变分贝叶斯求解图模型变量的方法,也是变分贝叶斯在深度学习隐藏变量上的应用,变分自编码器是其中的典型代表。

对于如下具有连续隐变量的概率图模型

▲ 图6. 连续隐变量的概率图模型

我们试图推断和学习有向概率图模型的隐分布, 并通过对 的采样来实现数据 的生成。由于连续 随机隐变量 不可见,我们无法根据条件概率分布 生成 ,也就无法得到生成模型 。而数据的先验分布

因存在积分也无法求解,这时候就可以构建模型 来近似

这个过程可视作编码器,即由样本数据 学出一个对应的隐层分布 ,并使用 作为解码器,实现模型生成。数据集的先验可以写作

其中 就是变分下限,也可以写作

还可以进一步写作

接下来就是蒙特卡罗采样,重参数化,反向传播等一系列算法的运用,推导过程与第四章基本类似,在此不作赘述。

总结

本文从深度学习不确定性的角度切入,总结了贝叶斯深度学习模型提升模型的泛化能力的作用,并讲了三个主流的框架:贝叶斯神经网络,高斯过程,变分自编码器,分别在模型参数,模型结构和隐藏变量进行不确定性建模,并且给出变分法求解上述模型的过程。参考资料详见下文。

参考文献

模型不确定性:

[1] Gal, Y. “Uncertainty in Deep Learning.”PhD Thesis, 2016.

贝叶斯神经网络,变分推断:

[2] D. Barber and C. M. Bishop, “Ensemble Learning in Bayesian Neural Networks,”Nato ASI Series F Computer and Systems Sciences, 1998

[3] R. M. Neal, “Bayesian Learning for Neu- ral Networks,”Springer Science & Business Media, 2012.

[4] C. M. Bishop, “Pattern Recognition and Machine Learning,”Machine Learning, 2006.

[5] A. Graves, “Practical Variational Inference for Neural Networks,”NIPS 2012.

[6] C. Blundell et al., “Weight Uncertainty in Neural Network,”ICML 2014.

[7] Goan, E. Bayesian. “Neural Networks: An Introduction and Survey,”In Case Studies in Applied Bayesian Data Science 2020.

高斯过程:

[8] C. E. Rasmussen, “Gaussian Processes for Machine Learning,”Machine Learning, 2006.

变分自编码器:

[9] D. P. Kingma et al., “Auto-Encoding Vari- ational Bayes,”stat, 2014.

特别鸣谢

感谢 TCCI 天桥脑科学研究院对于 PaperWeekly 的支持。TCCI 关注大脑探知、大脑功能和大脑健康。

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

变分贝叶斯深度学习综述相关推荐

  1. 【MIT港科大】最新《贝叶斯深度学习》2020综述论文,35页pdf全面阐述最新进展...

    来源:专知 来自MIT和香港科技大学的学者最新<贝叶斯深度学习>综述论文,值得关注! 地址: https://www.zhuanzhi.ai/paper/9b781282204cb581a ...

  2. 真的不值得重视吗?ETH Zurich博士重新审视贝叶斯深度学习先验

    ©作者 | 杜伟.力元 来源 | 机器之心 一直以来,贝叶斯深度学习的先验都不够受重视,这样真的好么?苏黎世联邦理工学院计算机科学系的一位博士生 Vincent Fortuin 对贝叶斯深度学习先验进 ...

  3. 清华大学朱军详解珠算:贝叶斯深度学习的GPU库(附视频)

    5 月 27-28 日,机器之心在北京 898 创新空间顺利主办了第一届全球机器智能峰会(GMIS 2017).中国科学院自动化研究所复杂系统管理与控制国家重点实验室主任王飞跃为大会做了开幕式致辞.大 ...

  4. 贝叶斯深度学习2020 最新研究总结

    作者丨Ziyue Wu@知乎 来源丨https://zhuanlan.zhihu.com/p/283633149 编辑丨极市平台 本文仅作学术分享,若侵权,请联系后台作删文处理. 一个综合的人工智能系 ...

  5. NeurIPS 2019最热趋势-贝叶斯深度学习

    贝叶斯原理,总感觉憋着,不透.关注到一篇文章介绍NIPS2019最新趋势中有关于贝叶斯深度学习的,还是担心链接失效,博客这里mark关键信息. 链接:https://mp.weixin.qq.com/ ...

  6. 贝叶斯深度学习(Bayesian Deep Learning)2020 最新研究总结

    关注上方"肉眼品世界",选择星标, 作者丨Ziyue Wu@知乎 来源丨https://zhuanlan.zhihu.com/p/283633149 编辑丨极市平台 本文仅作学术分 ...

  7. 贝叶斯深度学习——基于PyMC3的变分推理

    时间 2016-06-12 10:13:38CSDN 原文  http://geek.csdn.net/news/detail/80255 主题 深度学习 PyMC3 原文链接: Bayesian D ...

  8. 机器学习贝叶斯学习心得_贝叶斯元学习就是您所需要的

    机器学习贝叶斯学习心得 Update: This post is part of a blog series on Meta-Learning that I'm working on. Check o ...

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

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

最新文章

  1. 简单自学机器学习理论——正则化和偏置方差的权衡 (Part III )
  2. git常用命名行总结
  3. 49天备考信息系统项目管理师3科50+
  4. 【报错笔记】在eclipse中复制代码后代码中会报画红线错,而且项目也会报错。
  5. hibernate工厂模式_Hibernate锁定模式–乐观锁定模式如何工作
  6. 解决:redis.clients.jedis.exceptions.JedisDataExceptionERR This instance has cluster support disabled
  7. 面试官问:malloc(0)时程序会返回什么?
  8. windows xp 创建 Oracle(11G)数据库实例时写入系统日志失败解决方案
  9. 【20】java里的this和static
  10. Python实现中英文分词
  11. SQLPrompt 安装后sql上看不到菜单
  12. AnySDK项目实战教程
  13. maven 项目 spring mvc + jdbc 配置文件
  14. Jquery—Jquery异步功能实例
  15. 190420每日一句
  16. 【UmiJS学习】01-快速上手
  17. 含泪整理最优质现代家装su模型素材,你想要的这里都有
  18. php 时间间隔月数,PHP计算两个时间相差的年数、月数和天数程序
  19. 有一头小母牛(0岁),它从第四年(3岁)开始,每年都生一头小母牛(一年只生一头),而且,所以的小母牛也都会在第四年开始生育。假设所有的母牛都不会死,请问:第n年,此牛群共有多少头母牛?
  20. html网站meta标签大全

热门文章

  1. lnmp基于fastcgi实现nginx_php_mysql的分离_LNMP基于FastCGI实现Nginx,PHP,MySQL的架构分离...
  2. matlab 计算误码率,关于误码率的问题 急!!!!!
  3. python修改excel后打印_python 处理excel并打印excel
  4. Python十分适合用来开发网页爬虫
  5. HashMap源码浅析
  6. 推理集 —— 思维的误区
  7. zzlinux运维自动化shell脚本小工具
  8. 深圳.NET俱乐部 Windows 7 社区发布会总结及资源下载
  9. mysql行级视图与列级视图_[数据库]--DML、DDL、TCL语言
  10. 南华大学java补考_关于2017年秋季学期学生补考报名及成绩复核的通知