受限玻尔兹曼机器与多层神经网络


22

我一直想尝试使用神经网络来解决我面临的分类问题。我碰到了有关注重成果的管理的论文。但是据我了解,它们与拥有多层神经网络没有什么不同。这个准确吗?

此外,我与R合作,没有看到RBM的任何罐头包装。我确实碰到过有关深度学习网络的文献,这些深度学习网络基本上是堆叠的RBM,但不确定在R中实现它们是否值得努力。有人会提出任何建议吗?谢谢


3
他们比backprop训练的多层网络不同。以下是各种神经网络的一些资源:stats.stackexchange.com/a/36257/13669
Stumpy Joe Pete

Answers:


21

首先,RBM肯定不同于普通的神经网络,如果使用得当,它们可以实现更好的性能。同样,训练几层RBM,然后将找到的权重用作Mulitlayer NN的起点,通常比简单使用多层NN产生更好的结果。

我能想到的最好的指示是由杰弗里·欣顿(Geoffrey Hinton)教授的Coursera课程,他是负责成果管理制的人之一:

https://class.coursera.org/neuralnets-2012-001/class/index

对于感兴趣的任何人,有关RBM和降噪自动编码器的视频都是宝贵的学习资源。

至于在R中的实现,我也不知道,但是如果您想实现它,最好不要使用纯R(除非您的数据不是很大)。RBM的训练需要相当长的时间,并且如果您使用纯R而不是R与C一起使用,则RBM可能会显着增长。


1
我可以说R的性能问题,因为我已经在其中写了一些RBM。绝大部分的计算时间都花在矩阵乘法上,在R中,矩阵乘法的确比其他语言要慢(可能是3或5倍)。使用自定义的BLAS(线性代数库)为自己的系统重新编译R会很有帮助,因为可以使用Rcpp将慢速部分转换为C ++。实际上,编写一个隐藏层的RBM足够快,以至于在尝试优化速度之前,以您最熟悉的任何一种语言编写它可能都有意义。
David J. Harris 2013年

@David J. Harris您是否在R中共享了任何实现?我很想看看他们。
2014年

1
@Zach我现在很忙,但是我会看到以后可以做些什么来开源。如果您不介意整理未记录/完成的项目,也可以通过电子邮件发送给我,以获得我所拥有的副本。
David J. Harris 2014年

8

中的R可以使用neuralnetRSNNS(它提供一个接口给斯图加特神经网络模拟器),调整至标准多层神经网络,但也有RBM差异。

关于在R中实现深层神经网络,我认为唯一有价值的策略是与现有FOSS实现进行接口连接,这通常比仅自己重新实现事情要好得多(我从来不完全理解为什么每个人都需要重新发明轮子)。R提供了许多功能来执行此操作,您可以利用R的数据处理以及现有解决方案的速度和即用型方面。例如,可以将MDP与Python / R接口功能接口,例如,参见本文

编辑:统计意义上的Andrew Landgraf 为RBM提供了一些R代码

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.