理论上sigmoid等函数可以拟合所有函数,为什么我们还是追求深的神经网络,而不是宽的神经网络

省流

宽的神经网络容易过拟合,深的神经网络更能够泛化。

想要读懂这篇文章,你需要知道

  1. 什么是神经网络的深度:神经网络的层数,更确切地说,隐藏层数
  2. 什么是神经网络宽度:在一个层上,神经元的数量
理论上sigmoid等函数可以拟合所有函数,为什么我们还是追求深的神经网络,而不是宽的神经网络_第1张图片
深度为2,宽度为6的神经网络
  1. 为什么激活函数如sigmoid可以拟合理论上所有的函数:
    因为sigmoid、relu等激活函数非线性的特点,将激活层上不同的sigmoid函数相加,能够近似各种复杂的函数。

理论上sigmoid等函数可以拟合所有函数,为什么我们还是追求深的神经网络,而不是宽的神经网络_第2张图片

正文

首先,理论上来说,我们并不需要深度神经网络。只要有足够的训练数据,只有一个隐藏层,但是足够宽(神经元够多)的神经网络足以拟合任何合理的函数。

然而,使用一个极宽的浅层网络存在一些问题。最主要的问题是,这些极宽、极浅的网络非常善于记忆,但不善于泛化。因此,如果你用每一个可能的输入值来训练网络,一个超宽的网络最终可以记住你想要的相应输出值,但从实际应用的角度来说,这没有价值。因为我们手上的训练资料不能概括现实中的所有情况。

多层网络的优势在于它们可以在不同的抽象层次上学习特征。例如,如果你要训练一个深度卷积神经网络对图像进行分类,你会发现第一层会训练自己识别非常基本的东西,如边缘,下一层会训练自己识别边缘的集合,如形状,下一层会训练自己识别形状的集合,如眼睛或鼻子,下一层甚至会学习更高阶的特征,如脸。多层网络在泛化方面的表现要好得多,因为它们学习了原始数据和最终分类结果之间的所有中间特征

这也就解释了为什么你可能会使用一个深度网络,而不是一个非常宽但浅的网络。但为什么不是一个非常深、非常宽的网络呢?我认为答案是,你希望你的网络尽可能的小,以产生好的结果。当你增加网络的规模时,你实际上只是引入了更多你的网络需要学习的参数,从而增加了过拟合的可能性。如果你建立了一个非常宽、非常深的网络,网络可能会记住训练时所有输入对应的输出,但你最终会得到一个无法泛化新数据的神经网络。

除了过度拟合的风险,你的网络越宽,训练的时间就越长。深度网络训练的计算成本已经很高了,所以我们追求的是让网络表现的好的同时,宽度尽可能得小。

参考:李宏毅机器学习
参考:stack exchange问题解答

你可能感兴趣的:(神经网络,深度学习,机器学习)