深度网络现代实践 - 深度前馈网络之结构设计篇

发布于:2024-07-03 ⋅ 阅读:(18) ⋅ 点赞:(0)

序言

深度网络结构设计作为人工智能领域的基石,正引领着技术创新的浪潮。通过模拟人脑神经元间的复杂连接,深度神经网络展现了卓越的特征学习与模式识别能力。随着大数据与计算能力的提升,设计高效、精准且泛化能力强的深度网络结构成为研究热点。

结构设计

  • 结构(architecture)
    • 神经网络设计的另一个关键点是确定它的结构。结构(architecture)一词是指网络的整体结构:它应该具有多个单元,以及这些单元应该如何连接。
  • 结构描述
    • 大多数神经网络被组织成称为层的单元组。大多数神经网路结构将这些层布置成链式结构,其中每一层都是前一层的函数。
    • 在这种结构中,第一层由下式给出: h ( 1 ) = g ( 1 ) ( W ( 1 ) ⊤ x + b ( 1 ) ) \boldsymbol{h}^{(1)}=g^{(1)}(\boldsymbol{W}^{(1)\top}\boldsymbol{x}+\boldsymbol{b}^{(1)}) h(1)=g(1)(W(1)x+b(1))
    • 第二层由: h ( 2 ) = g ( 2 ) ( W ( 2 ) ⊤ h ( 1 ) + b ( 2 ) ) \boldsymbol{h}^{(2)}=g^{(2)}(\boldsymbol{W}^{(2)\top}\boldsymbol{h}^{(1)}+\boldsymbol{b}^{(2)}) h(2)=g(2)(W(2)h(1)+b(2)),给出,以此类推。
    • 在这些链式结构中,主要的结构考虑是选择网络的深度和每一层的宽度。
      • 我们将会看到,即使只有一个隐藏层的网络也足够适应训练集。
      • 更深层的网络通常能够对每一层使用更少的单元数和更少的参数,并且经常推广到测试集,但是通常也更难以优化。
      • 对于一个具体的任务,理想的网络结构必须通过实验,观测在验证集上的错误来找到。

