Encog神经网络隐藏层中的最佳神经元数量

时间:2015-04-10 15:25:51

标签: c# networking encog

我有一个结构的神经网络: 7个输入神经元,3个输出神经元。

在互联网上,据说当隐藏层上的神经元数量是第一层神经元数量的1.5-2倍时,可以获得最好的结果。在我的情况下,它将是14.我正在使用一种安静传播训练方法来用C#教授网络。

训练运行约100k周期。我正在获得更好的结果 - 我拥有的神经元越多!不仅是数量的2倍,而且是输入层数量的6倍。换句话说,目前总共定义了44个隐藏神经元!它不断变得更好。

我开始感觉到某些事情不在这里。隐藏的神经元数将如何影响网络的有效性?

我可以继续增加点数...... 50..60..70。我从低至11 btw开始,这种训练的结果很糟糕。请解释为什么更高的隐藏神经元计数会提供十倍更好的结果,以及它如何影响网络对REAL数据的有效性,而不是训练集。 (2k记录)

2 个答案:

答案 0 :(得分:2)

隐藏神经元的数量称为超参数。几乎所有的机器学习模型都有超参数。对于支持向量机,它是gamma和C等。基本上这些超参数会影响模型在学习数据集时的成功程度。几乎总是这归结为反复试验。对于神经网络,你应该坚持一个隐藏层(参见通用逼近定理)。

通常,隐藏的神经元越多,训练就越好。但是,这可能会鼓励过度拟合。确保使用训练集外的数据测试网络。理想情况下,您只需要足够的隐藏神经元,以允许神经网络达到增加更多不会提高验证数据性能的点(您没有训练网络的数据)。

答案 1 :(得分:1)

再澄清一次。您是否将数据分为两部分:培训和检查。例如,如果您有1000个示例,则可以使用800训练,并检查剩余200个示例的结果。通常如果训练集表现得非常好,那么测试设置质量会在一定程度上增加,然后下降。你需要在训练和检查集之间找到好结果之间的平衡。