Machine learning 反向传播神经网络-误差不收敛

Machine learning 反向传播神经网络-误差不收敛,machine-learning,backpropagation,neural-network,Machine Learning,Backpropagation,Neural Network,我正在为我的模型使用反向传播算法。它在一个简单的异或情况下工作得非常好,当我用实际数据的较小子集测试它时 总共有3个输入和一个输出(0,1,2) 我已将数据集拆分为培训集(80%约为5.5k),其余20%作为验证数据 我使用trainigrate和momentum来计算delta权重 我已经规范化了输入,如下所示 从sklearn导入预处理 min\u max\u scaler=预处理。MinMaxScaler() X\u train\u minmax=min\u max\u scaler.fi

我正在为我的模型使用反向传播算法。它在一个简单的异或情况下工作得非常好,当我用实际数据的较小子集测试它时

总共有3个输入和一个输出(0,1,2)
我已将数据集拆分为培训集(80%约为5.5k),其余20%作为验证数据

我使用trainigrate和momentum来计算delta权重

我已经规范化了输入,如下所示

从sklearn导入预处理

min\u max\u scaler=预处理。MinMaxScaler()
X\u train\u minmax=min\u max\u scaler.fit\u变换(输入数组)

我使用1个带sigmoid和线性激活函数的隐藏层分别用于输入隐藏和隐藏输出

我用trainingRate=0.0005,动量=0.6,历代=100000进行训练。任何一个更高级别的列车员都会向Nan报错。动量值介于0.5和0.9之间工作正常,任何其他值都会产生误差

我尝试了隐藏层中不同数量的节点,如3、6、9、10,每种情况下的误差都收敛到4140.327574。我不知道如何减少这种情况。更改激活功能没有帮助。我甚至尝试用高斯激活函数添加另一个隐藏层,但我无法减少任何误差

是因为离群值吗?我是否需要从培训数据中清除这些值?


任何建议都会有很大的帮助,无论是激活功能、隐藏层等。我已经尝试让它工作了相当长的一段时间,现在我有点卡住了。

我有一种类似的问题,仍然没有解决,但我可以告诉你一些我发现的事情。我认为网络是过度拟合,我的误差在某一点下降,然后又开始上升,还有验证集。。。你也是这样吗

检查您是否很好地实现了“提前停止”算法,大多数情况下问题不是反向传播,而是错误分析或验证分析


希望这有帮助

为了验证您的假设,请尝试将异常值添加到简单案例中,并查看它的反应。在一些异常值清理中,错误确实减少到~1.5k。然而,这个模型还不太好,因为数据,我应用了反向传播算法,或者两者兼而有之。谢谢你的评论。我仍然没有得到完美的模型,但一些更改有助于减少错误。1.我使用的输出值属于[0,1,2],而它应该是数组[1,0,0]或[0,1,0]或[0,0,1]2。我用随机梯度下降法接近全局极小值。如果我有任何突破,我会更新。至于过度拟合,你可能在隐藏层中有大量节点。减少它可能会有所帮助。我的问题是它是收敛的,但误差成本仍然很重要,甚至可以被认为是一个合理的假设。