摘要:常规的神经网络权重是一个确定的值,贝叶斯神经网络(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)的更多相关文章

  1. PGM学习之六 从有向无环图(DAG)到贝叶斯网络(Bayesian Networks)

    本文的目的是记录一些在学习贝叶斯网络(Bayesian Networks)过程中遇到的基本问题.主要包括有向无环图(DAG),I-Maps,分解(Factorization),有向分割(d-Separ ...

  2. 变分贝叶斯VBEM 由浅入深

    变分贝叶斯EM指的是变分贝叶斯期望最大化(VBEM, variational Bayes expectation maximization),这种算法基于变分推理,通过迭代寻找最小化KL(Kullba ...

  3. 贝叶斯线性回归(Bayesian Linear Regression)

    贝叶斯线性回归(Bayesian Linear Regression) 2016年06月21日 09:50:40 Duanxx 阅读数 54254更多 分类专栏: 监督学习   版权声明:本文为博主原 ...

  4. lecture10-模型的结合与全贝叶斯学习

    这是Hinton的第10课 这节课有两篇论文可以作为背景或者课外读物<Adaptive mixtures of local experts>和<Improving neural ne ...

  5. 【原】对频率论(Frequentist)方法和贝叶斯方法(Bayesian Methods)的一个总结

    注: 本文是对<IPython Interactive Computing and Visualization Cookbook>一书中第七章[Introduction to statis ...

  6. 概率图模型(PGM):贝叶斯网(Bayesian network)初探

    1. 从贝叶斯方法(思想)说起 - 我对世界的看法随世界变化而随时变化 用一句话概括贝叶斯方法创始人Thomas Bayes的观点就是:任何时候,我对世界总有一个主观的先验判断,但是这个判断会随着世界 ...

  7. 概率图模型(PGM) —— 贝叶斯网络(Bayesian Network)

    概率图模型是图论与概率方法的结合产物.Probabilistic graphical models are a joint probability distribution defined over ...

  8. 机器学习---用python实现朴素贝叶斯算法(Machine Learning Naive Bayes Algorithm Application)

    在<机器学习---朴素贝叶斯分类器(Machine Learning Naive Bayes Classifier)>一文中,我们介绍了朴素贝叶斯分类器的原理.现在,让我们来实践一下. 在 ...

  9. 贝叶斯方法(Bayesian approach) —— 一种概率解释(probabilistic interpretation)

    1. Bayesian approach 对于多项式拟合问题,我们可通过最小二乘(least squares)的方式计算得到模型的参数,最小二乘法又可视为最大似然(maximum likelihood ...

随机推荐

  1. Java学习历程记录(一)

    一.类与对象 1.创建类 创建一个学生类.并且创造成员变量和方法 public class student{ String name: int age: public void study(参数列表) ...

  2. linux搭建gtk的开发环境

    1:在终端中运行以下命令: sudo apt-get install libgtk2.0-dev 2:用以下指令查看是否安装成功: pkg-config --cflags --libs gtk+-2. ...

  3. gtk编译之makefile的写法(之一)

    在学习c语言GUI编程时想必大家都会遇见这样一个问题买就是每次编译都要敲`pkg-config --cflags --libs gtk+-2.0`这个烦恼吧 这是我们可以编写一个makefile文件这 ...

  4. 史上超强拷贝仓——GitHub 热点速览 v.21.11

    作者:HelloGitHub-小鱼干 Clone-Wars 是真的强,能细数 70+ 知名应用网站的源码,即便你不看代码,也可以了解下各大网站的所用技术栈.同样很强的是用 OpenCV 实现的图片转 ...

  5. Python 多线程(一)

    Python多线程(一) 目录 Python多线程(一) 线程 Python线程模型 Python虚拟机按照下面所述方式来切换线程 Threading模块 未引进线程 结果 引入线程 方式一:创建Th ...

  6. Warm_up(HCTF_2018)

    Warm up 考察知识点: 文件包含漏洞 代码审计 解题步骤 首先我们进来看到了一个滑稽的表情,没啥别的东西,先看看源码 源码中发现有注释 source.php 我们访问source.php,得到代 ...

  7. SpringBoot开发秘籍 - 集成Graphql Query

    概述 REST作为一种现代网络应用非常流行的软件架构风格受到广大WEB开发者的喜爱,在目前软件架构设计模式中随处可见REST的身影,但是随着REST的流行与发展,它的一个最大的缺点开始暴露出来: 在很 ...

  8. JMeter发送get请求并分析返回结果

    在实际工作的过程中,我们通常需要模拟接口,来进行接口测试,我们可以通过JMeter.postman等多种工具来进行接口测试,但是工具的如何使用对于我们来说并不是最重要的部分,最重要的是设计接口测试用例 ...

  9. editorconfig、eslint、prettier三者的区别、介绍及使用

    每次搭建新项目都少不了这些工具,但时间一久就忘记了,下次搭新项目时又要四处查官方文档,因此特此记录,主要内容是对这三个工具的理解,以及具体使用方式 editorconfig 理解 先看官网的定义: E ...

  10. 《图解HTTP》部分章节学习笔记整理

    简介 此笔记为<图解HTTP>中部分章节的学习笔记. 目录 第1章 了解Web及网络基础 第2章 简单的HTTP协议 第4章 返回结果的HTTP状态码 第7章 确保web安全的HTTPS