0

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

如果我希望我的输入数据是真实值,我会改变可见单位和隐藏单位吗?还是只是可见单位?

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

4

1 回答 1

0

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

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

可以在Hinton 编写的训练 RBM 的实用指南中找到有关 RBM 训练技巧的精彩指南。

另一个技巧是使用 Persistent Contrastive Divergence,它假设权重更新足够小,不会改变马尔可夫链。在代码中,它等同于激活来自最后白日梦的视觉单元和来自视觉重建的白日梦。根据我的经验,训练所需的时间要少得多,原始论文: http: //www.machinelearning.org/archive/icml2008/papers/638.pdf

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

于 2015-08-27T15:33:58.327 回答