速率层计数如何影响我的神经网络

时间:2015-08-11 18:48:30

标签: machine-learning neural-network

我在java中创建了一个简单的神经元网络: https://github.com/wutzebaer/Neuronal

它只有3个神经元;输入隐藏输出

当输入是> 0.7输出应为1,否则为0

问题1: 当我将我的费率设置为1时,它似乎快速发散,当我选择0.1时,它不会产生结果。为什么这样,我认为较小的费率只需要更长的时间。

问题2: 为什么我这样一个简单的问题只能获得99%的命中率?神经网络不能解决这个问题吗?

问题3: 每层神经元的数量似乎没有多大影响,但是当我选择2层或更多层时,结果会更糟,即使长时间学习也是如此。为什么?不是更好的层次吗?

问题4: 我的微积分是正确的吗?我已经将我的值与http://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/comment-page-1/#comment-17063进行了比较,并将它们更正为1个隐藏层。但我不知道我是否已正确抽取n层

我在这里查看了我的小项目: https://github.com/wutzebaer/Neuronal

CODE

'rules'=>array(
          '<action:\w+>' => 'site/<action>',
          '<controller:\w+>/<id:\d+>'=>'<controller>/view',
          '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
          '<controller:\w+>/<action:\w+>'=>'<controller>/<action>'

1 个答案:

答案 0 :(得分:1)

  

问题1:当我将我的费率设置为1时,它似乎快速发散,当我选择0.1时,它不会产生结果。为什么这样,我认为较小的费率只需要更长的时间。

较小的费率需要更长的时间,但很难说多久。也许你没有运行足够的迭代。

如果1太大且0.1太小,请尝试0.2, 0.3, ...,直到找到合适的内容,并尝试更改迭代次数。

您也可以尝试在学习中添加momentum

  

问题2:为什么我这样一个简单问题的命中率只有99%?神经网络不能解决这个问题吗?

您可能患有overfitting。你用什么数据训练你的网,你在测试什么?

99%并不是很糟糕,但你可以通过正规化(例如weight decay),使用更小的网络(更少的隐藏单元)或使用更多的训练数据来完善它。在您的情况下,培训数据应该很容易生成。

  

问题3:每层神经元的数量似乎没有太大影响,但是当我选择2层或更多层时,即使长时间学习,结果也会更糟。为什么? Aren的更多层次更好?

就像你说的,你的问题非常简单。更多层将导致更复杂的网络,这将过度填充您的简单数据。更大的网络,更强大,将简单地记住您的训练数据,并且它将在测试数据上表现不佳。

更深层次的网络也可能出现其他问题,例如渐变渐变和重量过大。不要使用深度网络来解决这些简单的问题。更大并不总是更好。