一般来说,三层神经网络可以逼近任何一个非线性函数,为什么还需要深度神经网络?

如题。另外这个问题是在有一本书上看到的,但已经记不起来是哪本书了,如果哪位大牛知道麻烦答一下,万分感谢!
关注者
1,078
被浏览
410,101
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

这个结论来自于通用逼近定理(Universal approximation theorem, UAT):具有单个隐藏层的前馈网络(加合适的非线性单元),在包含有限数量的神经元情况下,可以逼近原空间区间内的任意连续函数。 该定理因此表明,当给出适当的参数时,简单的三层神经网络可以表示各种有趣的函数; 但是,它没有涉及这些参数的算法可学习性,而且神经元的数量可能特别特别大。

该理论,1989年被George Cybenko提出。我想你应该是在Ian Goodfellow的deeplearningbook 6.4.1中看到的吧,其实他也解释了你的问题(三层神经网络可以逼近任何一个非线性函数 为什么还需要深度神经网络)。

A feedforward network with a single layer is sufficient to represent any function, but the layer may be infeasibly large and may fail to learn and generalize correctly.
— Ian Goodfellow
具有单个层的前馈网络足以表示任何函数,但该层神经元数量可能大到怀疑人生,并且参数可能无法正确学习,网络也没法泛化。


UAT的却声明了存在这样的可以近似任何函数的三层网络,但没有告诉你如何获得网络的权重,只说:`在包含有限数量的神经元情况下` 。几亿也是有限数量,但是这样合理吗?况UAT还不说到底要多少神经元才行。 三层神经网络可以逼近任何一个非线性函数, 但是却可能需要特别多的神经元,并且泛化性并不好。并且在梯度下降时,这很难训练。


所以,为什么要加深网络呢?

  1. 学习方便。更深的网络中,学习会更容易,因为深度网络学习高水平的抽象特征,以及pooling后的全局信息。实践表明,resnet, batch normalization也解决了深度网络的梯度消失和收敛问题。
  2. 网络表现能力更强。单个隐藏层神经网络的复杂性仅在数量上随着隐藏节点的数量而线性增加,而随着深度呈指数增长。
  3. 泛化性更强。泛化性指的是网络本身是针对某个任务或某个数据集训练的,但是却可以迁移到其他任务和其他数据集上。 比如VGGNet, ResNet的pre-trained网络,经常被用到其他任务中,作为特征提取的工具。这是因为,deep network具有泛化性,往往前面十多层层网络提取出来的特征图,均是边缘,颜色等表层信息的提取,可以帮助其他任务进行前期的表层特征提取。