受限玻尔兹曼机(Restricted Boltzmann Machine, RBM) 简介
受限玻尔兹曼机(Restricted Boltzmann Machine,简称RBM)是由Hinton和Sejnowski于1986年提出的一种生成式随机神经网络(generative stochastic neural network),该网络由一些可见单元(visible unit,对应可见变量,亦即数据样本)和一些隐藏单元(hidden unit,对应隐藏变量)构成,可见变量和隐藏变量都是二元变量,亦即其状态取{0,1}。整个网络是一个二部图,只有可见单元和隐藏单元之间才会存在边,可见单元之间以及隐藏单元之间都不会有边连接,如下图所示:

上图所示的RBM含有12个可见单元(构成一个向量v)和3个隐藏单元(构成一个向量h),W是一个12*3的矩阵,表示可见单元和隐藏单元之间的边的权重。
1. RBM的学习目标-最大化似然(Maximizing likelihood)
RBM是一种基于能量(Energy-based)的模型,其可见变量v和隐藏变量h的联合配置(joint configuration)的能量为:
(式子-1)
其中θ是RBM的参数{W, a, b}, W为可见单元和隐藏单元之间的边的权重,b和a分别为可见单元和隐藏单元的偏置(bias)。
有了v和h的联合配置的能量之后,我们就可以得到v和h的联合概率:
(式子-2)
其中Z(θ)是归一化因子,也称为配分函数(partition function)。根据式子-1,可以将上式写为:
(式子-3)
我们希望最大化观测数据的似然函数P(v),P(v)可由式子-3求P(v,h)对h的边缘分布得到:
(式子-4)
我们通过最大化P(v)来得到RBM的参数,最大化P(v)等同于最大化log(P(v))=L(θ):
(式子-5)
2. RBM的学习方法-CD(Contrastive Divergence,对比散列)
可以通过随机梯度下降(stichastic gradient descent)来最大化L(θ),首先需要求得L(θ)对W的导数:
(式子-6)
经过简化可以得到:
(式子-7)
后者等于
(式子-8)
式子-7中的前者比较好计算,只需要求vihj在全部数据集上的平均值即可,而后者涉及到v,h的全部2|v|+|h|种组合,计算量非常大(基本不可解)。
为了解决式子-8的计算问题,Hinton等人提出了一种高效的学习算法-CD(Contrastive Divergence),其基本思想如下图所示:

