变分贝叶斯学习(variational bayesian learning)及重参数技巧(reparameterization trick)
摘要:常规的神经网络权重是一个确定的值,贝叶斯神经网络(BNN)中,将权重视为一个概率分布。BNN的优化常常依赖于重参数技巧(reparameterization trick),本文对该优化方法进行概要介绍。
论文地址:http://proceedings.mlr.press/v37/blundell15.pdf
网络权重的点估计
常规神经网络可以基于MLE或MAP对权重作点估计。
基于MLE(maximum likelihood estimation):
基于MAP(maximum a posteriori):
对权重施加先验,等价于进行正则化。如果施加的是高斯先验,相当于进行L2正则,如果是一个laplace先验,相当于L1正则。
贝叶斯方法
贝叶斯推断在给定训练数据的情况下,计算网络参数的后验概率,理论上可以通过以下方式对样本标签所服从的分布进行预测:
Hinton等人提出对网络权重的贝叶斯后验分布进行变分估计,变分学习寻找参数θ,来最小化分布q(w|θ)和权重真实后验分布之间的KL距离,这里的参数θ可理解为w所服从分布的参数,比如高斯的μ和σ:
这个loss函数就是变分自由能(variational free energy),也称为期望下界(expected lower bound, ELBO)。
可以将loss函数简记为:
损失函数的后半部分代表与数据相关,称之为似然损失,前半部分与先验有关,称为先验损失。该损失也被称为最小描述长度(minimum description length, MDL)
无偏蒙特卡洛梯度
我们使用梯度下降的方式对上述损失进行优化。
在特定的条件下,期望的微分等于微分的期望。
命题1:假设ε服从分布q(ε),令w = t(θ, ε),其中t(θ, ε)是一个确定性函数,假如w的边缘密度q(w|θ)满足q(ε) dε = q(w|θ) dw,那么:
证明:
确定性函数 t(θ, ε)将一个随机噪声和变分后验参数转换为一个变分后验。
令,我们可以将命题1用于优化。通过蒙特卡洛采样,可以通过反向传播算法对网络进行优化。
命题1就是所谓的重参数技巧(reparameterization trick)。
变分高斯后验
基于高斯后验的变分学习训练过程如下:
这里就是常规反向传播算法得到的梯度。
基于tensorflow probability的贝叶斯全连接网络示例
import tensorflow as tf
import tensorflow_probability as tfp model = tf.keras.Sequential([
tfp.layers.DenseReparameterization(512, activation=tf.nn.relu),
tfp.layers.DenseReparameterization(10),
]) logits = model(features)
neg_log_likelihood = tf.nn.softmax_cross_entropy_with_logits(
labels=labels, logits=logits)
kl = sum(model.losses)
# loss由两部分构成:(1)负对数似然(2)参数分布与其先验分布(regularizer)之间的KL距离
loss = neg_log_likelihood + kl
train_op = tf.train.AdamOptimizer().minimize(loss)
变分贝叶斯学习(variational bayesian learning)及重参数技巧(reparameterization trick)的更多相关文章
- PGM学习之六 从有向无环图(DAG)到贝叶斯网络(Bayesian Networks)
本文的目的是记录一些在学习贝叶斯网络(Bayesian Networks)过程中遇到的基本问题.主要包括有向无环图(DAG),I-Maps,分解(Factorization),有向分割(d-Separ ...
- 变分贝叶斯VBEM 由浅入深
变分贝叶斯EM指的是变分贝叶斯期望最大化(VBEM, variational Bayes expectation maximization),这种算法基于变分推理,通过迭代寻找最小化KL(Kullba ...
- 贝叶斯线性回归(Bayesian Linear Regression)
贝叶斯线性回归(Bayesian Linear Regression) 2016年06月21日 09:50:40 Duanxx 阅读数 54254更多 分类专栏: 监督学习 版权声明:本文为博主原 ...
- lecture10-模型的结合与全贝叶斯学习
这是Hinton的第10课 这节课有两篇论文可以作为背景或者课外读物<Adaptive mixtures of local experts>和<Improving neural ne ...
- 【原】对频率论(Frequentist)方法和贝叶斯方法(Bayesian Methods)的一个总结
注: 本文是对<IPython Interactive Computing and Visualization Cookbook>一书中第七章[Introduction to statis ...
- 概率图模型(PGM):贝叶斯网(Bayesian network)初探
1. 从贝叶斯方法(思想)说起 - 我对世界的看法随世界变化而随时变化 用一句话概括贝叶斯方法创始人Thomas Bayes的观点就是:任何时候,我对世界总有一个主观的先验判断,但是这个判断会随着世界 ...
- 概率图模型(PGM) —— 贝叶斯网络(Bayesian Network)
概率图模型是图论与概率方法的结合产物.Probabilistic graphical models are a joint probability distribution defined over ...
- 机器学习---用python实现朴素贝叶斯算法(Machine Learning Naive Bayes Algorithm Application)
在<机器学习---朴素贝叶斯分类器(Machine Learning Naive Bayes Classifier)>一文中,我们介绍了朴素贝叶斯分类器的原理.现在,让我们来实践一下. 在 ...
- 贝叶斯方法(Bayesian approach) —— 一种概率解释(probabilistic interpretation)
1. Bayesian approach 对于多项式拟合问题,我们可通过最小二乘(least squares)的方式计算得到模型的参数,最小二乘法又可视为最大似然(maximum likelihood ...
随机推荐
- EmEditor, 在正则使用()匹配后 使用$1 $2进行对括号内的值进行引用
$1表示第一个括号,$2表示第二个括号,以此类推
- 基于Docker的MindSpore安装与使用基础介绍
技术背景 MindSpore是一款新一代AI开源计算框架,其特色在于:创新编程范式,AI科学家和工程师更易使用,便于开放式创新:该计算框架可满足终端.边缘计算.云全场景需求,能更好保护数据隐私:可开源 ...
- 自己整理的acm模板
第一次上传: 链接:点我下载 大部分常用的模板都弄了,剩下的坑以后再补... 第二次上传: 链接:点我下载 更新内容:新增ST表.分块 第三次上传: 链接:点我下载 更新内容:新增AC自动机,修改权值 ...
- Nodejs学习笔记(2) 阻塞/非阻塞实例 与 Nodejs事件
1. Node.js异步编程的特点 2. 阻塞与非阻塞的实例 2.1 阻塞代码实例 2.2 非阻塞代码实例 3. Node.js的事件驱动 4. 事件循环实例 1. Node.js异步编程的特点 参考 ...
- socket 之send和recv原理剖析
认识TCP socket的发送缓冲区和接收缓冲区 当创建一个TCP socket对象的时候会有一个发送缓冲区和一个接收缓冲区,相当与内存中的一片空间 send原理剖析 send是不是直接把数据发送给服 ...
- FIL怎么获得?FIL在哪里购买?
从一些交易网站可以看到,FIL 这几天有一个比较大的涨幅,这让许多投资 FIL 的朋友大松一口气:FIL,你终于不装睡了.估计许多关注区块链的小伙伴看到消息又要问了:FIL 怎么获得?FIL 在哪里购 ...
- Envoy 部署类型
目录 Envoy 网络拓扑及请求流程 1. 术语 2. 网络拓扑 3. 配置 4. 更高层的架构 5. 请求流程 1. Listener TCP 接收 2. 侦听器过滤器链和网络过滤器链匹配 3.TL ...
- AppDomain实现【插件式】开发
前言: 近期项目中需要实现"热插拔"式的插件程序,例如:定义一个插件接口:由不同开发人员实现具体的插件功能类库:并最终在应用中调用具体插件功能. 此时需要考虑:插件执行的安全性(隔 ...
- 【DB宝46】NoSQL数据库之CouchBase简介、集群搭建、XDCR同步及备份恢复
目录 一. CouchBase概述 1.1.简述 1.2.CouchDB和CouchBase比对 1.2.1.CouchDB和CouchBase的相同之处 1.2.2.CouchDB和CouchBas ...
- 更改当前目录--cd
pwd 显示当前所在的目录路径 cd ../ 回到上一层目录 cd ../../ 回到上上层目录 cd / 回到根目录 cd ~ 回到当前用户的根目录 c ...