反向传播学习无法收敛

时间:2012-09-27 08:54:47

标签: neural-network backpropagation

我使用3层神经网络进行分类问题:1)~2k神经元2)~2k神经元3)20个神经元。我的训练集包含2个示例,每个示例中的大多数输入都是零。出于某种原因,在反向传播训练之后,网络为两个示例提供了几乎相同的输出(对于仅1个示例有效或对于输出具有1.0,其中示例之一具有1)。它是在第一个时代之后来到这个状态,并且之后变化不大,即使学习率是最小的双重谷。我使用sigmoid作为激活函数。 我认为我的代码可能有问题,所以我使用了AForge开源库,看起来它也遇到了同样的问题。 这可能是什么问题?

解决方案:我删除了一层,并将隐藏层中的神经元数量减少到800

2 个答案:

答案 0 :(得分:3)

2000年到2000年,20岁是巨大的。这大约需要400万个权重来确定,这意味着算法必须搜索400万维空间。在这种情况下,任何优化算法都将完全不知所措。我假设你正在使用渐变下降,这甚至不是那么强大,所以在这个巨大的搜索空间中,算法可能会陷入局部最优状态。

简化您的模型!

添加了:

还请更详细地描述您正在尝试做什么。你真的只有2个训练样例吗?这就像尝试使用400万维平面对2个点进行分类。这对我没有意义。

答案 1 :(得分:0)

您提到大多数输入为零。要减少搜索空间的大小,请尝试删除训练示例中的冗余。例如,如果

trainingExample[0].inputValue[i] == trainingExample[1].inputValue[i] 

然后x.inputValue [i]没有NN的信息承载数据。

另外,也许不清楚,但似乎有两个训练样例看起来很小。