通用近似性质和深度

  • 线性模型,通过矩阵乘法将特征映射到输出,顾名思义,仅能表示线性函数。它具有易于训练的优点,因为当使用线性模型时,许多损失函数会导出凸优化问题。不幸的是,我们经常想要学习非线性函数。

  • 通用近似定理(universal approximation theorem)

    • 咋一看,我们可能认为学习非线性函数需要为我们想要学习的那种非线性专门设计一类模型族。幸运的是,具有隐藏层的前馈网络提供了一种通用近似框架。

    • 具体来说,通用近似定理(universal approximation theorem)表明,一个前馈神经网络如果具有线性输出层和至少一层具有任何一种“挤压”性质的激活函数(例如logistic sigmoid激活函数)的隐藏层,只要给与网络足够数量的隐藏单元,它可以以任意的精度来近似任何从一个有限维空间到另一个有限维空间的Borel可测函数

    • 前馈网络的导数也可以任意好地来近似函数的导数。对于我们想要实现的目标,只需要知道定义在 R n \mathbb{R}^n Rn的有界闭集上的任意连续函数是Borel可测的,因此可以用神经网络来近似。

    • 神经网络也可以近似从任何有限维离散空间映射到另一个的任意函数。虽然原始定理最初以具有特殊激活函数的单元的形式来描述,这个激活函数当变量取绝对值非常大的正值和负值时都会饱和,通用近似定理也已经被证明对于更广泛类别的激活函数也是适用的,其中就包括现在常用的整流线性单元。

    • 通用近似定理意味着无论我们试图学习什么函数,我们知道一个大的MLP 一定能够表示这个函数。然而,我们不能保证训练算法能够学得这个函数。即使 MLP能够表示该函数,学习也可能因两个不同的原因而失败。首先,用于训练的优化算法可能找不到用于期望函数的参数值。其次,训练算法可能由于过拟合选择了错误的函数。“没有免费的午餐” 定理说明了没有普遍优越的机器学习算法。 前馈网络提供了表示函数的通用系统,在这种意义上,给定一个函数,存在一个前馈网络能够近似该函数。不存在通用的过程既能够验证训练集上的特殊样例,又能够选择一个函数来扩展到训练集上没有的点。

    • 通用近似定理说明了存在一个足够大的网络能欧达到我们所希望的任意精度,但是定理并没有说这个网络有多大。Barron (1993) 提供了单层网络近似一大类函数所需大小的一些界。不幸的是,在最坏情况下,可能需要指数数量的隐藏单元(可能一个隐藏单元对应着一个需要区分的输入配置)。这在二进制情况下很容易看到:向量 v ∈ { 0 , 1 } n \boldsymbol{v}\in\{0,1\}^n v{0,1}n上的可能二进制的数量是 2 2 n 2^{2^n} 22n并且选择一个这样的函数需要 2 n 2^{n} 2n位,这通常需要 O ( 2 n ) \Omicron(2^n) O(2n)的自由度。

    • 总之,具有单层的前馈网络足以表示任何函数,但是网络层可能不可实现得大并且可能无法正确地学习和泛化。在很多情况下,使用更深的模型能够减少表示期望函数所需的单元的数量,并且可以减少泛化误差。

    • 存在一些函数族能够在网络的深度大于某个值 d d d时被高效地近似,而当深度被限制到小于或等于 d d d时需要一个远远大于之前的模型。在很多情况下,浅层模型所需的隐藏单元的数量是 n n n的指数级。这个结果最初被证明是在那些不与连续可微的神经网络类似的机器学习模型中出现,但现在已经扩展到了这些模型。第一个结果是关于逻辑门电路的 (Håstad, 1986)。后来的工作将这些结果扩展到了具有非负权重的线性阈值单元 (Håstad and Goldmann, 1991; Hajnal et al., 1993),然后扩展到了具有连续值激活的网络 (Maass, 1992; Maass et al., 1994)。

    • 许多现代神经网络使用整流线性单元。 Leshno et al. (1993) 证明带有一大类非多项式激活函数族的浅层网络,包括整流线性单元,具有通用的近似性质,但是这些结果并没有强调深度或效率的问题——它们仅指出足够宽的整流网络能够表示任意函数。 Montufar et al.(2014) 指出一些用深度整流网络表示的函数可能需要浅层网络(一个隐藏层)指数级的隐藏单元才能表示。更确切的说,他们说明分段线性网络(可以通过整流非线性或maxout 单元获得)可以表示区域的数量是网络深度的指数级的函数。图例1解释了带有绝对值整流的网络是如何创建函数的镜像图像的,这些函数在某些隐藏单元的顶部计算,作用于隐藏单元的输入。每个隐藏单元指定在哪里折叠输入空间,来创造镜像响应(在绝对值非线性的两侧)。通过组合这些折叠操作,我们获得指数级的分段线性区域,他们可以概括所有种类的规则模式(例如,重复)。
      图例1:关于更深的整流网络具有指数优势的一个直观的几何解释,来自来自Montufar et al. (2014)
      在这里插入图片描述

    • 图例1说明

      • 左边:
        • 绝对值整流单元对其输入中的每对镜像点有相同的输出。
        • 镜像的对称轴由单元的权重和偏置定义的超平面给出。
        • 在该单元顶部计算的函数(绿色决策面)将是横跨该对称轴的更简单模式的一个镜像。
      • 中间:
        • 该函数可以通过折叠对称轴周围的空间来得到。
      • 右边:
        • 另一个重复模式可以在第一个的顶部折叠(由另一个下游单元)以获得另外的对称性(现在重复四次,使用了两个隐藏层)。图重置得到了Montufar et al. (2014) 的许可。
    • 更确切的说, Montufar et al. (2014) 的主要定理指出,具有 d d d个输入,深度为 l l l,每个隐藏层有 n n n个单元的深度整流网络可以描述的线性区域的数量是: O ( ( n d ) d ( l − 1 ) n d ) \Omicron\left((\begin{matrix}n\\d\end{matrix})^{d(l-1)} n^d\right) O((nd)d(l1)nd)

    • 这意味着,是深度 l l l的指数级。在每个单元具有 k k k个过滤器的maxout网络中,线性区域的数量是: O ( k ( l − 1 ) + d ) \Omicron(k^{(l-1)+d}) O(k(l1)+d)

    • 当然,我们不能保证在机器学习(特别是AI)的应用中我们想要学得的函数类型享有这样的属性。

    • 我们还可能出于统计原因来选择深度模型。任何时候,当我们选择一个特定的机器学习算法时,我们隐含地陈述了一些先验,这些先验是关于算法应该学得什么样的函数的。选择深度模型默许了一个非常普遍的信念,那就是我们想要学得的函数应该涉及几个更加简单的函数的组合。这可以从表示学习的观点来解释,我们相信学习的问题包含发现一组潜在的变化因素,它们可以根据其他更简单的潜在的变化因素来描述。或者,我们可以将深度结构的使用解释为另一种信念,那就是我们想要学得的函数是包含多个步骤的计算机程序,其中每个步骤使用前一步骤的输出。这些中间输出不一定是变化的因素,而是可以类似于网络用来组织其内部处理的计数器或指针。根据经验,更深的模型似乎确实会更适用于广泛的任务。

    • 使用深层结构在模型学习的函数空间上表示了一个有用的先验,如下图例所示:
      图例2:深度的影响
      在这里插入图片描述

    图例2说明:实验结果表明,当从地址照片转录多位数字时,更深层的网络能够更好地泛化。数据来自Goodfellow et al. (2014d)。测试集上的准确率随着深度的增加而不断增加。图例3给出了一个对照实验,它说明了对模型尺寸其他方面的增加并不能产生相同的效果。
    图例3:参数数量的影响
    在这里插入图片描述

    图例3说明:更深的模型往往表现更好。这不仅仅是因为模型更大。 Goodfellow et al.
    (2014d) 的这项实验表明,增加卷积网络层中参数的数量,但是不增加它们的深度,在提升测试集性能方面几乎没有效果,如此图所示。图例标明了用于画出每条曲线的网络深度,以及曲线表示的是卷积层还是全连接层的大小变化。我们可以观察到,在这种情况下,浅层模型在参数数量达到2000万时就过拟合,而深层模型在参数数量超过6000万时仍然表现良好。这表明,使用深层模型表达出了对模型可以学习的函数空间的有用偏好。具体来说,它表达了一种信念,即该函数应该由许多更简单的函数复合在一起而得到。这可能导致学习由更简单的表示所组成的表示(例如,由边所定义的角)或者学习具有顺序依赖步骤的程序(例如,首先定位一组对象,然后分割它们,之后识别它们)。

    • 一般的,层不需要连接在链中,尽管这是最常见的做法。许多结构构建了一个主链,但随后又添加了额外的结构属性,例如从层 i i i到层 i + 2 i + 2 i+2或者更高层的跳动连接。这些跳动连接使得梯度更容易从输出层流向更接近输入的层。
    • 结构设计考虑的另外一个关键点是如何将层与层之间连接起来。默认的神经网络层采用矩阵 W W W描述的线性变换,每个输入单元连接到每个输出单元。在之后章节中的许多专用网络具有较少的连接,使得输入层中的每个单元仅连接到输出层单元的一个小子集。这些用于减少连接数量的策略减少了参数的数量以及用于评估网络的计算量,但通常高度依赖于问题。例如,后续篇章:卷积神经网络描述的卷积神经网络使用对于计算机视觉问题非常有效的稀疏连接的专用模式。本篇章中,很难对通用神经网络的结构给出更多具体的建议。随后的章节研发了一些特殊的结构策略,可以在不同的领域工作良好。

总结

综上所述,深度网络结构设计作为人工智能领域的核心课题,其发展与创新是推动技术进步的关键。从经典的网络模型到复杂多变的网络架构,每一次突破都极大地拓宽了深度学习的应用范围与性能边界。未来,随着算法优化、硬件加速及跨学科融合的加速推进,我们有望见证更加智能化、高效化、可解释性强的深度网络结构的诞生,进一步推动人工智能技术的普及与应用,为人类社会带来前所未有的变革与福祉。因此,持续探索与创新深度网络结构设计,将是每一位科研工作者与工程师不懈追求的目标。

往期内容回顾

应用数学与机器学习基础 - 容量、过拟合和欠拟合篇:没有免费的午餐