我正在使用反向传播算法训练神经网络,这是整体错误的图表:
(我用这个公式计算总误差:http://www.colinfahey.com/neural_network_with_back_propagation_learning/neural_network_with_back_propagation_learning_en.html第6.3部分:整体训练错误)
我使用了Power Trendline,经过计算,我看到如果epoches = 13000 =>总误差= 0.2
这不是太高了吗?
这张图表是否正常?似乎培训过程需要很长时间......对吗?我该怎么办?有没有更快的方法?
编辑:我的神经网络有一个隐藏层,有200个神经元。我的输入和输出层有10-12个神经元。我的问题是聚类字符。 (它通过监督培训将波斯人物聚集成某些聚类)
答案 0 :(得分:1)
因此,您在隐藏层中使用具有200个输入节点和10-12个隐藏节点的ANN,如果有任何隐藏图层和输出图层,您使用的是什么激活功能?
这是一种标准的反向传播训练算法,您使用的是哪种训练功能? 每种类型的训练功能都会影响训练的速度,在某些情况下会影响训练的能力,你不想训练你的数据,这样你的神经网络才有利于你的训练数据。
理想情况下,您希望体面的训练数据可以作为您真实数据的子样本,比如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
您还可以训练神经网络,以确定隐藏层中应该具有的理想节点数。