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

输入数据由一系列的整数组成,这些整数可能会像用户想要的那样高,但是我想像的大多数都将不到100,000。有些将低于1。它们是项目数量和项目成本等细节,以及有关数据库实体和用例的详细信息。

总共有10个输入和2个输出(时间和成本)。我正在使用弹性传播来训练网络。当前它具有:10个输入节点,1个带有5个节点和2个输出节点的隐藏层。我正在培训以低于5%的错误率。

该算法必须在网络服务器上运行,因此我已经采取了一项措施,以停止训练,因为它看起来不会走到任何地方。这将设置为10,000次训练迭代。

当前,当我尝试使用一些有所不同的数据进行训练时,但是在我们期望用户投入的数据的范围内时,训练需要很长时间,一遍又一遍地达到了10,000次迭代限制。

这是我第一次使用神经网络,我真的不知道会发生什么。如果您可以给我一些暗示,请提示我应该在网络上使用哪种设置,而对于迭代限制,我将非常感谢它。

谢谢!

有帮助吗?

解决方案

首先,感谢您提供有关您网络的大量信息!这里有一些指针,应该给您更清晰的图片。

  • 您需要将输入标准化。 如果一个节点的平均值为100,000,而另一个节点仅为0.5,则不会看到两个输入的同等影响。这就是为什么您需要将它们归一化的原因。
  • 只有10个输入节点的5个隐藏神经元? 我记得在某个地方阅读了您至少需要一倍的输入数量;尝试20多个隐藏的神经元。这将为您的神经网络模型提供开发更复杂模型的能力。但是,太多的神经元和您的网络只会记住培训数据集。
  • 弹性反向传播很好。 请记住,还有其他培训算法,例如Levenberg-Marquardt。
  • 您有多少个训练集? 神经网络通常需要一个大数据集来做出有用的预测。
  • 考虑添加动量因素 如果您还没有这样做,则可以使用体重训练算法加快速度。
  • 在线培训 比批处理培训更倾向于做出广泛的预测。前者在运行通过网络设置的每个培训后更新权重,而后者在传递所有数据之后会更新网络。这是你的电话。
  • 您的数据是离散的还是连续的? 神经网络倾向于做得更好 01S多于连续功能。如果是前者,我建议使用Sigmoid激活函数。组合 tanhlinear 隐藏层和输出层的激活功能倾向于通过连续变化的数据做得很好。
  • 您需要另一个隐藏层吗? 如果您的网络正在处理复杂的输入输出表面映射,则可能会有所帮助。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top