欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld

技术交流QQ群:433250724,欢迎对算法、技术、应用感兴趣的同学加入

上篇讲到,如果用Gibbs Sampling方法来训练rbm会非常慢,本篇中介绍一下对比散度contrastive divergence, CD算法。

我们希望得到P(v)分布下的样本,而我们有训练样本,可以认为训练样本就是服从P(v)的。因此,就不需要从随机的状态开始gibbs采样,而从训练样本开始。

CD算法大概思路是这样的,从样本集任意一个样本v0开始,经过k次Gibbs采样(实际中k=1往往就足够了),即每一步是:

ht−1∼P(h|vt−1)vt∼P(v|ht−1)

得到样本vk,然后对应于上一篇三个单样本的梯度,用vk去近似:

∂lnP(v)∂wij≈P(hi=1|v0)v0j−P(hi=1|vk)vkj∂lnP(v)∂ai≈=v0i−vki∂lnP(v)∂bi≈P(hi=1|v0)−P(hi=1|vk)

上述近似的含义是说,用一个采样出来的样本来近似期望的计算。到这里,我们就可以计算LS的梯度了,上面的CD-k算法是用于在一次梯度更新中计算梯度近似值的。下面给出CD-k的算法执行流程,这里小偷懒一下,就借用截图了[7]。

其中,sample_h_given_v(v,W,a,b),做的事情是这样的(sample_v_given_v(h,W,a,b)类似):

记qj=P(hj|v),j=1,2,…,nh,产生一个[0,1]的随机数rj,对每一个hj,如果rj<qj,则hj=1,否则hj=0。

OK, 有了CD-k算法,我们也可以总结RMB整个算法了[7],

好,到这里基本讲完了,还有一些细节trick,是不在RBM本身范畴的,在实现的时候可以具体参考[2]。后面有时间再补一篇关于RBM代码的解读。

参考资料

[1] http://www.chawenti.com/articles/17243.html

[2] 张春霞,受限波尔兹曼机简介

[3] http://www.cnblogs.com/tornadomeet/archive/2013/03/27/2984725.html

[4] http://deeplearning.net/tutorial/rbm.html

[5] Asja Fischer, and Christian Igel,An Introduction to RBM

[6] G.Hinton, A Practical Guide to Training Restricted Boltzmann Machines

[7] http://blog.csdn.net/itplus/article/details/19168937

[8] G.Hinton, Training products of experts by minimizing contrastive divergence, 2002.

[9] Bengio, Learning Deep Architectures for AI, 2009

深度学习方法:受限玻尔兹曼机RBM(四)对比散度contrastive divergence,CD的更多相关文章

  1. 深度学习方法:受限玻尔兹曼机RBM(三)模型求解,Gibbs sampling

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 接下来重点讲一下RBM模型求解 ...

  2. 深度学习方法:受限玻尔兹曼机RBM(一)基本概念

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 最近在复习经典机器学习算法的同 ...

  3. 基于受限玻尔兹曼机(RBM)的协同过滤

    受限玻尔兹曼机是一种生成式随机神经网络(generative stochastic neural network), 详细介绍可见我的博文<受限玻尔兹曼机(RBM)简介>, 本文主要介绍R ...

  4. 深度学习方法:受限玻尔兹曼机RBM(二)网络模型

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入 上解上一篇RBM(一)基本概念, ...

  5. 受限玻尔兹曼机RBM

    相关算法 python代码参考http://blog.csdn.net/zc02051126/article/details/9668439#(作少量修改与注释) #coding:utf8 impor ...

  6. 受限玻尔兹曼机RBM—简易详解

  7. 受限玻尔兹曼机(Restricted Boltzmann Machine)

    受限玻尔兹曼机(Restricted Boltzmann Machine) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. 生成模型 2. 参数学 ...

  8. 七.RBM受限玻尔兹曼机

    1.受限玻尔兹曼机   玻尔兹曼机是一大类的神经网络模型,但是在实际应用中使用最多的则是受限玻尔兹曼机(RBM). 受限玻尔兹曼机(RBM)是一个随机神经网络(即当网络的神经元节点被激活时会有随机行为 ...

  9. 受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)

    这篇写的主要是翻译网上一篇关于受限玻尔兹曼机的tutorial,看了那篇博文之后感觉算法方面讲的很清楚,自己收获很大,这里写下来作为学习之用. 原文网址为:http://imonad.com/rbm/ ...

随机推荐

  1. mysql语句及执行计划

    数据库链接: mysql -uroot -p <!--数据库连接-->mysql -h10.0.0.100 -uuser -passwordshow databases <!--查看 ...

  2. 51nod 1215 数组的宽度&poj 2796 Feel Good(单调栈)

    单调栈求每个数在哪些区间是最值的经典操作. 把数一个一个丢进单调栈,弹出的时候[st[top-1]+1,i-1]这段区间就是弹出的数为最值的区间. poj2796 弹出的时候更新答案即可 #inclu ...

  3. BZOJ1509 NOI2003 逃学的小孩

    Description: Input: 第一行是两个整数N(3  N  200000)和M,分别表示居住点总数和街道总数.以下M行,每行给出一条街道的信息.第i+1行包含整数Ui.Vi.Ti(1 ...

  4. Linux IO Scheduler

    一直都对linux的io调度算法不理解,这段时间一直都在看这方面的内容,下面是总结和整理的网络上面的内容.生产上如何建议自己压一下.以实际为准. 每个块设备或者块设备的分区,都对应有自身的请求队列(r ...

  5. springcloud文章推荐

    有幸加入到springcloud中国社区,在这里获取到了不一样的技术,也接触到了不少的大牛! 这篇文章对于springcloud能否在企业中应用或者对springcloud想了解的人个人感觉写的非常好 ...

  6. Value does not fall within the expected range 值不在预期的范围内

    用vs2012 打开web.config时,提示如下错误:“Value does not fall within the expected range”; 中文提示:“值不在预期的范围内” 解决方案: ...

  7. WCF使用注意事项

    执行如下 批处理:"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\svcutil.exe" http://127.0.0.1: ...

  8. CentOS7安装Memcached 三步曲

    1.yum 安装 yum clean allyum -y updateyum -y install memcached 2.Memcached 运行 memcached -h //查看考号修改配置vi ...

  9. 【poj1901-求区间第k大值(带修改)】树状数组套主席树

    901: Zju2112 Dynamic Rankings Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 7025  Solved: 2925[Sub ...

  10. 【BZOJ】3566: [SHOI2014]概率充电器

    [算法]树型DP+期望DP [题意]一棵树上每个点均有直接充电概率qi%,每条边有导电概率pi%,问期望有多少结点处于充电状态? [题解]引用自:[BZOJ3566][SHOI2014]概率充电器 树 ...