首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在DBN中实现反向传播时的奇怪行为

在DBN中实现反向传播时的奇怪行为
EN

Stack Overflow用户
提问于 2014-04-24 17:59:26
回答 1查看 172关注 0票数 1

目前,我正在尝试实现深度信念网络。但我遇到了一个非常奇怪的问题。我的源代码可以在这里找到:https://github.com/mistree/GoDeep/blob/master/GoDeep/

我首先使用CD实现了RBM,它工作得很好(通过使用Golang的并发特性,它相当快)。然后我开始实现一个具有反向传播的普通前馈网络,然后奇怪的事情发生了。它看起来非常不稳定。当我使用xor gate测试运行它时,它有时会失败,只有当我将隐藏层节点设置为10或更多时,它才不会失败。下面是我是如何计算的

步骤1:计算所有有偏差的激活

步骤2:计算输出误差

第3步:将错误反向传播到每个节点

步骤4:计算每个有动量的节点的增量权重和偏差

步骤1到步骤4我做了一个完整的批次,并总结了这些增量权重和偏差

步骤5:应用平均增量权重和偏差

我遵循了这里的教程http://ufldl.stanford.edu/wiki/index.php/Backpropagation_Algorithm

通常情况下,如果我给它更多的隐藏层节点,它就会起作用。我的测试代码在这里,https://github.com/mistree/GoDeep/blob/master/Test.go

因此,我认为它应该通过结合RBM和普通NN来工作并开始实现DBN。然而,结果却变得非常糟糕。它甚至不能在1000次迭代中学习xor门。有时会出大问题。我试着用它来调试,所以在DBN的PreTrain之后,我做了一个重构。大多数情况下,重建看起来很好,但当preTrain结果完美时,反向传播甚至会失败。

我真的不知道反向传播出了什么问题。我一定是误解了算法,或者在实现过程中犯了一些大错误。

如果可能,请运行测试代码,您将看到它有多奇怪。代码本身是非常易读的。任何提示都将是很好的提前help.Thanks

EN

回答 1

Stack Overflow用户

发布于 2015-08-04 06:18:00

我记得Hinton说过你不能在XOR上训练RBM,关于向量空间的东西不允许两层网络工作。较深的网络具有较少的线性属性,使其能够工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23265656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档