省流
宽的神经网络容易过拟合,深的神经网络更能够泛化。
想要读懂这篇文章,你需要知道
- 什么是神经网络的深度:神经网络的层数,更确切地说,隐藏层数
- 什么是神经网络宽度:在一个层上,神经元的数量
- 为什么激活函数如sigmoid可以拟合理论上所有的函数:
因为sigmoid、relu等激活函数非线性的特点,将激活层上不同的sigmoid函数相加,能够近似各种复杂的函数。
正文
首先,理论上来说,我们并不需要深度神经网络。只要有足够的训练数据,只有一个隐藏层,但是足够宽(神经元够多)的神经网络足以拟合任何合理的函数。
然而,使用一个极宽的浅层网络存在一些问题。最主要的问题是,这些极宽、极浅的网络非常善于记忆,但不善于泛化。因此,如果你用每一个可能的输入值来训练网络,一个超宽的网络最终可以记住你想要的相应输出值,但从实际应用的角度来说,这没有价值。因为我们手上的训练资料不能概括现实中的所有情况。
多层网络的优势在于它们可以在不同的抽象层次上学习特征。例如,如果你要训练一个深度卷积神经网络对图像进行分类,你会发现第一层会训练自己识别非常基本的东西,如边缘,下一层会训练自己识别边缘的集合,如形状,下一层会训练自己识别形状的集合,如眼睛或鼻子,下一层甚至会学习更高阶的特征,如脸。多层网络在泛化方面的表现要好得多,因为它们学习了原始数据和最终分类结果之间的所有中间特征。
这也就解释了为什么你可能会使用一个深度网络,而不是一个非常宽但浅的网络。但为什么不是一个非常深、非常宽的网络呢?我认为答案是,你希望你的网络尽可能的小,以产生好的结果。当你增加网络的规模时,你实际上只是引入了更多你的网络需要学习的参数,从而增加了过拟合的可能性。如果你建立了一个非常宽、非常深的网络,网络可能会记住训练时所有输入对应的输出,但你最终会得到一个无法泛化新数据的神经网络。
除了过度拟合的风险,你的网络越宽,训练的时间就越长。深度网络训练的计算成本已经很高了,所以我们追求的是让网络表现的好的同时,宽度尽可能得小。