由于对计算机技术的大量投资,现代人工智能 (AI) 系统现在可以配备数十亿个基本组件。当这些组件被正确初始化然后训练时,人工智能可以完成曾经被认为非常复杂的任务,哲学家之前认为只有自然智能系统——即人类——才能执行这些任务。

人工智能取得如此成功的背后很大程度上是因为深度学习。深度学习使用人工神经网络作为 AI 的基础模型:虽然松散地基于生物神经网络(例如您的大脑),但人工神经网络可能最好被认为是指定一组灵活函数的特别好方法,由许多函数构建而成称为神经元的基本计算模块。这种计算模型实际上与您可能用来阅读本书的计算机所使用的计算模型大不相同。特别是,深度学习模型不是通过编写一组特定的指令来直接解决问题,而是根据来自现实世界的数据进行训练,并学习如何解决问题。

深度学习框架的真正力量来自深度神经网络,许多神经元并行组织成顺序计算层,学习对世界有用的表征。这种表示学习将数据转化为有助于解决潜在任务的越来越精细的形式,并且被认为是人工智能成功的标志,包括人工和生物。

尽管取得了这些成功并引起了浓厚的兴趣,但深度学习理论仍处于起步阶段。事实上,理论与实践之间存在严重的脱节:虽然实践者已经达到了惊人的里程碑,并远远超过了理论学家。理论学家的分析通常涉及如此不切实际的假设,以至于他们得出的结论与理解深度神经网络无关,因为它们通常是过时的。更重要的是,很少有理论工作直接面对深度学习的 depth,尽管大量的经验证据表明它在框架的成功中的重要性。

本书的目标是提出一套原则,使我们能够从理论上分析具有实际相关性的深度神经网络。为了让您初步完成这项任务,在本章的其余部分,我们将在非常高的层次上解释

  • (1)为什么这样的目标在理论上是可以实现的;
  • (2)我们如何能够在实践中实现这一目标。

0.1 一种有效的理论途径

虽然现代深度学习模型是由看似无数的基本计算组件构建而成,但对训练有素的神经网络如何从这些低级组件计算函数的第一性原理微观描述是完全显而易见的。这种微观描述只是一组指令,用于将输入通过许多组件层转换为输出。重要的是,在训练过程中,这些组件会得到非常精细的调整,而特定调整的知识对于系统产生有用的输出是必要的。

不幸的是,这些调整的复杂性掩盖了对深度神经网络为何计算特定函数而不是另一个函数的 第一性原理 宏观理解。由于许多神经元执行不同的任务作为此类计算的一部分,因此认为我们可以使用理论来理解这些模型似乎毫无希望,而且愚蠢地认为一小部分数学原理就足以完成这项工作。

幸运的是,理论物理学有着为包含大量组件的复杂系统寻找简单有效理论的悠久传统。物理程序在模拟物理宇宙方面取得的巨大成功表明,也许某些相同的工具可能有助于从理论上理解深度神经网络。为了激发这种联系,让我们非常简要地回顾一下热力学和统计力学的成功,这些物理理论共同从微观第一性原理解释了具有许多基本成分的系统的宏观行为。

作为工业时代的科学成果,热力学产生于对蒸汽机的描述和创新,蒸汽机是一个由很多粒子组成的系统,是最初的黑匣子。来自于经验观察的热力学定律被用来解释蒸汽力学,为这些人工机器提供了高水平的宏观理解。虽然热力学的出现使蒸汽动力的效率有了巨大的提高,但该定律绝对不是最基本的。

直到很久之后,麦克斯韦、玻尔兹曼和吉布斯才找到了实验得出的有效描述与第一性原理之间的联系。他们用 统计力学(statistical mechanics) 解释了如何从许多微观基本成分的确定性动力学中统计得出宏观热力学定律。从这个角度来看,热力学定律是一种突显现象,只会出现在大量微观粒子的集体统计行为中。事实上,正是从统计力学中得到的详细理论预测,最终导致了科学界普遍接受了 “物质实际上是由分子和原子组成” 的观点。统计力学的不懈应用还导致了量子力学的发现,这是晶体管发明的先驱,为信息时代提供了动力,从长远来看,这也是让我们能够开始实现人工智能机器的起因。

