如何选择神经网络中隐藏层和节点的数量? [关闭]
artificial-intelligence
machine-learning
neural-network
6
0

多层感知器神经网络中的隐藏层数对神经网络的行为有什么作用?有关隐藏层中节点数的相同问题?

假设我想使用神经网络进行手写字符识别。在这种情况下,我将像素颜色强度值作为输入节点,将字符类作为输出节点。

我如何选择隐藏层和节点的数量来解决此问题?

参考资料:
Stack Overflow
收藏
评论
共 5 个回答
高赞 时间 活跃

注意:此答案在做出时是正确的,但此后已经过时了。


在神经网络中很少有两个以上的隐藏层。层数通常不是您会非常担心的网络参数。

尽管具有许多层的多层神经网络可以表示深层电路,但是训练深层网络始终被视为一项挑战。直到最近,经验研究经常发现,深层网络的性能通常不会比具有一层或两层隐藏层的神经网络更好,甚至更差。

Bengio,Y.和LeCun,Y.,2007年。将学习算法扩展到AI。大型内核机,(1),第1-41页。

引用的论文对于了解网络深度的影响,深度网络教学的最新进展以及一般的深度学习提供了很好的参考。

收藏
评论

我所看到的大多数问题都是通过1-2个隐藏层解决的。事实证明,只有一个隐藏层的MLP是通用函数逼近器( Hornik等人 )。更多的隐藏层可以使问题更容易或更难解决。通常,您必须尝试不同的拓扑。我听说如果要使用反向传播训练MLP,则不能添加任意数量的隐藏层,因为在第一层中渐变会变得太小(我对此没有参考)。但是在某些应用程序中,人们最多使用了九层 。也许您对由不同的分类器和MLP拓扑解决的标准基准问题感兴趣。

收藏
评论

一般的答案是选择超参数是交叉验证。保留一些数据,以不同的配置训练网络,并使用在保留的数据集上表现最佳的数据。

收藏
评论

除了在不同模型配置上交叉验证(隐藏层数或每层神经元的数量)这一事实之外,您还可以选择更好的配置。

一种方法是训练尽可能大和更深的模型,并使用辍学正则化 关闭某些神经元并减少过度拟合

在本文中可以看到对这种方法的参考。 https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf

收藏
评论

以上所有答案当然都是正确的,但只是增加了一些新思路:基于本文的一些一般规则如下: Saurabh Karsoliya的“在多隐藏层BPNN体系结构中隐藏层神经元的数量近似”


一般来说:

  • 隐藏层神经元的数量是输入层大小的2/3(或70%到90%)。如果这还不够,那么稍后可以添加输出层神经元的数量。
  • 隐藏层神经元的数量应少于输入层中神经元数量的两倍。
  • 隐藏层神经元的大小在输入层大小和输出层大小之间。

请记住,您需要探索并尝试许多不同的组合。另外,使用GridSearch可以找到“最佳模型和参数”

例如,我们可以执行GridSearch以确定隐藏层的“最佳”大小。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号