神经网络设置,用于快速培训

时间:2010-05-23 20:07:24

标签: backpropagation neural-network

我正在创建一个工具,用于根据过去的数据预测软件项目的时间和成本。该工具使用神经网络来做到这一点,到目前为止,结果是有希望的,但我认为我可以通过改变网络的属性做更多的优化。在这些设置方面,似乎没有任何规则甚至许多最佳实践,所以如果有经验的人可以帮助我,我会非常感激。

输入数据由一系列整数组成,这些整数可能会达到用户想要的最高水平,但大多数都会低于我认为的100,000。有些将低至1.它们是项目中人员数量和项目成本等详细信息,以及有关数据库实体和用例的详细信息。

总共有10个输入和2个输出(时间和成本)。我正在使用Resilient Propagation来训练网络。目前它有:10个输入节点,1个隐藏层,5个节点和2个输出节点。我正在训练误差率低于5%。

该算法必须在网络服务器上运行,所以我已经采取措施在看起来不会去任何地方时停止训练。这被设置为10,000次训练迭代。

目前,当我尝试使用一些有点变化的数据进行训练时,但是在我们期望用户投入的数据范围内,需要花费很长时间进行训练,达到10,000次迭代限制。再一次。

这是我第一次使用神经网络而我真的不知道会发生什么。如果你能给我一些关于我应该为网络使用什么样的设置以及迭代限制的提示,我将非常感激。

谢谢!

1 个答案:

答案 0 :(得分:10)

首先,感谢您提供有关您的网络的大量信息!这里有一些指示可以让你更清晰。

  • 您需要规范化输入。如果一个节点的平均值为100,000而另一个节点的平均值仅为0.5,那么您将看不到两个输入的平均影响。这就是为什么你需要将它们标准化的原因。
  • 10个输入节点只有5个隐藏的神经元?我记得在某个地方读过你至少需要输入数量的两倍;尝试20多个隐藏的神经元。这将为您的神经网络模型提供开发更复杂模型的能力。但是,太多的神经元和您的网络只会记住训练数据集。
  • 弹性反向传播很好。请记住,还有其他训练算法,如Levenberg-Marquardt。
  • 你有多少训练集?神经网络通常需要一个大型数据集才能做出有用的预测。
  • 考虑为您的体重训练算法添加一个动量因子,以便在您尚未这样做的情况下加快速度。
  • 在线培训比批量培训更适合进行广义预测。前者通过网络运行每个训练集后更新权重,而后者在传递每个数据集后更新网络。这是你的电话。
  • 您的数据是离散的还是连续的?神经网络往往比连续函数更好地使用01 s。如果是前者,我建议使用sigmoid激活功能。隐藏和输出层的tanhlinear激活函数的组合往往可以很好地处理连续变化的数据。
  • 您是否需要另一个隐藏图层?如果您的网络正在处理复杂的输入输出表面映射,这可能会有所帮助。