(六)6.14 Neurons Networks Restricted Boltzmann Machines
1.RBM简介
受限玻尔兹曼机(Restricted Boltzmann Machines,RBM)最早由hinton提出,是一种无监督学习方法,即对于给定数据,找到最大程度拟合这组数据的参数。RBM常用于降维,分类,回归与协同过滤,特征学习甚至 topic model ,其网络结构如下:

RBM是一种两层的贝叶斯网络,是Deep Blief Network 的基本组成成分,该网络可网络结构有 n个可视节点和m个隐藏节点 ,其中每个可视节点只与m个隐藏节点相关,与其他可视节点独立,对于隐藏节点同理,RBM中的参数有隐层与可见层的权重参数
,还有偏置项,
为可见层的偏置,
为隐藏层的偏置,以上便是RBM中的所有参数。
为了方便描述,假设每个节点的取值均在{0 ,1}之中,既有对
。
对于一个训练样本x,x={x1,x2 ... xm},对于一个训练好的RBM,其权值W b c 均为定值,这样便可对 x 编码得到 y ={y1,y2 ... yn},在{0,1}的假设下,编码生成1的概率为:

其中
为 sigmod 函数:

所以对应的 yi =1 的概率为
,在该概率图模型中应用接受拒绝采样,以
的概率接受该状态即 yi=1.
同理,在解码时有:

RBM的用途主要有两种:
1)类似栈式自编码器,对数据编码,得到数据的高阶表示,然后使用监督学习的方法进行分类或回归
2)预训练深度神经网络,因为网络层数加深时,为了避免局部最优解,这种用途也类似于栈式自编码器
而且RBM中还可以求得输入输出的联合概率p(v,h)或者条件概率分布p (h|v)。以上均为RBM的使用,下边来看如何用数据训练一个RBM,为了得到RBM的参数,首先引入能量模型。
2.能量模型
先看一个引例,把一个表面粗糙又不太圆的小球,放到一个表面也比较粗糙的碗里,就随便往里面一扔,看看小球停在碗的哪个地方。一般来说停在碗底的可能性比较大,停在靠近碗底的其他地方也可能,甚至运气好还会停在碗口附近(这个碗是比较浅的一个碗);能量模型把小球停在哪个地方定义为一种状态,每种状态都对应着一个能量E ,这个能量由能量函数来定义,小球处在某种状态的概率(如停在碗底的概率跟停在碗口的概率当然不一样)可以通过这种状态下小球具有的能量来定义(换个说法,如小球停在了碗口附近,这是一种状态,这个状态对应着一个能量E ,而发生“小球停在碗口附近”这种状态的概率p ,可以用E 来表示,表示成p=f(E),其中f 是能量函数),其实还有一个简单的理解,球在碗底的能量一般小于在碗边缘的,比如重力势能这,显然碗底的状态稳定些,并且概率大些, 这便是对能量模型的直观理解。
玻尔兹曼网络是一种随机网络,描述一个随机网络可从以下两点入手:
1)概率分布函数。从贝叶斯网的观点来看各个节点的状态取值是概率的随机的,这里用三种概率分布来描述整个RBM网络,联合概率密度,条件概率密度和边缘概率密度。
2)能量函数。随机神经网络的思想来源于统计力学,能量函数是描述整个系统状态的一种测度,系统越有序或者概率分布越集中(比如小球在碗底的情况),系统的能量越小,反之,系统越无序并且概率分布发散(比如平均分布),则系统的能量越大,能量函数的最小值,对应着整个系统最稳定的状态。
RBM中能量模型起啥作用呢?
1)参数估计问题中,当分布未知时,统计力学的一项研究表明,其概率分布可以表示为基于能量的模型,即对于未知的分布,可以将这个分布改写成能量函数的形式。
2)能量函数可以为RBM引入目标函数与目标解,即引入能量函数后,使得学习一组数据的分布变得容易了,能否把求解最优解嵌入能量模型中至关重要,决定这具体问题求解的好坏。
3)能量模型要捕获变量之间的相关性,变量的相关程度决定了能量的高低,把变量的相关关系用图表示出来,并引入概率测度方式就构成了概率图(为什么是概率图?前面一句说了,RBM 是一个图,以概率为测度,所以是概率图)模型的能量模型。
4)对于RBM这种无监督学习方法,要尽可能的去拟合训练数据来求得参数。
RBM的能量函数如下:

