【问题标题】:Backpropagation overall error chart with very small slope... Is this normal?斜率很小的反向传播整体误差图……这正常吗?
【发布时间】:2012-01-19 21:56:13
【问题描述】:

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

(我通过这个公式计算总体误差: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 个神经元。我的问题是聚类字符。 (它通过监督训练将波斯字符聚类成一些聚类

【问题讨论】:

  • 输入和目标输出是什么?您是否使用单个隐藏层?隐藏层中有多少个神经元?
  • @BenHocking 问题已更新。
  • 曲线看起来与我之前训练过的 ANN 相似。可能是问题对于 ANN 来说太复杂了,或者您的训练数据不是最优的。您是在使用任何库还是全部从头开始?
  • 我有我的神经网络课程(我不使用任何库)。我的学习率也是 0.01

标签: artificial-intelligence backpropagation


【解决方案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

您还可以训练神经网络来确定隐藏层中应具有的理想节点数。

【讨论】:

  • 不,我的 ANN 有 10-12 个输入节点和 10-12 个输出节点和 200 个隐藏节点!
  • 200 个隐藏节点与您拥有的输入节点数量相比听起来非常高,通常您的隐藏层将具有相同的数量级,因此在您的情况下,我预计会有 5-30 个隐藏节点,否则您的隐藏节点使您的值饱和。如果您考虑一下,您就是在向网络提供特征,并要求它弄清楚如何求解能够准确求解该函数的多维函数。那么,如果您只有 10-12 个输入,您是否期望有 200 个维度?你的意见是什么?
猜你喜欢
  • 2016-05-09
  • 1970-01-01
  • 2013-12-23
  • 2011-08-27
  • 2011-11-20
  • 2018-05-08
  • 2018-01-02
  • 2017-03-29
  • 1970-01-01
相关资源
最近更新 更多