1、什么是BM?

BM是由Hinton和Sejnowski提出的一种随机递归神经网络,可以看做是一种随机生成的Hopfield网络,是能够通过学习数据的固有内在表示解决困难学习问题的最早的人工神经网络之一,因样本分布遵循玻尔兹曼分布而命名为BM。BM由二值神经元构成,每个神经元只取1或0这两种状态,状态1代表该神经元处于接通状态,状态0代表该神经元处于断开状态。在下面的讨论中单元和节点的意思相同,均表示神经元。 
 
上图为一个玻尔兹曼机(BM),其蓝色节点为隐层,白色节点为输入层。 
玻尔兹曼机和递归神经网络相比,区别体现在以下几点: 
1、递归神经网络(RNN)本质是学习一个映射关系,因此有输入和输出层的概念,而玻尔兹曼机的用处在于学习一组数据的“内在表示”,因此其没有输出层的概念。 
2、递归神经网络各节点链接为有向环,而玻尔兹曼机各节点连接成无向完全图。

2、什么是RBM?

限制玻尔兹曼机中,所谓的限制就是:将完全图变成了二分图。如图所示,限制玻尔兹曼机由三个显层节点和四个隐层节点组成。 
 
RBM中,所有可见单元和隐单元之间存在连接,而隐单元两两之间和可见单元两两之间不存在连接,也就是层间全连接,层内无连接(这也是和玻尔兹曼机BM模型的区别,BM是层间、层内全连接)。其中,每一个节点(无论是Hidden Unit还是Visible Unit)都有两种状态:处于激活状态时值为1,未被激活状态值为0。 
这里的0和1状态的意义是代表了模型会选取哪些节点来使用,处于激活状态的节点被使用,未处于激活状态的节点未被使用。节点的激活概率由可见层和隐藏层节点的分布函数计算。

RBM本质是非监督学习(Unsupervised Learning)的利器(Hinton和吴恩达都认为:将来的机器学习任务慢慢都会转变为非监督学习的),因为,它可以用于降维(隐层少一点),学习特征(隐层输出就是特征),自编码器(AutoEncoder)以及深度信念网络(多个RBM堆叠而成)等。

3、RBM

一个RBM中,vv表示所有可见层单元,hh表示所有隐层单元。要想确定该模型,只要能够得到模型三个参数:WW、AA和 BB。分别是权重矩阵WW,可见层单元偏置AA,隐藏层单元偏置BB。假设一个RBM有n个可见单元和m个隐单元,用vivi表示第i个可见单元,hjhj表示第j个隐单元,它的参数形式为:

WijWij: 表示第i个可见单元和第j个隐单元之间的权值。

aiai: 表示第i个可见单元的偏置阈值。

bjbj: 表示第j个隐单元的偏置阈值。

对于一组给定状态下的(vv, hh)值,假设可见层单元和隐藏层单元均服从伯努利分布,RBM的能量公式是:

E(v,h|θ)=−∑i=1naivi−∑j=1mbjhj−∑i=1n∑j=1mviWijhjE(v,h|θ)=−∑i=1naivi−∑j=1mbjhj−∑i=1n∑j=1mviWijhj

其中,θ=Wij,ai,bjθ=Wij,ai,bj为RBM模型的参数,能量函数表示在每一个可见节点和每一个隐藏层节点之间都存在一个能量值。

对该能量函数指数化和正则化后可以得到可见层节点集合和隐藏层节点集合分别处于某一种状态下(vv, hh)联合概率分布公式:

P(v,h|θ)=e−E(v,h|θ)Z(θ)P(v,h|θ)=e−E(v,h|θ)Z(θ)
Z(θ)=∑v,he−E(v,h|θ)Z(θ)=∑v,he−E(v,h|θ)

其中,Z(θ)Z(θ)为归一化因子或配分函数(partition function),表示对可见层和隐藏层节点集合的所有可能状态的(能量的指数形式)求和。

对于参数的求解往往采用似然函数求导的方法。已知联合概率分布P(v,h|θ)P(v,h|θ),通过对隐藏层节点集合的所有状态求和,可以得到可见层节点集合的边缘分布P(v|θ)P(v|θ):

P(v|θ)=1Z(θ)∑he−E(v,h|θ)P(v|θ)=1Z(θ)∑he−E(v,h|θ)

边缘分布表示的是可见层节点集合处于某一种状态分布下的概率,边缘分布往往被称为似然函数(如何对模型参数求解在下面章节阐述)。

由于RBM模型的结构(层间全连接、层内无连接),它具有以下重要性质:

1)在给定可见单元的状态时,各隐藏层单元的激活状态之间是条件独立的。此时,第j个隐单元的激活概率为:

P(hj=1|v)=f(bj+∑iviWij)P(hj=1|v)=f(bj+∑iviWij)

2)相应的,当给定隐单元的状态时,可见单元的激活概率同样是条件独立的:

P(vi=1|h)=f(ai+∑jWijhj)P(vi=1|h)=f(ai+∑jWijhj)