这个能量 函数的意思就是,每可视节点和隐藏之间连接结构都有通俗来说就是可视节点的 每一组取值和隐藏都有个能量,通俗来说就是可视节点的每一组取值和隐藏节点的每一组取值都有一个能量,如果可视节点的一组取值(即一个训练样本)为(1,0,1,0,1,1,0),隐藏节点的一组取值(经过RBM编码后的值)为(1,0,1),分别带入到上面的公式,对于训练后的网络已经得到其参数,即 W,b,c 均已知,这样根据能量函数便可求得RBM整个连接结构的能量。但实际情况是 W,b,c 均为未知的,所以要求得这些参数。
现在可以进一步想一下要搞能量函数?前面指出未知分布不好求解但是可以通过能量函数来表示,那么能量函数的概率模型很大程度上可以得到未知分布的概率模型,这样大致就知道了数据的分布,RBM网络是hidden和visible整个框架的能量函数,可以定义这个能量函数出现的概率,如果一个变量组合被认为是合理的,它同时也具有较小的能量。基于能量的概率模型通过能量函数来定义概率分布:显然该能量函数与 hidden 层和 visible 的每个节点均有关,定义联合概率密度:

即现在p(v = v' , h = h')的概率可以由以上能量函数决定, v' 为一组观测值和 h' 为一组隐藏节点的取值,其发生的概率p(v = v' , h = h')是由以上能量函数定义的概率密度表示的。RBM 的概率密度是建立在热力学的解释基础上的,当系统及其周围环境处于热平衡状态时,状态 i 发生的概率如下:

Ei表示系统在状态i时的能量,T为开尔文绝对温度,KB为Boltzmann常数,Z为归一化系数,上述方程中 i 替换为(v ,h),,另KB =T = 1,即得到RBM的概率密度公式。其实这个分布是一个特殊的Gibbs分布,且这个分布是有一组参数的即原来提到的 W , c, b 。
有了这个联合概率,就可以得到一些其他概率:
1)边缘概率

2)条件概率

3.极大似然
RBM中各种分布都已在以上计算中得到,对于输入数据,我们使得训练样本 x 的分布 q(x) 尽量去拟合 RBM 中的可见层的边缘概率 p。通过使得 q 与 p 的KL距离最小即可:

若 p 与 q 完全相同,则
=0,上式第二项可以用
来估计,l 表示训练样本个数,为了使
最小,只需使得
最大即可,等价于使得
最大即可,
不就是p(x)的极大似然估计吗?最终可以得到结论:求解输入样本的极大似然估计,就能使得RBM表示的gibbs分布同样本分布最接近,于是RBM最终可以转换为极大似然估计来求解。这样求解也是有意义的 - 当RBM网络训练完成后,如果让这个RBM网络随机发生若干次状态(当然一个状态是由(v,h)组成的),这若干次状态中,可视节点部分(就是v)出现训练样本的概率要最大。
这样就保证了,在反编码(从隐藏节点到可视节点的编码过程)过程中,能使训练样本出现的概率最大,也就是使得反编码的误差尽最大的可能最小。例如一个样本(1,0,1,0,1)编码到(0,1,1),那么,(0,1,1)从隐藏节点反编码到可视节点的时候也要大概率地编码到(1,0,1,0,1)。
4.模型求解
最大似然估计说白了就是是已经知道了结果,然后寻求使该结果出现的可能性最大的条件,该最大条件下的参数值以此作为最大似然的估计值。带求解的似然函数为 p(v),列出其似然方程为:
,θ为待估计参数(这里为 W,b ,c)。求导有:

带入p(v)有 :

于是 对于 W c b 有:

当 v、h 只取{0,1}的情况下:

那么对于w有:

同理,对 b c 可求得:


对于上述三个公式要求
对应的项,既然目标是让RBM拟合样本的分布,可以考虑让MCMC的状态以训练样本作为起点来进行跳转,这样只需要很少次的状态转移就可到达RBM分布了,hinton老爷子发明的CD-k算法就是这个思想:
对
,选取
然后执行 k 步 Gibbs 采样,对 t = (1, 2, ... ,k) 有:
h(t-1) = P(h | v(t-1))
v(t) = P(v | h(t-1))
利用k步Gibbs采样后的v(k)来估计以上三个公式的期望项
:

CD-K算法描述如下:

注:
进一步可得到:


最后给出完成的RBM训练算法:

