(六)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 能 ...
随机推荐
- C++默认参数(转)
函数的默认参数值,即在定义参数的时候同时给它一个初始值.在调用函数的时候,我们可以省略含有默认值的参数.也就是说,如果用户指定了参数值,则使用用户指定的值,否则使用默认参数的值. void Func( ...
- JavaWeb开发好资料
以下来源:http://oss.org.cn/ossdocs/ Documents 操作系统: GNU, Linux, Linux核心, Linux Kernel API, Linux核心架构: a1 ...
- UVA 12373 Pair of Touching Circles
思路:(注意2个圆的半径可以不一样) 有2种情况: 1) 水平和竖直放.这种情况很简单,刚开始以为只有这种情况,但是样例5不对,后来知道还有一种情况. 2)斜线也可以放.只要满足勾股数就可以.现在的问 ...
- Gradle Goodness: Rename Ant Task Names When Importing Ant Build File
Migrating from Ant to Gradle is very easy with the importBuild method from AntBuilder. We only have ...
- windows条件下,Ping加上时间戳,并保存到文件,适用于测试网络
在c盘下面新建文件 ping.vbs 在 ping.vbs中输入代码如下: Dim args, flag, unsuccOut args="" otherout="&qu ...
- iOS开发--基于AFNetWorking3.0的图片缓存分析
图片在APP中占有重要的角色,对图片做好缓存是重要的一项工作.[TOC] 理论 不喜欢理论的可以直接跳到下面的Demo实践部分 缓存介绍 缓存按照保存位置可以分为两类:内存缓存.硬盘缓存(FMDB.C ...
- JavaPersistenceWithHibernate第二版笔记-第五章-Mapping value types-006类型转换器( @Converter(autoApply = true) 、type="converter:qualified.ConverterName" )
一.结构 二.代码 1. package org.jpwh.model.advanced; import java.io.Serializable; import java.math.BigDecim ...
- 《从零开始学习jQuery》及《jQuery风暴》学习笔记
第一章 jQuery入门 1.用$()函数其实是一个事件,使用这个函数调用的方法,会在DOM加载完毕.资源文件加载完之前触发. 第二章 必须知道的JavaScript知识 1.JavaScript实际 ...
- android-exploitme(七):高级加密
在上一个议题上我们解释了为什么不能把信息明文保存在设备上,应该加密,那么加密就是安全的吗? 下面来看一下, 编译BasicEncryptionSolution.apk,安装
- UML元素分析