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

Best number of neurons in hidden layer of Encog neural network

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

网上说隐藏层的神经元数是第一层神经元数的1.5-2倍时效果最好。即在我的情况下是 14。我正在使用弹性传播训练方法在 C# 中教授网络。

训练 运行 大约 100k 个周期。我实际上得到了更好的结果——我拥有的隐藏神经元越多!不仅是数量的 2 倍,而且是输入层数量的 6 倍。换句话说,目前总共定义了 44 个隐藏神经元!它只会越来越好。

我开始觉得这里有些不对劲。隐藏的神经元数量将如何影响网络的有效性?

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

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

一般来说,隐藏神经元越多,训练效果越好。但是,这可能会鼓励过度拟合。确保您正在使用训练集之外的数据测试网络。理想情况下,您只需要足够多的隐藏神经元来让神经网络达到这样的程度,即添加更多神经元不会提高您在验证数据(您未用于训练网络的数据)上的性能。

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