如何选择神经网络中隐藏层和节点的数量?

时间:2012-02-24 18:39:19

标签: artificial-intelligence machine-learning neural-network

多层感知器神经网络中的隐藏层数对神经网络的行为方式有何影响?隐藏层中节点数量的问题相同吗?

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

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

5 个答案:

答案 0 :(得分:18)

注意:这个答案在制作时是正确的,但后来已经过时了。


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

  

虽然有多层的多层神经网络可以代表   深度电路,深度网络训练一直被视为有点   挑战。直到最近,经验研究才发现   深层网络通常表现不佳,而且往往更糟糕   比具有一个或两个隐藏层的神经网络。

Bengio, Y. & LeCun, Y., 2007. Scaling learning algorithms towards AI. Large-Scale Kernel Machines, (1), pp.1-41.

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

答案 1 :(得分:7)

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

答案 2 :(得分:4)

我看到的大部分问题都是用1-2个隐藏层解决的。事实证明,只有一个隐藏层的MLP是通用函数逼近器(Hornik et. al.)。更多隐藏层可以使问题更容易或更难。您通常必须尝试不同的拓扑。我听说如果你想用backprop训练你的MLP你不能添加任意数量的隐藏层,因为渐变在第一层中会变得太小(我没有参考)。但是有些应用程序的用户最多使用nine layers。也许你对standard benchmark problem感兴趣,它由不同的分类器和MLP拓扑解决。

答案 3 :(得分:3)

除了不同模型配置的交叉验证(隐藏层数或每层神经元数量)将导致您选择更好的配置。

一种方法是训练模型,尽可能大而深,并使用退出正则化关闭一些神经元并减少过度拟合

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

答案 4 :(得分:1)

以上所有答案当然都是正确的,但只是为了增加一些想法: 基于本文的一些一般规则如下:'逼近多隐藏层BPNN架构中隐藏层神经元的数量'作者:Saurabh Karsoliya。

一般情况下:

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

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

<强> E.g。我们可以做一个GridSearch来确定最好的&#34;隐藏图层的大小。