RBM阅读笔记
RBM包含两个层,可见层(visble layer)和隐藏层(hidden layer)。神经元之间的连接具有以下特点:层内无连接,层间全连接。RBM可以看做是一个二分图(神经元当做顶点,神经元之间的连接当做边,)所有节点都是随机二值变量节点(只能取0或者1)。可见层单元用来描述观察数据的一个方面或一个特征,例如,对于黑白图片而言,一个可见单元可能描述的就是图片某处是否为白色。可见层中单元的个数与观测数据的维数相同,用于输入观测数据,隐层则用于刻画观测数据每个维度之间的依赖关系。

n_v,n_h:分别表示可见层和隐藏层中包含的神经元的数目;a:可见层的偏置;b:隐藏层的偏置;W:隐藏层和可见层之间的权值。θ=(W,a,b)表示RBM中的参数。
公式推导:
统计力学的一个基本结论是当系统与外界达到热平衡时,系统处于状态i的概率P_i具有以下形式:
(1)其中,
,被称为归一化常数,这种概率分布的形式叫做正则分布。
定义RBM的能量函数为:
,根据(1)式,状态(v,h)的联合概率分布为:
,其中
RBM假设观测数据的概率分布:
(为方便起见,省去θ),通过已有的模型相关定义和假设,我们可以证明如下两个结论:

其中σ为sigmoid函数。所以,
假定训练样本集合为:
,
,i=1,2,...,n_s,n_s为训练样本的数目,训练RBM的目标就是最大化似然函数(另一种说法 算出尽量符合v(即输入)的概率分布P(v)):

为处理简便,最大化
与最大化
是等价的,因此,训练RBM的目标就变成了最大化
最大化常用的数值方法时梯度上升法,通过迭代的方式来进行逼近,迭代格式:
,其中η>0为学习率。
首先考虑只含单个训练样本v的情况(此部分省略了推导过程,详见【1】),此时
,



上式是只含单个训练样本情形下各偏导数的计算公式。对于含有多个训练样本的情形,即
,有
,从而有如下公式:
,
,
.
上述三个公式中关于
的计算复杂度是
的,这里通常采用MCMC(马尔科夫链蒙特卡洛方法)例如Gibbs采样方法进行采样。但是对
处理的十分缓慢的原因是需要经过许多步的状态转移才能保证采集到的样本符合目标分布。既然我们的目标是让RBM拟合训练样本的分布,那么就让MCMC的状态以训练样本作为起点,这样就只需要很少次的状态转移就能抵达RBM的分布了。基于这个原因,Hinton大神发明了训练RBM的标准算法:对比散度(CD-k)算法。
k步CD算法的步骤为:对
,取初值
,然后执行k布Gibbs采样,在实际应用中,k=1就能保证良好的学习效果。其中第t步(t=1,2,...,k)先后执行:
利用
采样出
;-----sample_h_given_v
利用
采样出
; -----sample_v_given_h
接着,利用k步Gibbs采样后得到的
来近似估计
,具体变为:
,
,
.
这样一来,关于L_S的梯度计算公式就变得具体可算了,CD-k算法的目标是获取一次梯度上升迭代中偏导数
和
的近似值,分别简记为ΔW,Δa,Δb。RBM(W,a,b)表示以W,a,b为参数的RBM网络。这里截取【1】的模块CDK的算法描述:

完整的RBM训练算法:

引用:
【1】http://blog.csdn.net/itplus/article/details/19168937
【2】http://blog.sciencenet.cn/blog-798994-789555.html
【3】http://blog.csdn.net/wbgxx333/article/details/9386607
【4】http://blog.csdn.net/u010681136/article/details/40189349

RBM阅读笔记的更多相关文章
- 阅读笔记 1 火球 UML大战需求分析
伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本 <火球 UML大战需求分析>,首先 ...
- [阅读笔记]Software optimization resources
http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++ 7. The efficiency of differe ...
- 《uml大战需求分析》阅读笔记05
<uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...
- <<UML大战需求分析>>阅读笔记(2)
<<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...
- uml大战需求分析阅读笔记01
<<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...
- Hadoop阅读笔记(七)——代理模式
关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...
- Hadoop阅读笔记(六)——洞悉Hadoop序列化机制Writable
酒,是个好东西,前提要适量.今天参加了公司的年会,主题就是吃.喝.吹,除了那些天生话唠外,大部分人需要加点酒来作催化剂,让一个平时沉默寡言的码农也能成为一个喷子!在大家推杯换盏之际,难免一些画面浮现脑 ...
- Hadoop阅读笔记(五)——重返Hadoop目录结构
常言道:男人是视觉动物.我觉得不完全对,我的理解是范围再扩大点,不管男人女人都是视觉动物.某些场合(比如面试.初次见面等),别人没有那么多的闲暇时间听你诉说过往以塑立一个关于你的完整模型.所以,第一眼 ...
- Hadoop阅读笔记(四)——一幅图看透MapReduce机制
时至今日,已然看到第十章,似乎越是焦躁什么时候能翻完这本圣经的时候也让自己变得更加浮躁,想想后面还有一半的行程没走,我觉得这样“有口无心”的学习方式是不奏效的,或者是收效甚微的.如果有幸能有大牛路过, ...
随机推荐
- iOS开发_内存泄漏、内存溢出和野指针之间的区别
今天,在工作群中,被问到了内存泄漏和野指针指向的区别,自己答的不是很好,特意回来查了资料,在博文中总结一下经验,欢迎指正. 内存泄漏:是指在堆区,alloc 或new 创建了一个对象,但是并没有放到自 ...
- pom 详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- reds Virtual Memory
Virtual Memory technical specification This document details the internals of the Redis Virtual Memo ...
- 简单尝试利用vultr vps自架PPTP上网用于工作学习需要
因为学习和工作的需要用到登陆海外网站查阅相关的资料和文档,之前有需要使用的时候是问网友索要的账户登录本地电脑拨号的,但是老是跟别人要还是不好,决定自己尝试搭建一个长期使用.看到有不少的介绍提到VULT ...
- CSipSimple的插件结构
CSipSimple的第三方编码器是以插件形式集成的,那么它是怎么实现的?我们以音频编码器为例进行说明. 一.何为插件 工程中有一个包,com.csipsimple.plugins.codecs.从包 ...
- VMware-workstation-full-12.0.0-2985596&VMware-player-12.0.0-2985596
VMware-workstation-full-12.0.0-2985596 永久KEY:YV3D2-A0D50-481XP-KPNGE-ZV2ZF VMware-player-12.0.0-2985 ...
- 【python】操作excel——xlrd xlwt xlutils
from xlutils.copy import copy import xlrd # import xlutils #打开已存在的excel rb=xlrd.open_workbook('D:\\1 ...
- Android中的onActivityResult和setResult方法的使用
如果你想在Activity中得到新打开Activity关闭后返回的数据,你需要使用系统提供的startActivityForResult(Intent intent,int requestCode)方 ...
- 2014年6月份第1周51Aspx源码发布详情
企业汽车服务终端管理系统源码 2014-6-3 [VS2010]源码描述:本系统专门服务于(汽车美容4s店) 完整的一套汽车美容管理服务系统. 功能介绍:汽车美容服务终端功能强大而又简便实用,界面友 ...
- html之页面元素印射
首先我遇到了一个问题,尽管不是搞前端开发的但事情交到了我这里就有必要去解决. 而这个问题就是我在这边文本框输入的内容要显示在另一个文本框中其实也是非常简单.但是对于初出茅庐的新手来说就有可能会难倒他. ...