Machine learning 神经网络学习速度快,误报率高

Machine learning 神经网络学习速度快,误报率高,machine-learning,neural-network,backpropagation,supervised-learning,Machine Learning,Neural Network,Backpropagation,Supervised Learning,我最近开始实现一个前馈神经网络,我使用反向传播作为学习方法。我一直用它作为向导 然而,在第一个历元之后,我的错误是0。在将网络用于我的实际用途之前,我尝试过简单的网络结构: 4个二进制输入,1,1,0,0 2个隐藏层,每个层4个神经元 1个输出神经元,1.0应=有效输入 每个训练历元运行测试输入(1,1,0,0),计算输出误差(sigmoid导数*(1.0-sigmoid)),反向传播误差,最后调整权重 每个神经元的新权重=权重+学习率*神经元的错误*权重的输入 每个隐藏神经元的误差=(所有

我最近开始实现一个前馈神经网络,我使用反向传播作为学习方法。我一直用它作为向导

然而,在第一个历元之后,我的错误是0。在将网络用于我的实际用途之前,我尝试过简单的网络结构:

  • 4个二进制输入,1,1,0,0
  • 2个隐藏层,每个层4个神经元
  • 1个输出神经元,1.0应=有效输入
每个训练历元运行测试输入(1,1,0,0),计算输出误差(sigmoid导数*(1.0-sigmoid)),反向传播误差,最后调整权重

每个神经元的新权重=权重+学习率*神经元的错误*权重的输入

每个隐藏神经元的误差=(所有输出神经元误差之和*连接权重)*神经元的s形导数

问题是,我的学习率必须为0.0001,才能在降低错误方面看到不同时代之间的任何“进步”。在这种情况下,错误大约从30.0开始。任何较大的学习率和错误都会在第一次通过后导致0,从而导致误报

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

我是一个神经网络新手,所以我几乎可以肯定问题在于我的网络。
任何帮助都将不胜感激。

尽管您声明使用的是前馈/反向支持的标准NN方法,但您尚未描述您实际如何实现这一点。您提到您使用“galaxy”链接作为指南,但我注意到,在“galaxy”页面上,没有提到对节点应用偏差。也许你没有包括这个重要的组成部分?Nate Kohl对NN节点应用偏差的作用进行了很好的讨论,参见


接下来,不要使用两个隐藏层,而是尝试只使用一个隐藏层。您可能必须增加该层中的节点数,但是对于大多数实际问题,您应该能够通过一个隐藏层获得一个好的解决方案。它很可能会更稳定,并且肯定会使您更容易了解backprop的情况。

嗯,0.0001对我来说是合理的。您可能会晃动其他常数,或者使用不同的随机集设定初始神经网络权重

如果你的火车数据是正常的,那么在你得到正确的神经网络之前,做上千次或更多的刺激是完全正常的

有许多技术可以更快地获得最终结果。 例如,作为激活函数,您可以使用TanH或Relu 您还可以在x个时期内从0.001降低到0.0001,或者根据错误率降低。

0.0001对于学习率来说不一定太低;有时你确实需要一个小的学习速度来取得进步。如果您还没有这样做,请尝试将数据正常化,因为这通常会增加学习率的大小。