首先根据数据v来得到h的状态,然后通过h来重构(Reconstruct)可见向量v1,然后再根据v1来生成新的隐藏向量h1。因为RBM的特殊结构(层内无连接,层间有连接), 所以在给定v时,各个隐藏单元hj的激活状态之间是相互独立的,反之,在给定h时,各个可见单元的激活状态vi也是相互独立的,亦即:
(式子-9)
重构的可见向量v1和隐藏向量h1就是对P(v,h)的一次抽样,多次抽样得到的样本集合可以看做是对P(v,h)的一种近似,使得式子-7的计算变得可行。
RBM的权重的学习算法:
- 取一个样本数据,把可见变量的状态设置为这个样本数据。随机初始化W。
- 根据式子-9的第一个公式来更新隐藏变量的状态,亦即hj以P(hj=1|v)的概率设置为状态1,否则为0。然后对于每个边vihj,计算Pdata(vihj)=vi*hj(注意,vi和hj的状态都是取{0,1})。
- 根据h的状态和式子-9的第二个公式来重构v1,并且根据v1和式子-9的第一个公式来求得h1,计算Pmodel(v1ih1j)=v1i*h1j。
- 更新边vihj的权重Wij为Wij=Wij+L*(Pdata(vihj)=Pmodel(v1ih1j))。
- 取下一个数据样本,重复1-4的步骤。
- 以上过程迭代K次。
参考文献:
1. R. Salakhutdinov. Deep Learning Tutorial.
2. 张春霞, 姬楠楠, 王冠伟. 受限玻尔兹曼机简介.
3. Wikipedia: Restricted Boltzmann Machine
4. Edwin Chen: Introduction to Retricted Boltzmann Machine
受限玻尔兹曼机(Restricted Boltzmann Machine, RBM) 简介的更多相关文章
- 受限玻尔兹曼机(Restricted Boltzmann Machine)
受限玻尔兹曼机(Restricted Boltzmann Machine) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. 生成模型 2. 参数学 ...
- 机器学习理论基础学习19---受限玻尔兹曼机(Restricted Boltzmann Machine)
一.背景介绍 玻尔兹曼机 = 马尔科夫随机场 + 隐结点 二.RBM的Representation BM存在问题:inference 精确:untractable: 近似:计算量太大 因此为了使计算简 ...
- 受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)
这篇写的主要是翻译网上一篇关于受限玻尔兹曼机的tutorial,看了那篇博文之后感觉算法方面讲的很清楚,自己收获很大,这里写下来作为学习之用. 原文网址为:http://imonad.com/rbm/ ...
- 限制玻尔兹曼机(Restricted Boltzmann Machine)RBM
假设有一个二部图,每一层的节点之间没有连接,一层是可视层,即输入数据是(v),一层是隐藏层(h),如果假设所有的节点都是随机二值变量节点(只能取0或者1值)同时假设全概率分布满足Boltzmann 分 ...
- 限制Boltzmann机(Restricted Boltzmann Machine)
起源:Boltzmann神经网络 Boltzmann神经网络的结构是由Hopfield递归神经网络改良过来的,Hopfield中引入了统计物理学的能量函数的概念. 即,cost函数由统计物理学的能量函 ...
- RBM:深度学习之Restricted Boltzmann Machine的BRBM学习+LR分类—Jason niu
from __future__ import print_function print(__doc__) import numpy as np import matplotlib.pyplot as ...
- 基于受限玻尔兹曼机(RBM)的协同过滤
受限玻尔兹曼机是一种生成式随机神经网络(generative stochastic neural network), 详细介绍可见我的博文<受限玻尔兹曼机(RBM)简介>, 本文主要介绍R ...
- 深度学习方法:受限玻尔兹曼机RBM(一)基本概念
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 最近在复习经典机器学习算法的同 ...
- 受限玻尔兹曼机(RBM)原理总结
在前面我们讲到了深度学习的两类神经网络模型的原理,第一类是前向的神经网络,即DNN和CNN.第二类是有反馈的神经网络,即RNN和LSTM.今天我们就总结下深度学习里的第三类神经网络模型:玻尔兹曼机.主 ...
随机推荐
- centos 7 安装iptables防火墙
firewalle: 开启6379端口和16379端口 [root@localhost ~]# firewall-cmd --zone=public --add-port=6379/tcp --per ...
- Linux c 从文件当中读取任意一行的数据
代码如下 #include <stdio.h>#include <stdlib.h>#include <sys/stat.h>#include <sys/ty ...
- win10 ssd 卡顿
http://www.pconline.com.cn/win10/739/7395324.html
- JsonLayout log4j2 json格式输出日志
如果日志输出时,想改变日志的输出形式为Json格式,可以在log4j2.xml中使用JsonLayout标签,使日志输出格式为Json格式. 前提需要Jackson的包,保证项目中包含jackson的 ...
- Vuejs的$nextTick原理
本质: nextTick,本质上是一个异步API,表示当前同步流程执行完成后再调用传入的函数. 根据环境不同,异步API的实现可以分别通过: setTimeout(0), new Promise(), ...
- 阶段01Java基础day18集合框架04
18.01_集合框架(Map集合概述和特点) A:Map接口概述 查看API可以知道: 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 B:Map接口和Collection接 ...
- mongodb安装建议
1)软件包的选择 确保使用最新的稳定版本.目前我们线上使用的版本是2.4.6.MongoDB软件包下载页面http://www.mongodb.org/downloads. 确保线上环境总是使用64位 ...
- Android开发 ---SQLite数据库,lock文件,结果集游标,适配器,安全退出,给连接设置下划线,编辑器,投影,ContentValues存储,DbHelper,activity栈
目录截图: 1.activity_main.xml 主界面效果: <?xml version="1.0" encoding="utf-8"?> &l ...
- VC++、MFC Sqlite3数据库的使用
SQLite数据库是一种本地的轻型数据库,在存储一些本地的数据的时候,或者不需要用到Oracle,SQL2008之类的大型数据库的时候,Sqlite的优势就能够得到发挥.程序需要采集数据存储起来,可以 ...
- scrapy中crawlspide中callback和follow函数的作用及使用方法
Rule(LinkExtractor(allow=r'i/tems'),callback='parse_item',follow=True) 当前代码的含义就是将当前页面及按照allow=r'i/t ...