Machine learning 神经网络学习速度快,误报率高
我最近开始实现一个前馈神经网络,我使用反向传播作为学习方法。我一直用它作为向导 然而,在第一个历元之后,我的错误是0。在将网络用于我的实际用途之前,我尝试过简单的网络结构: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)),反向传播误差,最后调整权重 每个神经元的新权重=权重+学习率*神经元的错误*权重的输入 每个隐藏神经元的误差=(所有
- 4个二进制输入,1,1,0,0
- 2个隐藏层,每个层4个神经元
- 1个输出神经元,1.0应=有效输入
任何帮助都将不胜感激。尽管您声明使用的是前馈/反向支持的标准NN方法,但您尚未描述您实际如何实现这一点。您提到您使用“galaxy”链接作为指南,但我注意到,在“galaxy”页面上,没有提到对节点应用偏差。也许你没有包括这个重要的组成部分?Nate Kohl对NN节点应用偏差的作用进行了很好的讨论,参见
接下来,不要使用两个隐藏层,而是尝试只使用一个隐藏层。您可能必须增加该层中的节点数,但是对于大多数实际问题,您应该能够通过一个隐藏层获得一个好的解决方案。它很可能会更稳定,并且肯定会使您更容易了解backprop的情况。嗯,0.0001对我来说是合理的。您可能会晃动其他常数,或者使用不同的随机集设定初始神经网络权重 如果你的火车数据是正常的,那么在你得到正确的神经网络之前,做上千次或更多的刺激是完全正常的 有许多技术可以更快地获得最终结果。 例如,作为激活函数,您可以使用TanH或Relu 您还可以在x个时期内从0.001降低到0.0001,或者根据错误率降低。0.0001对于学习率来说不一定太低;有时你确实需要一个小的学习速度来取得进步。如果您还没有这样做,请尝试将数据正常化,因为这通常会增加学习率的大小。