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. 阅读笔记 1 火球 UML大战需求分析

    伴随着七天国庆的结束,紧张的学习生活也开始了,首先声明,阅读笔记随着我不断地阅读进度会慢慢更新,而不是一次性的写完,所以会重复的编辑.对于我选的这本   <火球 UML大战需求分析>,首先 ...

  2. [阅读笔记]Software optimization resources

    http://www.agner.org/optimize/#manuals 阅读笔记Optimizing software in C++   7. The efficiency of differe ...

  3. 《uml大战需求分析》阅读笔记05

    <uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...

  4. <<UML大战需求分析>>阅读笔记(2)

    <<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...

  5. uml大战需求分析阅读笔记01

    <<UML大战需求分析>>阅读笔记(1) 刚读了uml大战需求分析的第一二章,读了这些内容之后,令我深有感触.以前学习uml这门课的时候,并没有好好学,那时我认为这门课并没有什 ...

  6. Hadoop阅读笔记(七)——代理模式

    关于Hadoop已经小记了六篇,<Hadoop实战>也已经翻完7章.仔细想想,这么好的一个框架,不能只是流于应用层面,跑跑数据排序.单表链接等,想得其精髓,还需深入内部. 按照<Ha ...

  7. Hadoop阅读笔记(六)——洞悉Hadoop序列化机制Writable

    酒,是个好东西,前提要适量.今天参加了公司的年会,主题就是吃.喝.吹,除了那些天生话唠外,大部分人需要加点酒来作催化剂,让一个平时沉默寡言的码农也能成为一个喷子!在大家推杯换盏之际,难免一些画面浮现脑 ...

  8. Hadoop阅读笔记(五)——重返Hadoop目录结构

    常言道:男人是视觉动物.我觉得不完全对,我的理解是范围再扩大点,不管男人女人都是视觉动物.某些场合(比如面试.初次见面等),别人没有那么多的闲暇时间听你诉说过往以塑立一个关于你的完整模型.所以,第一眼 ...

  9. Hadoop阅读笔记(四)——一幅图看透MapReduce机制

    时至今日,已然看到第十章,似乎越是焦躁什么时候能翻完这本圣经的时候也让自己变得更加浮躁,想想后面还有一半的行程没走,我觉得这样“有口无心”的学习方式是不奏效的,或者是收效甚微的.如果有幸能有大牛路过, ...

随机推荐

  1. android异常: java.net.ConnectException: localhost/127.0.0.1:8080 - Connection refused

    android手机做下载文件时,报了如下异常: java.net.ConnectException: localhost/127.0.0.1:8080 - Connection refused 模拟器 ...

  2. 初次接触json...

    这两天发现很多网站显示图片版块都用了瀑布流模式布局的:随着页面滚动条向下滚动,这种布局还会不断加载数据并附加至当前尾部.身为一个菜鸟级的程序员,而且以后可能会经常与网站打交道,我觉得我还是很有必要去尝 ...

  3. linux系统中查看系统位数(转载)

    查看系统多少位网上很多种说话   ### getconf WORD_BIT 错误的 这3个是对的        getconf LONG_BIT    echo $HOSTTYPE uname -a  ...

  4. MicroERP软件更新记录1.1

    MicroERP软件更新记录 最新版本:1.1 1.增加固定资产检修.租赁.转移记录 2.增加产品质检单 3.增加零售单(收银台) 4.支持各种主流关系型数据库 5.完善了数据字典,如加入原材料材质. ...

  5. 遍历所有表,取每个表的MAXID更新到ID控制表

    ) Declare @TID int DECLARE Temp_Cursor1 Cursor--定义游标 FOR SELECT Name FROM Sys_Entity OPEN Temp_Curso ...

  6. .NET C# 将 mdb 中数据读为 list<string[]> 其中 path 为数据库地址 ,sql 为查询语句

    using System.Data; using System.Data.OleDb; public static List<string[]> select_list(string pa ...

  7. jacoco原理

    Jacoco的原理 转自:kingzzm 的博客,感谢~ 覆盖率计数器 Jacoco使用一系列的不同的计数器来做覆盖率的度量计算.所有这些计数器都是从java的class文件中获取信息,这些class ...

  8. Linq中关键字的作用及用法

    Linq中关键字的作用及用法 1.All:确定序列中的所有元素是否都满足条件.如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为 true:否则为 false. Demo: 此示例使用 ...

  9. auto_ptr源码剖析

    /* * Copyright (c) 1997-1999 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, ...

  10. Android Fragment (一)

    1.Fragment的产生与介绍   Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视.针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以 ...