限制玻尔兹曼机(RBM):将二进制单位更改为高斯单位或relu单位

时间:2015-08-23 20:04:28

标签: deep-learning rbm

我已经在R中编写了一个带有二进制隐藏/可见单元的RBM的工作实现。我一直在寻找一段时间,但是无法想象如何将二进制单位更改为高斯或ReLU。

如果我希望输入数据是实数值,我会更改可见单位和隐藏单位吗?或者只是可见单位?

让我们说我想改变它们。目前,我正在使用逻辑sigmoid函数(1 /(1 + e ^( - x)))计算隐藏/可见概率。 ReLU使用max(0,x + N(0,1))。正如我目前所理解的那样,我会使用ReLU max函数切换所有出现的逻辑sigmoid函数。但是,这不会产生一些有意义的结果。所以我不确定我实际应该改变什么。

1 个答案:

答案 0 :(得分:0)

您可以在不更改隐藏单元激活的情况下更改可见单元激活。所以你可以拥有伯努利隐藏单位和高斯可见单位。如果对深度网络进行预训练,最好使用与最终网络相同的激活功能(通常是relus)。

我还编写了RBM代码,获得更好结果的一个技巧是不采样视觉重建或白日梦(使用CD-1时)。如果不查看您的代码或让您对结果有一点“理解”,我将无法提供更多帮助。

关于培训RBM技巧的精彩指南可以在Hinton撰写的A practical guide to training RBMs中找到。

另一个提示是使用持续对比发散,假设重量更新足够小,不会改变马尔可夫链。在代码中,它等同于激活最后一个白日梦的视觉单元和视觉重建的白日梦。根据我的经验,培训原始论文的时间要少得多:http://www.machinelearning.org/archive/icml2008/papers/638.pdf

再次发布您的代码和结果,我愿意帮助您浏览它们。