在过去的十年里,神经网络在视觉、语音、语言理解、医学、机器人和游戏等领域取得了惊人的成果。人们原本以为,这种成功需要克服理论上存在的重大障碍。毕竟,深度学习优化是非凸的、高度非线性的、高维的,那么我们为什么能够训练这些网络呢?在许多情况下,它们拥有的参数远远多于记忆数据所需的参数,那么为什么它们能够很好地推广呢?尽管这些主题已经占据了机器学习研究领域的大部分注意力,但当涉及到更简单的模型时,神经网络领域的原则是先数据训练再说。显然,这招奏效了。
https://www.cs.toronto.edu/~rgrosse/courses/csc2541_2021/
结果,神经网络的实际成功已经超过了我们理解它们如何工作的能力。这门课是关于开发概念工具来理解当神经网络训练时会发生什么。其中一些思想早在几十年前就已经形成了(可能已经被社区的大部分人遗忘了),而另一些思想今天才刚刚开始被理解。我将试图传达我们最好的现代理解,尽管它可能不完整。
这门课从优化中汲取灵感,它不是一门优化课。一方面,优化的研究通常是指令性的,从优化问题的信息和明确定义的目标(如在特定规范下快速收敛)开始,并找出保证实现该目标的计划。对于现代神经网络来说,分析通常是描述性的: 采用在使用的程序,并找出它们(似乎)有效的原因。希望这种理解能让我们改进算法。
与优化研究的另一个区别是,目标不是简单地拟合一个有限的训练集,而是一般化。尽管神经网络有巨大的能力,但为什么它能泛化与训练的动态密切相关。因此,如果我们从优化中引入一个想法,我们不仅需要考虑它是否会更快地最小化成本函数,还需要考虑它是否以一种有利于泛化的方式实现。
这类应用不会为您提供在ImageNet上实现最先进性能的方法。它也不是那种为了证明定理而去证明定理的理论课。相反,我们的目的是为您提供概念性工具,以便您在任何特定情况下推断出影响训练的因素。
除了让你的网络更好地训练之外,学习神经网络训练动力学的另一个重要原因是,许多现代架构本身就足够强大,可以进行优化。这可能是因为我们在体系结构中明确地构建了优化,就像在MAML或深度均衡模型中那样。或者,我们可能只是在大量数据上训练一个灵活的架构,然后发现它具有惊人的推理能力,就像GPT3一样。不管怎样,如果网络架构本身在优化某些东西,那么外部训练过程就会与本课程中讨论的问题纠缠在一起,不管我们喜欢与否。为了有希望理解它提出的解决方案,我们需要理解问题。因此,本课程将以双层优化结束,利用课程中涵盖的所有内容。
目录内容:
我们将通过分析一个简单的模型开始这门课,梯度下降动力学可以被精确地确定:线性回归。尽管线性回归很简单,但它提供了对神经网络训练惊人的洞察力。我们将使用线性回归来理解两种神经网络训练现象: 为什么对输入进行归一化是一个好策略,以及增加维度可以减少过拟合。
线性化是我们理解非线性系统最重要的工具之一。我们将涵盖神经网络的一阶泰勒近似(梯度,方向导数)和二阶近似(Hessian)。我们将看到如何用雅可比向量乘积有效地计算它们。我们将使用Hessian诊断缓慢收敛和解释网络预测。
度量给出了流形上距离的一个局部概念。在许多情况下,两个神经网络之间的距离可以更有效地定义为它们所代表的函数之间的距离,而不是权重向量之间的距离。这就引出了一个重要的优化工具,叫做自然梯度。
我们从几个角度来激励神经网络的二阶优化:最小化二阶泰勒近似、预处理、不变性和近端优化。我们将看到如何使用共轭梯度或克罗内克因子近似来近似二阶更新。
我们看看已经成为神经网络训练的主要内容的三个算法特征。我们试图理解它们对动力学的影响,并找出构建深度学习系统的一些陷阱。