RBM如何训练?

Posted jicanghai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RBM如何训练?相关的知识,希望对你有一定的参考价值。

    RBM(Restricted Boltzman Machine,受限玻尔兹曼机)是深度学习的基础,虽然原理比较简单,但实际训练中用到了很多trick,在参考文献中,Hinton为我们披露了几个训练的细节。

 

    第一,输入为实值向量:

    当RBM的输入v是实值向量时,计算隐含层输出h的公式与二值向量是一致的,即 p(h=1|v) = sigm(b+v*w) ,注意,这个公式给出的是h=1的概率,我们真正得到的隐含层输出并不是这个概率,而是二值向量h本身,所以需要对这个概率做二值化处理,h = p(h=1|v) > randn(h)。

    在得到了第一轮的隐含层输出h之后,需要重构第二轮的输入v‘,因为v‘是实值向量,因此这里采用的计算公式是 v‘ = N(c+h*w‘) ,注意,这里得到的不再是p(v‘=1|h),而是直接计算v‘,因为输入变量是实值向量,不需要二值化处理。

    最后,我们要计算第二轮的隐含层输出h‘,所用公式为 p(h‘=1|v‘) = sigm(b+v‘*w),同上,这里我们仍然需要做二值化处理,得到真正的h‘。

    以上是理论上的计算过程,但是在真实计算中,Hinton做了细节的处理,主要表现在:1. h是二值化的,2. v‘和h‘都是实值的。对于第一点,Hinton的解释是为了防止过拟合,对于第二点,Hinton的解释是为了减少噪声;

  第二,输入为二值向量:

  根据上面的分析很容易得到,仅列出公式, p(h=1|v) = sigm(b+v*w),p(v‘=1|h) = sigm(c+h*w‘),p(h‘=1|v‘) = sigm(b+v‘*w)。

  同样,为了防止过拟合、减少噪声,h是二值化的,而v‘和h‘都是实值的。

  第三,关于输出:

  RBM的输出都是二值化的向量,并且前一层的输出即是后一层的输入。

 

参考文献:

Krizhevsky A, Hinton G E. Using very deep autoencoders for content-based image retrieval[C]//ESANN. 2011.

以上是关于RBM如何训练?的主要内容,如果未能解决你的问题,请参考以下文章

使用受限玻尔兹曼机提取音频特征

受限玻尔兹曼机(RBM)和能量函数

预训练如何改进神经网络中的分类?

如何找出 RBM 无法正常工作的原因?

Introduction to RBM 总结

DBN分类基于matlab深度置信网络DBN变压器故障诊断含Matlab源码 2284期