值得注意的是,这些物理理论源于对理解人造工程物体(例如蒸汽机)的渴望。尽管存在潜在的误解,物理学并没有区分自然现象和人工现象。最根本的是,它关注的是提供一套统一的原则,来解释过去的经验观察并预测未来实验的结果;理论计算的重点是将可测量或可观测的结果直接与定义理论的基本常数或参数联系起来。这种观点还意味着模型的预测准确性与其数学易处理性之间的权衡,并且前者必须优于后者才能使理论得到成功(从理论到物理现实的短线是必不可少的)。如果能够成功,则这些理论可以提供对现象的全面理解,并推动技术的实质进步,例如统计物理起到了从蒸汽时代到信息时代的桥梁作用。

从蒸汽机的第一性原理得到如下启示: 当一个理论问题由许多基础成分组合而成时,问题就简化了

与用水分子统计物理来解释蒸汽机原理的不同之处在于:深度学习的微观单元来自于人工设置,也就是说,我们已经理解了微观规律,真正的任务反而是要了解其在宏观尺度上会出现什么样的新型规律,而这些新规律来自于这些大型深度学习模型的统计特性。

0.2 理论的最小化

在本节中,将对我们的方法进行高层次概述,并简要解释为什么对深度神经网络的第一性原理理论是可能的。然后我们将在接下来的章节中完善所有细节。

从本质上讲,神经网络是一个由许多被称为神经元的计算单元构建的,用于计算某个函数的解决方案。其中每个神经元本身就是一个简单函数,它考虑了传入信号的加权和,然后将该加权和与某个阈值作比较后,以一种特有方式激活。神经元被平行地组织成层,深度神经网络指由多个层依次组成的网络,该网络由激活阈值和神经元之间的加权连接参数化。目前最先进的神经网络可以有超过 10001000 亿个参数。

先简单地将神经网络视为参数化的函数

f(x;θ)(0.1)f(x; \boldsymbol{\theta}) \tag{0.1}

为了使函数有意义,问题的核心是求解高维的参数向量 θ\boldsymbol{\theta}。可以凝练为两步:

  • 首先从简单的概率分布 p(θ)p(\boldsymbol{\theta}) 中随机采样得到参数向量 θ\boldsymbol{\theta} 的初始值(很多应用场景中隐含着默认的 p(θ)p(\boldsymbol{\theta}) );
  • 然后,迭代地优化调整向量 θθ\boldsymbol{\theta} \rightarrow \boldsymbol{\theta}^\ast ,使得最终得到的 f(x;θ)f(x;\boldsymbol{\theta}^\ast) 非常接近于目标函数 f(x)f(x) ,即

f(x;θ)f(x)(0.3)f(x;\boldsymbol{\theta}^\ast) \approxeq f(x) \tag{0.3}

这被称为函数逼近。为了找到最优的 θ\boldsymbol{\theta}^\ast 需要拟合训练数据,这种不断优化调参数的过程被称为训练,特定的过程被称为学习算法。

本文的目的,是理解这个训练好的神经网络函数:

f(x;θ)(0.4)f(x;\boldsymbol{\theta}^\ast) \tag{0.4}

特别是,我们想根据这些训练好的参数 θ\boldsymbol{\theta},从网络的第一性原理微观描述中理解该函数的宏观行为。我们还想了解 式(0.3) 中函数逼近的工作原理,并评估 f(x;θ)f(x; \boldsymbol{\theta}^\ast) 在其对 f(x)f(x) 的逼近中,如何使用训练数据 (x,f(x))(x, f (x))。考虑到参数 θ\boldsymbol{\theta} 的高维度和近似所需的微调程度,这个目标可能看起来似乎有些天真,并且超出了任何现实理论方法的范畴。

为便于理解,先从 f(x;θ)f(x;\boldsymbol{\theta}) 关于参数 θ\boldsymbol{\theta} 的泰勒展开开始讨论,常规做法是在参数的初始值 θ0\boldsymbol{\theta}_0 处计算展开式中的函数初值和各种导数值。

f(x;θ)=f(x;θ)+(θθ)dfdθ+12(θθ)2d2fdθ2+(0.5)f(x; \boldsymbol{\theta}^\ast) = f(x; \boldsymbol{\theta}) + (\boldsymbol{\theta}^\ast − \boldsymbol{\theta}) \frac{df}{d \boldsymbol{\theta}} + \frac{1}{2} (\boldsymbol{\theta}^\ast − \boldsymbol{\theta})^2 \frac{d^2f}{dθ^2} + \ldots \tag{0.5}

泰勒展开式可以说明三个方面的问题:

问题 1: 展开式中包含无数个项

f,dfdθ,d2fdθ2,d3fdθ3,d4fdθ4,(0.6)f,\frac{df}{d \boldsymbol{\theta}}, \frac{d^2 f}{d \boldsymbol{\theta}^2}, \frac{d^3 f}{d \boldsymbol{\theta}^3}, \frac{d^4 f}{d \boldsymbol{\theta}^4}, \ldots \tag{0.6}

理论上如果要计算精确值,就需要计算所有项。特别是,当参数的目标值与初始值之差越大时,需要计算越多的项来得到更好的近似。

问题 2: 参数的初值来自于 p(θ)p(\boldsymbol{\theta}) 的随机样本,意味着不同的初始化会产生不同的函数估计,同时也意味着泰勒展开的每一项,都是输入 xx 的一个随机函数。也就是说,神经网络的随机初始化引入了一个在神经网络函数及其导数上的概率分布,这可以反映为

p(θ)p(f,dfdθ,d2fdθ2,)(0.7)p(\boldsymbol{\theta}) \rightarrow p \left (f,\frac{df}{d\boldsymbol{\theta}},\frac{d^2f}{d\boldsymbol{\theta}^2},\ldots \right ) \tag{0.7}

也就是说,我们面临的是一个由神经网络函数 f(x;θ)f(x;\boldsymbol{\theta})、梯度 df/dθdf/d \boldsymbol{\theta}、Hessian d2f/dθ2d^2 f/d \boldsymbol{\theta}^2 等无数个随机函数组成的联合概率分布,而且此类函数之间通常具有错综复杂的依赖关系。在这种情况下,即便只考虑其中神经网络函数(第一项)的边缘分布 p(f)p(f),也断然没有理由相信它在解析上是易于处理的。

问题 3: 参数估计值 θ\boldsymbol{\theta}^\ast 是复杂训练过程的结果。一般来说, θ\boldsymbol{\theta}^\ast 并不是唯一的,可以依赖于很多因素:

θ[θ](θ,f,dfdθ,d2fdθ2,;学习算法;训练数据)(0.8)\boldsymbol{\theta}^\ast \equiv [\boldsymbol{\theta}^\ast] \left( \boldsymbol{\theta}, f, \frac{df}{d \boldsymbol{\theta}} , \frac{d^2 f}{d \boldsymbol{\theta}^2} , \ldots ; 学习算法; 训练数据 \right) \tag{0.8}

在实践中,学习算法是迭代的,在许多步骤中累积变化,并且动态是非线性的。因此,训练的参数 θ\boldsymbol{\theta} 将以非常复杂的方式依赖于初始化时的所有量(例如参数 θθ 的特定随机样本、神经网络函数初值项 f(x;θ)f(x; θ) 、所有导数项 df/dθdf/dθd2f/dθ2d^2f/dθ^2、… ) 以及学习算法的细节,还有训练数据 (x,f(x))(x,f(x))。确定 θθ 的解析形式必须考虑到所有这些因素,非常复杂。

如果我们能够解决上述三个问题,那么原则上也能够使用泰勒展开式来研究训练好的神经网络函数。更具体地说,我们会在训练好的神经网络函数上找到一个分布

p(f)p(f(x;θ)midtextlearningalgorithm;trainingdata)(0.9)p(f^\ast ) \equiv p \left ( f(x;\boldsymbol{\theta}^\ast ) mid text{learning algorithm;training data} \right ) \tag{0.9}

本文的主要目标,就是开发出上式的解析形式计算方法。

当然,对于一般性的参数化函数 f(x;θ)f(x; θ) 来说,解决上述三个问题不可行。但我们并非是要解决这些一般性函数的问题,而是只关注深度神经网络函数。也就是说,对上述问题的任何解决方案都必须利用神经网络函数的特定结构。但尽管如此,我们还是会尝试给出解决上述复杂问题的一些直觉讨论。

Fig0.1

图 1:简单多层神经网络示意图图,描述了输入 xx 如何通过一系列中间信号 s(1)s^{(1)}s(2)s^{(2)}s(3)s^{(3)} 转换为输出 f(x;θ)f(x; θ)。白色圆圈代表神经元,顶部的黑点代表网络输出,参数 θ\boldsymbol{\theta} 是隐含的;他们权衡携带信号的不同箭头的重要性,并偏置每个神经元的激活阈值。

0.2.1 稀疏性原则