ff为激励函数/激活函数,这里选用sigmoid作为激活函数。是因为它可以把(-∞,+∞)的值映射到[0,1]这个区间。也就是说,无论模型的可见层输入节点数据处于一个多大的范围内,都可以通过sigmoid函数求得它相应的函数值,即节点的激活概率值。 

4、RBM模型参数求解

在给定一个训练样本后,训练一个RBM的意义在于调整模型的参数,以拟合给定的训练样本,使得在该参数下RBM表示的可见层节点概率分布尽可能的与训练数据相符合。

对于该模型需要确定两部分。一是如果想确定这个模型,首先是要知道可见层和隐藏层节点个数,可见层节点个数即为输入的数据维数,隐藏层节点个数在一些研究领域中是和可见层节点个数有关的,如用卷积受限玻尔兹曼机处理图像数据,在这里不多分析。 
但多数情况下,隐藏层节点个数需要根据使用而定或者是在参数一定的情况下,使得模型能量最小时的隐藏层节点个数。

其次,要想确定这个模型还得要知道模型的三个参数θ=Wij,ai,bjθ=Wij,ai,bj,下面就围绕着参数的求解进行分析。

由上文提到,参数求解用到了似然函数的对数对参数求导。 
P(v|θ)=1Z(θ)∑he−E(v,h|θ)P(v|θ)=1Z(θ)∑he−E(v,h|θ) 
可知,能量E和概率P是成反比的关系,所以通过最大化P,才能使能量值E最小。最大化似然函数常用的方法是梯度下降法(这是NN主流方法,在此不再赘述。)

对数似然函数对参数求导分析:

  • 首先是似然函数的对数形式:ln(P(vt))ln(P(vt)), vtvt表示模型的输入数据。

  • 然后对参数Wij,ai,bjWij,ai,bj分别进行求导,以WijWij为例:

∂ln(P(vt))∂wij=P(hj=1|vt)vti−∑vP(v)P(hj=1|v)vi∂ln(P(vt))∂wij=P(hj=1|vt)vit−∑vP(v)P(hj=1|v)vi
∂ln(P(vt))∂ai=vti−∑vP(v)vi∂ln(P(vt))∂ai=vit−∑vP(v)vi
∂ln(P(vt))∂bj=P(hj=1|vt)−∑vP(v)P(hj=1|v)∂ln(P(vt))∂bj=P(hj=1|vt)−∑vP(v)P(hj=1|v)

由于上面三式的第二项中都含有P(v)P(v), P(v)P(v)中仍然含有参数,所以它是式中求不出来的。所以,有很多人就提出了一些通过采样逼近的方法来求每一个式子中的第二项。

5、Gibbs采样算法

因为在上一节末尾讲对参数的求导中仍然存在不可求项P(v)P(v), P(v)P(v)表示可见层节点的联合概率。所以,要想得到P(v)P(v)的值,就得要逼近它,求它的近似值。

Gibbs采样的思想是:虽然不知道一个样本数据x=(x1,x2,...,xn)x=(x1,x2,...,xn)的联合概率P(x)P(x),但是知道样本中每一个数据的条件概率P(xi|x1,x2,...,xi−1,xi+1,...,xn)P(xi|x1,x2,...,xi−1,xi+1,...,xn) (假设每一个变量都服从一种概率分布),则我可以先求出每一个数据的条件概率值,得到x的任一状态 [x1(0),x2(0),...,xn(0)][x1(0),x2(0),...,xn(0)]。然后,我用条件概率公式迭代对每一个数据求条件概率。最终,迭代k次的时候,x的某一状态[x1(k),x2(k),...,xn(k)][x1(k),x2(k),...,xn(k)] 将收敛于x的联合概率分布P(x)P(x)。

对于RBM来讲,则执行过程如下图所示:

Gibbs采样过程

求解过程是: 
假设给我一个训练样本v0v0,根据公式

P(hj=1|v0)=f(bj+∑i∈v0viWij)P(hj=1|v0)=f(bj+∑i∈v0viWij)

求  h0h0 中每个节点的条件概率; 
再根据公式

P(vi=1|h0)=f(ai+∑j∈h0Wijhj)P(vi=1|h0)=f(ai+∑j∈h0Wijhj)

求 v1v1 中每个节点的条件概率,然后依次迭代,直到执行K步(K足够大),此时 P(v|h)P(v|h) 的概率将收敛于 P(v)P(v) 的概率。如下所示: 


目前先写这些,后续还会补充

参考文献

1、受限玻尔兹曼机和深度置信网络 - jh.ding - 博客园 
2、受限玻尔兹曼机—百度百科 
3、限制玻尔兹曼机(Restricted Boltzmann Machine)学习笔记(一)

