神经网络学习快,误报

时间:2014-04-11 10:35:42

标签: machine-learning neural-network backpropagation supervised-learning

我最近开始实施前馈神经网络,并且我使用反向传播作为学习方法。我一直在使用http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html作为指南。

但是,在第一个时代之后,我的错误是0.在将网络用于我的真实目的之前,我尝试过使用简单的网络结构:

  • 4个二进制输入,1,1,0,0。
  • 2个隐藏层,每个4个神经元。
  • 1输出神经元,1.0应该=有效输入。

每个训练时期运行测试输入(1,1,0,0),计算输出误差(S形导数*(1.0 - sigmoid)),反向传播误差并最终调整权重。

每个神经元的新体重=体重+ learning_rate *神经元的误差*体重的输入。

每个隐藏的神经元的错误=(所有输出神经元的误差*连接的重量的总和)*神经元的sigmoid导数。

问题是我的学习率必须为0.0001才能让我看到任何进展'在减少错误方面的时代之间。在这种情况下,错误从~30.0左右开始。任何更高的学习率和错误在第一次通过后导致0,从而导致误报。

此外,当我使用我的真实数据(一组32个音频特征来自样本 - 每个隐藏层有32个神经元)尝试此网络时,我得到同样的问题。到任何噪音都会触发误报的程度。可能这可能是输入功能问题,但是当我使用高音调音符进行测试时,我可以清楚地看到原始数据与低音调数据不同。

我是一个神经网络新手,所以我几乎肯定这个问题与我的网络有关。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

尽管声明您使用的是标准NN前馈/后退方法,但您尚未描述如何实际实现此功能。你提到你正在使用" galaxy"链接作为指导,但我注意到,在" galaxy"在页面中,没有提到将偏差应用于节点。也许你没有包括这个重要的组成部分?关于Nate Kohl应用于NN节点的偏见的作用有很好的讨论,见Role of Bias in Neural Networks

接下来,不要使用两个隐藏图层,请尝试仅使用一个隐藏图层。您可能必须增加该层中的节点数,但是对于大多数实际问题,您应该能够仅使用一个隐藏层获得一个好的解决方案。它很可能会更稳定,并且肯定会让你更容易跟踪backprop发生的事情。

答案 1 :(得分:0)

0.0001对我来说听起来很合理。你可以摆动其他常数或用不同的随机集种子化初始神经网络权重。

如果您的列车数据没问题,那么在您获得正确的神经网络之前,完全可以做到一千次或更多的烦恼。

有许多技术可以更快地达到最终结果。 例如,作为激活功能,您可以使用TanH或Relu 您也可以在x个时期内从0.001减少到0.0001,或者根据错误率减少。