为什么“堆叠更多层”有效?

机器算法验证 神经网络 深度学习
2022-03-25 14:23:21

这个问题是关于神经网络的经验(现实生活)使用。在我现在正在上的一门 ML 课程中,讲师介绍了神经网络的基础知识,从基本的感知器到基本的前馈,有 1 层到 1 个隐藏层,等等。

对我来说突出的一件事是通用逼近定理George Cybenko 在 1988 年表明,任何函数都可以通过具有 3 层的 NN 逼近到任意精度(2 个隐藏层,1 个输出层;参见通过 Sigmoidal 函数的叠加进行逼近,[Cybenko,1989])。当然,这篇论文并没有说每层有多少个单元,也没有说参数的可学习性。

我想到了 Gizmodo 上的帖子Google Street View Uses An Insane Neural Network To ID House Numbers谈论 Google 用于识别门牌号码的 11 个隐藏层网络。事实上,实际论文Multi-digit Number Recognition from Street View Imagery using Deep Convolutional Neural Networks [Goodfellow et al., 2013]说最深的网络具有最高的准确度,准确度随着网络深度的增加而增加。

为什么会这样?为什么“堆叠更多层”有效?定理不是已经说 2 个隐藏层就足够了吗?

3个回答

通用逼近定理主要是证明对于每个连续映射都存在一个具有所描述结构的神经网络,其权重配置将该映射近似为任意精度。

没有提供任何证据证明这种权重配置可以通过传统的学习方法学习,它依赖于每一层都有足够的单元这一事实,但你并不真正知道什么是“足够”。由于这些原因,UAT 几乎没有实际用途。

与浅层网络相比,深层网络有很多好处:

  1. 层次特征:

    深度学习方法旨在学习具有较高层次特征的特征层次结构,该层次层次结构由较低层次特征的组合形成。在多个抽象层次上自动学习特征允许系统直接从数据中学习将输入映射到输出的复杂函数,而不完全依赖于人工制作的特征。[1]

  2. 分布式表示:

    除了架构的深度之外,我们发现另一个要素是至关重要的:分布式表示。(...) 大多数非参数学习算法都遭受所谓的维度灾难。(...)当学习算法推广到新案例 x 的唯一方法是仅利用案例之间的相似性(...)的原始概念时,就会发生这种诅咒。这通常由学习者在其训练示例中查找接近 x (...) 的案例来完成。想象一下,试图通过许多小的线性或常数片段来逼近一个函数。每件作品至少需要一个示例。我们可以通过主要查看每件作品附近的示例来弄清楚每件作品应该是什么样子。如果目标函数有很多变化,我们就需要相应的很多训练样例。在维度 d (...) 中,变化的数量可能会随着 d 呈指数增长,因此需要的示例数量也会增加。然而,(...)当我们试图区分两个高度复杂的区域(流形)时,我们仍然可以获得良好的结果,例如与两类对象相关联。尽管每个流形可能有许多变化,但它们可能可以通过平滑(甚至可能是线性)决策面来分离。这就是局部非参数算法运行良好的情况。(...) 它们可能可以通过平滑(甚至可能是线性的)决策面来分离。这就是局部非参数算法运行良好的情况。(...) 它们可能可以通过平滑(甚至可能是线性的)决策面来分离。这就是局部非参数算法运行良好的情况。(...)

    分布式表示是数据的转换,可以紧凑地捕获数据中存在的许多不同的变化因素。因为许多示例可以告诉我们这些因素中的每一个,并且因为每个因素都可以告诉我们一些与训练示例相距甚远的示例,所以可以进行非局部泛化,并避免维度灾难。 [1]

    这可以翻译成图片:

    非分布式表示(由浅层网络学习)必须为输入空间的每个部分(由彩色超立方体表示)分配一个输出。然而,片段的数量(以及学习这种表示所需的训练点的数量)随着维度呈指数增长:

    维度的诅咒。 图片来源:http://www.iro.umontreal.ca/~bengioy/yoshua_en/research.html

    另一方面,分布式表示不会尝试完全描述输入空间的每一部分。相反,它们通过隔离简单的概念来划分空间,这些概念可以在以后合并以提供复杂的信息。看下面 K 个超平面如何将空间分成 2 个区域:K

    分布式表示。 图片来源:http://www.iro.umontreal.ca/~bengioy/yoshua_en/research.html

    (图片来自[1]

    为了更深入地了解分布式表示,我还推荐 Quora 上的这个线程:深度学习:分布式表示是什么意思?

  3. 理论上,深度网络可以模拟浅层网络:

    让我们考虑一个更浅的架构和它的更深的对应物,它增加了更多的层。通过构建更深的模型存在一种解决方案:添加的层是恒等映射,其他层是从学习的较浅模型中复制的。这种构造解决方案的存在表明,较深的模型不应比其较浅的模型产生更高的训练误差。[2]

    请注意,这也是一个理论上的结果;正如引用的论文所述,经验上的深度网络(没有残差连接)会经历“性能下降”。


[1]:http://www.iro.umontreal.ca/~bengioy/yoshua_en/research.html

[2]:用于图像识别的深度残差学习(He et al., 2015)

您的观察是正确的,因为通用 AT 不考虑图层大小。然而,在现实生活场景中,权重初始化、学习率和类似参数会显着影响学习。有趣的是,对于基于图形学习的任务,两个隐藏层显示为最佳层数,但图像通常不是这种情况。

此外,单层不可能有无限多的单元,因此使用更多的层来构建高阶泛化,因为它很简单。在准确理解神经网络,尤其是更深层次的网络如何学习方面,仍然存在很大差距。

理论上,正如定理所暗示的那样,您只需一个隐藏层就可以实现相同的结果。

在实践中,正如您所注意到的:“本文没有说明每层有多少个单元”。这非常重要,因为单个隐藏层网络中所需单元的数量可能呈指数级增长,因此任何学习都需要不可行的时间

添加层有助于保持较低的单元总数,因此训练时间也会更快。