受限玻尔兹曼机(Restricted Boltzmann Machine)分析相关推荐

  1. tensorflow玻尔兹曼机_受限玻尔兹曼机(Restricted Boltzmann Machine)

    受限玻尔兹曼机(Restricted Boltzmann Machine) 1. 生成模型 2. 参数学习 3. 对比散度学习算法 由于受限玻尔兹曼机的特殊结构,因此可以使用一种比吉布斯采样更有效 的 ...

  2. 29 深度玻尔兹曼机 Deep Boltzmann Machine

    1 Introduction 本章介绍的是深度玻尔兹曼机(Deep Boltzmann Machines,DBM),应该算是玻尔兹曼机系列的最后一个模型了.我们前面介绍的三种玻尔兹曼机和今天将要介绍的 ...

  3. 21 RBM(Restricted Boltzmann Machine)——受限玻尔兹曼机

    文章目录 21 RBM(Restricted Boltzmann Machine)--受限玻尔兹曼机 21.1 背景介绍 21.2 RBM模型表示 21.3 Inference问题 21.4 Marg ...

  4. 受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)

    这篇写的主要是翻译网上一篇关于受限玻尔兹曼机的tutorial,看了那篇博文之后感觉算法方面讲的很清楚,自己收获很大,这里写下来作为学习之用. 原文网址为:http://imonad.com/rbm/ ...

  5. 【零散知识】受限波兹曼机(restricted Boltzmann machine,RBM)和深度置信网络(deep belief network,DBN)

    前言: { 最近一直在想要不要去线下的英语学习机构学英语 (本人的英语口语能力实在是低).如果我想完成今年的年度计划,那么今年就没时间学英语了. 这次的内容是之前落下的深度置信网络(deep beli ...

  6. Restricted Boltzmann Machine(限制玻尔兹曼机 RBM)

    RBM原理: 玻尔兹曼机最初是作为一种广义的"联结主义"引入,用来学习向量上的任意概率分布.联结主义(connectionism)的中心思想是,当网络将大量简单计算单元连接在一起时 ...

  7. 受限Boltzmann机(Restricted Boltzmann Machine)

    起源:Boltzmann神经网络 Boltzmann神经网络的结构是由Hopfield递归神经网络改良过来的,Hopfield中引入了统计物理学的能量函数的概念. 即,cost函数由统计物理学的能量函 ...

  8. Restricted Boltzmann Machine (RBM)限制波尔兹曼机

    假设有一个二部图,每一层的节点之间没有链接,一层是可视层,即输入数据层(v),一层是隐藏层(h),如果假设所有的节点都是随机二值变量节点(只能取0或者1值),同时假设全概率分布p(v,h)满足Bolt ...

  9. keras 受限玻尔兹曼机_目前深度学习的模型有哪几种,适用于哪些问题?

    深度学习的模型有很多, 目前开发者最常用的深度学习模型与架构包括 CNN.DBN.RNN.RNTN.自动编码器.GAN 等.雷锋网搜集整理了涉及以上话题的精品文章,供初学者参考,加速深度学习新手入门. ...

最新文章

  1. 雷军旗下金山云冲刺IPO:3年营收74亿,小米系贡献23%,CEO王育林仅持股2.1%
  2. TLD(Tracking-Learning-Detection)学习与源码理解之(六)
  3. MUI调用原生自定义方法实现计算缓存与清空缓存
  4. 谈CRM产品设计的指导思想
  5. 什么是JDK,什么是JRE?JDK的安装和环境变量的配置
  6. java过滤器命名_java 过滤指定后缀文件
  7. 19年PDYZ冬令营游记
  8. PHP 二维数组根据某个字段排序
  9. lzg_ad:EWF RAM Reg模式原理介绍
  10. java rxtx串口读写_Win7环境下Java串口数据读写(RXTX)
  11. 抖音视频如何一键批量下载
  12. Java精进-20分钟学会mybatis使用
  13. Linux -- 代理服务器(Squid Server)的配置与应用1
  14. 14.1 来自Bitly的USA.gov的数据(2)
  15. 东京秋叶原谢幕,彼岸电子城路在何方
  16. linux apk 拆分 odex,android apk反编译和odex转dex-Go语言中文社区
  17. 一文读懂自动驾驶中常用的定位算法之NDT点云配准算法
  18. 为什么很多人自律,最后变成了放纵?
  19. windows 8/8.1/10 下prolific usb-to-serial common port quds 无法安装解决办法
  20. C语言循环结构程序(while循环、do while循环、for循环、break终止、continue结束)

热门文章

  1. 广东计算机应用基础试题及答案2019,2019年计算机应用基础试题库及答案.pdf
  2. python excel操作xlrd_python操作Excel读写--使用xlrd
  3. 效率 每秒_每秒看懂超过5.3亿张图片!异构计算是如何发挥AI效率的?
  4. sql update 多个字段_SQL学习之路-20190707
  5. android 定制ui,AndroidSDK-UI定制
  6. python调用函数示例_python 动态调用函数实例解析
  7. java map join_HashMap 常见应用:实现 SQL JOIN
  8. java多线程写在哪一层_面试知识点三:Java多线程
  9. linux php 依赖,在php5-fpm-alpine docker容器中安装php-gd依赖于alpine linux
  10. 2019计算机考研在职研究生,2019双证在职研究生报名条件