machine-learning - 反向传播神经网络 - 错误不收敛

标签 machine-learning backpropagation neural-network

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

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

我使用trainingRate 和momentum 来计算增量权重。

我已将输入规范化如下

from sklearn import preprocessing

min_max_scaler = preprocessing.MinMaxScaler()
X_train_minmax = min_max_scaler.fit_transform(input_array)

我使用 1 个隐藏层,其中具有 sigmoid 和线性激活函数,分别用于输入隐藏和隐藏输出。

我使用trainingRate = 0.0005、momentum = 0.6、Epochs = 100,000 进行训练。任何更高的训练率都会导致 Nan 的错误增加。 0.5 到 0.9 之间的动量值可以正常工作,任何其他值都会产生错误 Nan。

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

是因为异常值吗?我需要从训练数据中清除这些值吗?

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

最佳答案

嗯,我遇到了类似的问题,仍然没有解决它,但我可以告诉你我发现的一些事情。我认为网络过度拟合,我的错误在某些时候下降然后又开始上升,验证集也是如此......你也是这种情况吗?

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

希望这有帮助!

关于machine-learning - 反向传播神经网络 - 错误不收敛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21988414/

相关文章:

python - TensorFlow 训练 - "Batch size"和 tf.unpack - 解包非 "batch sized"动态值?

java - java中的神经网络实现

python - tensorflow 中实现的 sigmoid 函数和从头实现的有什么区别

python - 使用神经网络学习分类值的分布

python - 在 Python 中使用 matplotlib 绘制多个图

python - AND 逻辑门的单层神经网络 (Python)

matlab - BNT gaussian_CPD 的简单示例/用例?

matlab - 神经网络成本函数计算得到 NaN 或 Inf

machine-learning - 神经网络中的误差和准确度较低。

tensorflow - 如何在 Keras 中绘制 MLP 模型的训练损失和准确度曲线?