设神经网络的宽度为 nn ,深度为 LL,这两个要素确定了神经网络的主要结构信息。人们首先会想到,到底宽度更重要还是深度更重要,当参数数量相同的情况下,深度大好还是宽度大好呢?

我们可以先从一种极端情况开始探讨,即无限宽神经网络

\lim_{n \rightarrow \infty}p(f^\ast) \tag{0.10

尽管这种神经网络物理上是不存在的,但其极限确实能够极大地简化 p(f)p(f^\ast),使前述三个问题都能够被完全良性化:

对于问题 1:阶数大于等于 22 的所有高阶导数将消失,即只需要计算神经网络函数项和一阶导数项:

f,dfdθ(0.11)f, \frac{d f}{d \boldsymbol{\theta}} \tag{0.11}

对于问题 2:随机函数的联合分布也变简单,并且随机函数的形式很简单且相互独立

limnp(f,dfdθ,d2fdθ2,)=p(f)p(dfdθ)(0.12)\lim_{n \rightarrow \infty} p \left( f, \frac{df}{d θ},\frac{d^2f}{d θ^2}, \ldots \right) = p(f) p \left(\frac{df}{dθ} \right) \tag{0.12}

对于问题 3:训练动态呈线性并且和学习算法的细节无关,使我们可以以封闭形式找到一个 $θ^\ast $ 的完全解析解。

limnθ=[θ](θ,f,dfdθ;trainingdata)(0.13)\lim_{n \rightarrow \infty} θ^{\ast} = [θ^\ast] ( θ, f, df dθ ; training data ) \tag{0.13}

因此,训练后的分布 limnp(f)\lim_{n \rightarrow \infty}p(f^\ast ) 是一个均值非零的简单高斯分布,我们可以很容易地分析这种网络所计算的函数。

上述简化是 稀疏原则 的结果。 尽管看起来将网络扩展为无限数量的组件会变得更加复杂,但从任何特定神经元角度来看,无限数量信号的输入使得大数均衡定律模糊了信号中的许多细节。其结果是:许多这样的无限宽神经网络的 有效理论 可以产生其描述上的稀疏性,例如,可以允许 式(0.11)的截断。

不幸的是,形式上的无限宽极限(nn \rightarrow \infty)产生的深度神经网络模型很差:

  • 无限宽不可能物理实现;
  • 其训练后的分布 ( 式 0.10 ) 在超过一层的神经网络中也会出现理论描述和实际观测不匹配的现象;
  • 经验表明,受过训练后的分布确实取决于学习算法的性质;
  • 这种无限宽神经网络也无法学习其输入的表示(representation):对于任何输入 xx,其在隐藏层中的变换( $s^{(1)}, s^{(2)},\ldots $)将始终与初始化保持一致,从而导致随机表示(即不同初始化对应不同表示),从而严重限制了此类网络所能学习的函数类别。经验表明, 非平凡的表示学习(non-trivial representation learning) 是多层网络的本质属性,因此,这种情况确实更进一步证明了严格无限宽极限理论与现实之间的脱节。

从理论角度来看,上述问题主要源于无限数量的输入信号使每个神经元的有用细节都被清洗掉了。尤其是,这种无限累积完全消除了神经元之间微妙的相关性,而这些相关性在表示学习的训练过程中却是希望被放大的。我们需要找到一种方法来恢复并研究现实有限宽网络中神经元之间的相互作用。

考虑到这一点,也许可以用一种方式来修正无穷大的宽度极限,使得当宽度 nn 越大时,修正反而会变得很小。为此,我们可以引入扰动理论(在物理学中分析相互作用的一种方法)并使用 1/n1/n 展开 来研究深度学习,并将逆层宽 ϵ1/n\epsilon \equiv 1/n作为展开的微参数 ϵ1\epsilon \ll 1。换句话说,我们放宽严格的无限宽限制,并使用以下展开式来计算 式(0.9)的训练后分布:

p(f)p<!swig0>(f)+p<!swig1>(f)n+p<!swig2>(f)n2+(0.14)p(f^\ast) \equiv p^0(f^\ast) + \frac{p^1(f^\ast)}{n} + \frac{p^2(f^\ast)}{n^2} + \ldots \tag{0.14}

在本书中,我们将重点计算第一阶修正,即将展开式截断为:

p(f)p<!swig3>(f)+p<!swig4>(f)n+O(1n2)(0.15)p(f^\ast ) \equiv p^0(f^\ast) + \frac{p^1(f^\ast)}{n} + \mathcal{O}(\frac{1}{n^2} ) \tag{0.15}

这种交互作用理论在形式上保持了简洁性,并且仍然能够让前述三个问题易于处理:

对于问题 1 :阶数大于等于 44 的所有高阶导数将体现在 O(1/n2)\mathcal{O}(1/n^2) 中,我们只需捕获阶为 1/n1/n 的贡献部分即可,也就是说,我们只需要计算神经网络函数的初值、以及第一到三阶的导数项:

f,dfdθ,d2fdθ2,d3fdθ3(0.16)f,\frac{df}{d \boldsymbol{\theta}}, \frac{d^2 f}{d \boldsymbol{\theta}^2}, \frac{d^3 f}{d \boldsymbol{\theta}^3} \tag{0.16}

因此,稀疏性原则仍然会限制对偶有效理论的描述,尽管不像无限宽度限制那样宽。

对于问题 2:初始化时下列相应的随机函数的联合分布

p(f,dfdθ,d2fdθ2,d3fdθ3)(0.17)p \left( f, \frac{df}{d θ},\frac{d^2f}{d θ^2}, \frac{d^3f}{d θ^3} \right) \tag{0.17}

也简单地在阶 1/n1/n 处,且利用扰动原理可以计算其所有细节。

对于问题 3:能够使用动态扰动理论来处理非线性训练动力学,并找到 θθ 的封闭形式解析解。特别是,这将使解对学习算法细节的依赖变得透明和明显。

θ[θ](θ,f,dfdθ,d2fdθ2,d3fdθ3;学习算法;训练数据)(0.18)\boldsymbol{\theta}^\ast \equiv [\boldsymbol{\theta}^\ast] \left( \boldsymbol{\theta}, f, \frac{df}{d \boldsymbol{\theta}} , \frac{d^2 f}{d \boldsymbol{\theta}^2} ,\frac{d^3 f}{d \boldsymbol{\theta}^3} ; 学习算法; 训练数据 \right) \tag{0.18}

作为结果,我们对训练后分布的 1/n1/n 阶描述 式(0.15) 将是一个近似的高斯分布。

除了在解析上易于处理之外,这种 1/n1/n 阶的截断描述将满足我们计算和理解训练后神经网络函数上分布 p(f)p(f^\ast ) 的目标。由于结合了神经元之间的相互作用,这种描述依赖于学习算法的细节,并且包含非平凡的表示学习。

可以定性的说,这种 1/n1/n 阶的有效理论,比无限宽描述更接近于现实的神经网络,将其作为理解深度学习的理论最小模型更加实用。

从定量的角度,实际上我们可以通过计算 式 (0.14) 的展开中的高阶项得到更精细的描述,但这些项是否应该包括在内呢?虽然在书中形式上使得计算 1/n1/n 阶展开式中的这些额外项完全系统化,但研究先进修正方法的一个重要产物实际上是对这种截断误差的更深入了解。特别是,我们将发现,正确的尺度应当是深度 LL 与宽度 nn 之比,。也就是说,式(0.14) 中各展开项的相对大小是由深度与宽度的比率给出的。

这让我们可以通过以下方式重新理解 “无限宽度” 与 “有限宽度” 以及 “浅” 与 “深” 的理解:

  • 在极限 r0r \rightarrow 0 时,神经元之间的相互作用被关闭:无限宽极限 ( 式 0.10 ) 此时仅仅是一个体面的描述。无论如何,此时的网络即便深度再大,也并非真正的深,因为其相对深度为零:L/n=0L/n = 0

  • 0<r10 < r \ll 1 的情况下,神经元之间存在非平凡的相互作用:在 1/n1/n 阶截断的有限宽有效理论 ( 式 0.15) 准确计算了训练的网络输出。这些网络是具有 有效深度(effectively deep) 的。

  • r1r \gg 1 的情况下,神经元是强耦合的:网络会表现出混乱,实例之间的巨大波动造成无法得到有效描述。此时的网络是 过深(overly deep) 的。

因此,大多数实际使用的神经网络实际上具有比较小的深宽比,我们在 1/n1/n 阶处截断的描述 ( 式 0.15 )也提供了很好的定量对应。

由此可见,要真正描述多层神经网络的特性(即理解深度学习),我们需要研究 “大型但宽度有限” 的神经网络。通过这种方式,我们才能够得到对现实深度神经网络的宏观有效理论描述。