深度学习方法:受限玻尔兹曼机RBM(四)对比散度contrastive divergence,CD

欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld。
技术交流QQ群:433250724,欢迎对算法、技术、应用感兴趣的同学加入

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

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

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

ht1P(h|vt1)vtP(v|ht1)

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

lnP(v)wijP(hi=1|v0)v0jP(hi=1|vk)vkjlnP(v)ai=v0ivkilnP(v)biP(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],

深度学习方法:受限玻尔兹曼机RBM(四)对比散度contrastive divergence,CD_第1张图片

好,到这里基本讲完了,还有一些细节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,受限玻尔兹曼机,deep-learning,对比散度)