我正在尝试使用神经网络。我有一个网络,有8个输入神经元,5个隐藏和2个输出。当我让网络用反向传播学习时,有时候,它会在单次训练迭代之间产生更糟糕的结果。可能是什么原因?它不应该是实现错误,因为我甚至尝试使用Java简介到神经网络的实现,它完全相同。
答案 0 :(得分:1)
没有错。反向传播只是一种梯度优化,并且梯度方法不能保证在每次迭代中使误差变小(你确实保证存在一个非常小的步长/学习速率具有这样的属性,但实际上没有办法找到它);此外,你可能会在每个样本进行训练后更新权重随机,这在这个问题上更加“不稳定”(因为你没有真正计算真正的梯度)。但是,如果由于这个原因,您的方法不会收敛 - 考虑正确缩放数据以及降低学习率并可能添加动量项。这些只是基于梯度的优化相关问题,而不是BP本身。