反向传播总误差图的斜率非常小… 这是正常的吗?

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

enter image description here

(我使用以下公式计算总误差:http://www.colinfahey.com/neural_network_with_back_propagation_learning/neural_network_with_back_propagation_learning_en.html 第6.3部分:总训练误差)

我使用了幂趋势线,经过计算,我发现如果训练周期数为13000时,总误差为0.2

这不是太高了吗?

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

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


回答:

所以你使用了一个包含200个输入节点和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 sigmoid将产生-1到+1范围内的值):http://www.heatonresearch.com/node/706

你还可以训练一个神经网络来确定你的隐藏层应该有的最佳节点数。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注