2

我正在用反向传播算法训练一个神经网络,这是总体错误的图表:

在此处输入图像描述

(我通过这个公式计算总体误差:http: //www.colinfahey.com/neural_network_with_back_propagation_learning/neural_network_with_back_propagation_learning_en.html 第 6.3 部分:总体训练误差)

我使用了 Power Trendline,经过计算,我发现如果 epochs = 13000 => 总体误差 = 0.2

这不是太高了吗?

这个图表正常吗?看来训练过程会花费太长时间……对吧?我该怎么办?没有更快的方法吗?

编辑:我的神经网络有一个包含 200 个神经元的隐藏层。我的输入和输出层有 10-12 个神经元。我的问题是聚类字符。(它通过监督训练将波斯字符聚类成一些聚类)

4

1 回答 1

1

所以你正在使用一个有 200 个输入节点的 ANN,隐藏层中有 10-12 个隐藏节点,如果有的话,你对隐藏层和输出层使用什么激活函数?

这是标准的反向传播训练算法吗?您使用的是什么训练函数?每种类型的训练函数都会影响训练的速度,并且在某些情况下它的泛化能力,你不想针对你的数据进行训练,这样你的神经网络只对你的训练数据有好处。

因此,理想情况下,您需要体面的训练数据,可以是真实数据的子样本,例如 15%。您可以使用基于共轭梯度的算法训练您的数据:http: //www.mathworks.co.uk/help/toolbox/nnet/ug/bss331l-1.html#bss331l-2 这将快速训练您的网络。

10-12 个节点可能不适合您的数据,您可以尝试更改 5 个块的数量或添加另一层,通常更多的层会提高网络对问题进行分类的能力,但会增加计算复杂度,因此放慢训练速度。

大概这 10-12 个节点是您要分类的“特征”?

如果是这样,您可能希望对它们进行归一化,因此根据您的激活函数将每个重新缩放到 0 和 1 或 -1 到 1 之间(例如 tan sigmoidal 将产生 -1 到 +1 范围内的值): http://www. heatonresearch.com/node/706

你也可以训练一个神经网络来确定你应该在隐藏层中拥有的理想节点数。

于 2012-03-05T16:12:25.337 回答