限制玻尔兹曼机(RBMs)理论详解
来源:互联网 发布:unity3d导出html5 编辑:程序博客网 时间:2024/06/10 20:19
一、序
关于RBMs的文章已经有不少了,但是很多资料我在阅读的时候仍然对细节有一些疑惑。在查阅学习了大牛的视频、论文之后,很多问题豁然开朗,且在本文中记录下我对RBMs的粗浅了解。首先从玻尔兹曼机和限制玻尔兹曼机的结构和定义开始:
二、Boltmann Machines:
玻尔兹曼机(Boltmann Machines)的能量函数(Energy function)是:
分布函数:
其中分母Z学名叫做partition function
三、Restricted Boltmann Machines:
限制玻尔兹曼机(Restricted Boltmann Machines,简称RBMs)的能量函数(Energy function)是:
分布函数:
能量函数的能量越小,分布函数相应的概率就越大。
玻尔兹曼机和限制玻尔兹曼机都属于基于能量的模型(Energy-Based Models),从模型图和公式中很容易看出两者的区别:玻尔兹曼机隐含层(和可见层)处于同一层的任意两个节点之间有一条连线;而限制玻尔兹曼机同层变量之间是相互独立的。只要有足够的隐单元,限制玻尔兹曼机可以表示任意的离散分布,玻尔兹曼机的表示能力则更强一些。另一方面,限制玻尔兹曼机比玻尔兹曼机更容易训练。
四、模型学习:
训练RBMs就是学习能量函数的过程,变量中只有输入
Free Energy:
为了后面计算公式的简洁,首先引入Free Energy这个概念:
例如:如果
给定参数和
梯度方法进行优化:
用梯度算法学习RBMs模型参数
对数似然梯度(log-likelihood gradient):
很多文章里喜欢写成负对数似然梯度(negative log-likelihood gradient)的形式,
训练集上的平均负对数似然梯度等于:
式子的第一项称为positive phrase,通过减小对应的FreeEnergy增大训练样本的概率;第二项是negative phrase,作用是增大对应的FreeEnergy来减小模型产生的样本的概率。句话不难理解,因为两项分别是往
FreeEnergy(x) 的梯度下降和FreeEnergy(x~) 的梯度上升方向改变。这也符合最大似然标准,在训练样本上有较大的似然而在其他样本上概率较小。从分类的角度来看,训练样本是正样本,而模型样本是负样本(Negative samples)。
把训练样本代入求均值即可得到梯度公式的第一项
最后,简要概括一下RBMs模型学习方法的步骤:(1)、求偏导,(2)、采样,(3)、估计负对数似然梯度,(4)、梯度下降方法更新参数。
五、Gibbs采样:
对RBMs模型来说, Gibbs主要有两个作用:一是估计negative log-likelihood gradient;二是在训练完模型之后(如DBN,DBN是由多个RBMs叠加而成的),用Gibbs进行采样,可以看到模型对数据的拟合以及网络中间隐含层的抽象效果。
在RBMs模型训练过程中,Gibbs就是用来对negative log-likelihood gradient进行估计的。Gibbs采样分两个小步对
因为在训练过程中,训练模型分布会逐渐逼近训练样本分布,所以第一步可以从训练样本的分布
例如:假设
条件分布:
Gibbs采样主要是根据条件分布迭代进行采样的,所以在采样之前要先推导出条件分布公式。
如果
类似的:
如果
六、Contrastive Divergence:
Contrastive Divergence可以加快RBMs的训练速度,随机选择一个训练样本初始化
k-step Contrastive Divergence(CD-k):MCMC采样k步
借用一下大神Bengio的文章”Learning Deep Architectures for AI”的算法描述:
Persistent CD:
CD只在附近的局部区域取Negative Sample来估计negative log-likelihood gradient,很难取到其它极值区域的样本,Persistent CD可以在一定程度上解决这个问题。Persistent CD的思想很简单,它与CD的区别仅仅在与:用上一次迭代得到的
七、参考资料:
[1].Youtube上Hugo Larochelle的视频讲解:https://www.youtube.com/user/hugolarochelle/videos
[2].DeepLearning tutorial:http://deeplearning.net/tutorial/rbm.html
[3].LSIA:http://www.iro.umontreal.ca/~lisa/twiki/bin/view.cgi/Public/DBNEquations
[4].Yoshua Bengio:Learning Deep Architectures for AI
- 限制玻尔兹曼机(RBMs)理论详解
- TCP协议详解(理论篇)
- TCP协议详解(理论篇)
- EIGRP协议详解(理论部分)
- 【SSH2(理论篇)】--Struts2配置详解
- 【SSH2(理论篇)】--Struts2配置详解
- TCP协议详解(理论篇)
- TCP协议详解(理论篇)
- TCP协议详解(理论篇)
- TCP协议详解(理论篇)
- 【SSH2(理论篇)】--Struts2配置详解
- TCP协议详解(理论篇)
- 详解google Chrome浏览器(理论篇)
- 详解google Chrome浏览器(理论篇)
- 详解google Chrome浏览器(理论篇)
- 在线客服技术详解(理论)
- 【SSH2(理论篇)】--Struts2配置详解
- 详解google Chrome浏览器(理论篇)
- 网站建设基本流程
- 本地代理服务器 开源
- 最新版本的php 适配ecshop
- 用Eclipse搭建Hadoop2.7.1开发环境
- 基于synchronized的对象锁,类锁以及死锁模拟
- 限制玻尔兹曼机(RBMs)理论详解
- Android LayoutInflater详解
- mongodb常用操作语句
- 源码探索系列1---Handler与HandlerLeak的那些事
- Oracle 11G DataGuard重启详细过程~~
- ios 去掉NavigationBar下面的黑线
- jsp+servlet+sql
- 基于注解的SpringMVC
- Android Studio中找到apk