【问题标题】:Neural Network settings for fast training用于快速训练的神经网络设置
【发布时间】:2011-02-23 00:12:17
【问题描述】:

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

输入数据由一系列整数组成,这些整数可以随用户的需要而增加,但我原以为大多数会低于 100,000。有些会低至 1。它们是项目中的人数和项目成本等详细信息,以及有关数据库实体和用例的详细信息。

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

该算法必须在网络服务器上运行,因此我采取了措施,当它看起来无处可去时停止训练。这设置为 10,000 次训练迭代。

目前,当我尝试使用一些不同的数据进行训练时,但在我们期望用户投入的范围内,训练需要很长时间,超过 10,000 次迭代限制并且重新来过。

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

谢谢!

【问题讨论】:

    标签: backpropagation neural-network


    【解决方案1】:

    首先,感谢您提供这么多有关您的网络的信息!这里有一些建议可以让您更清楚地了解情况。

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

    【讨论】:

    • 感谢您提供的所有信息! 1. 我考虑过对输入进行标准化,但是当一个值没有最大值并且某些值可能相差很大时,我不知道该怎么做。 2. 我尝试了 20 个隐藏的神经元,一些数据需要 5 个多小时而不是几秒钟。好像超过10个不好。 4. 数据集的数量取决于用户输入的数量。我们一直在使用大约 5 个。 5. 我们正在使用一个名为 Encog 的神经网络框架,我会考虑改变动量,但我不知道是否是可能的。
    • 6.同样,我不知道该框架如何处理在线培训,我将对此进行研究。 7. 数据都是连续的,我对所有内容都设置了线性激活,因为我想这就是结果应该如何随着输出而变化。 8. 与第 2 点一样,我发现使用 2 层时,它更多地达到了我的限制,并且需要更长的时间才能运行。
    • 大声笑。我也该睡觉了,明天上大学。我添加了一些规范化。它不是很好,但所有数据集的值都将在 0 和 1 之间,并且预测不会那么高。我在一件事上的训练速度提高了 18000%。我将继续测试并尝试实施其他一些措施,但目前它是一个很好的结果。非常感谢您的帮助!
    • @danpalmer : (1), (7) 您可能很容易在脑海中合理化为什么应该使用线性激活函数,但我怀疑使用它会得到好的结果。试试 sigmoid,你可能会感到惊讶!它还应该解决没有固定最大值的神经元的问题(f(100)f(100,000) 本质上是相同的!)。 (4) 你确定你不能得到更多的数据集吗?有时,网络无法通过 100 或 1000 多个数据集得到足够的训练!
    • 我会暂时坚持线性激活,看看效果如何。将来我可能会尝试 Sigmoid 激活。目前,我们的结果看起来很棒。预测正是我们所期望的(或不到 1%)。我们现在将所有数据标准化为 0 到 1 之间,在这样做之后,我们看到它的训练速度提高了 18000 倍。我不认为会是这样,但它确实解决了问题,在我们获得大量用户之前我们会没事的。谢谢您的帮助!如果您想尝试该网站,请给我留言。
    猜你喜欢
    • 2011-04-07
    • 1970-01-01
    • 2020-10-19
    • 2012-04-02
    • 2018-08-19
    • 2010-11-20
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多