参考:
http://www.cnblogs.com/tornadomeet/archive/2013/03/27/2984725.html
http://blog.csdn.net/itplus/article/details/19207371
(六)6.14 Neurons Networks Restricted Boltzmann Machines的更多相关文章
- CS229 6.14 Neurons Networks Restricted Boltzmann Machines
1.RBM简介 受限玻尔兹曼机(Restricted Boltzmann Machines,RBM)最早由hinton提出,是一种无监督学习方法,即对于给定数据,找到最大程度拟合这组数据的参数.RBM ...
- 受限波兹曼机导论Introduction to Restricted Boltzmann Machines
Suppose you ask a bunch of users to rate a set of movies on a 0-100 scale. In classical factor analy ...
- Convolutional Restricted Boltzmann Machines
参考论文:1.Stacks of Convolutional Restricted Boltzmann Machines for Shift-Invariant Feature Learning ...
- Introduction to Restricted Boltzmann Machines
转载,原贴地址:Introduction to Restricted Boltzmann Machines,by Edwin Chen, 2011/07/18. Suppose you ask a b ...
- (六) 6.1 Neurons Networks Representation
面对复杂的非线性可分的样本是,使用浅层分类器如Logistic等需要对样本进行复杂的映射,使得样本在映射后的空间是线性可分的,但在原始空间,分类边界可能是复杂的曲线.比如下图的样本只是在2维情形下的示 ...
- 限制波尔兹曼机(Restricted Boltzmann Machines)
能量模型的概念从统计力学中得来,它描述着整个系统的某种状态,系统越有序,系统能量波动越小,趋近于平衡状态,系统越无序,能量波动越大.例如:一个孤立的物体,其内部各处的温度不尽相同,那么热就从温度较高的 ...
- 受限玻尔兹曼机(RBM, Restricted Boltzmann machines)和深度信念网络(DBN, Deep Belief Networks)
受限玻尔兹曼机对于当今的非监督学习有一定的启发意义. 深度信念网络(DBN, Deep Belief Networks)于2006年由Geoffery Hinton提出.
- (六) 6.2 Neurons Networks Backpropagation Algorithm
今天得主题是BP算法.大规模的神经网络可以使用batch gradient descent算法求解,也可以使用 stochastic gradient descent 算法,求解的关键问题在于求得每层 ...
- Restricted Boltzmann Machines
转自:http://deeplearning.net/tutorial/rbm.html http://blog.csdn.net/mytestmy/article/details/9150213 能 ...
随机推荐
- HDU 4027 Can you answer these queries?(线段树的单点更新+区间查询)
题目链接 题意 : 给你N个数,进行M次操作,0操作是将区间内的每一个数变成自己的平方根(整数),1操作是求区间和. 思路 :单点更新,区间查询,就是要注意在更新的时候要优化,要不然会超时,因为所有的 ...
- (9)nehe教程3--添加颜色
添加颜色: 作为第二课的扩展,我将叫你如何使用颜色.你将理解两种着色模式,在左图中,三角形用的是光滑着色,四边形用的是平面着色. 上一课中我教给您三角形和四边形的绘制方法.这一课我将教您给三角形和四边 ...
- node入门开发遇到的问题
最近在看node入门这本书,https://cnodejs.org/getstart 里面是跟随作者完成一个小的demo,书中不免会有遗漏的,下面是我在实现里面最后一个例子时遇到的问题,希望能够帮助其 ...
- java编译做了哪些事?
Javac编译器,主要做了如下的事情:1.解析与填充符号表: 2.注解处理器: 3.语义分析与字节码生成: 3.1.标注检查 3.2.数据及控制流分析 ...
- Chrome 开发工具指南
Chrome 开发工具指南 谷歌 Chrome 开发工具,是基于谷歌浏览器内含的一套网页制作和调试工具.开发者工具允许网页开发者深入浏览器和网页应用程序的内部.该工具可以有效地追踪布局问题,设置 Ja ...
- 递推DP HDOJ 5328 Problem Killer
题目传送门 /* 递推DP: 如果a, b, c是等差数列,且b, c, d是等差数列,那么a, b, c, d是等差数列,等比数列同理 判断ai-2, ai-1, ai是否是等差(比)数列,能在O( ...
- 快笑死,侯捷研究MFC的原因
与我研究VCL框架代码的原因一模一样:就是N年了,感觉自己还是没有掌握Delphi,惊叹别人各种各样神奇的效果,自己却不会,更不知为什么这样做,离高手的距离还有十万八千里.而且编程的时候,就像侯捷说的 ...
- html5 语音搜索
开始以为是接口什么的,原来这就是语言搜索. 只需要在input加上x-webkit-speech <input type="text" class="text&qu ...
- UML系列01之 UML用例图
UML,全称是Unified Modeling Language,中文是"统一建模语言".通俗点说,UML是一种创建模型的语言. UML是在开发阶段,说明,可视化,构建和书写一个面 ...
- iOS:分割控制器UISplitViewcontroller
分割控制器UISplitViewController <1>功能:它也是ipad的一个新特性,在屏幕上可以同时显示两个控制器,左边一个,右边一个:左边的为主控制器,右边的为详细控制器,主控 ...