下面,我们将对迄今为止所提出的公式的一些基本方面提出质疑,即通过梯度计算的更新步骤。概括地说,前几章介绍的方法要么是纯粹的_监督_训练,要么是将物理模型作为物理损失项
整合进来,要么是通过嵌入训练图的可微物理(DP)算子将其包含在内。后两种方法与本书的内容更为相关。它们有相似之处,但在损失项的情况下,物理评估只需要在训练时进行。对于 DP 方法,通常在推理时也会使用求解器本身,从而实现对 NN 和数值求解器的端到端训练。这三种方法都使用一阶导数来驱动优化和学习过程,后两种方法还使用一阶导数来计算物理项。从深度学习的角度来看,这是很自然的选择,但我们完全没有质疑这是否是最佳选择。
经过上述介绍,我们也就不觉得奇怪了:下面章节的核心观点是,对于涉及物理量的学习问题,常规梯度可能是次优选择
。事实证明,有监督和DP梯度各有利弊,同时也为了解物理算子的定制方法留出了空间。特别是,我们将展示 DP 梯度的缩放问题如何影响 NN 训练(如 {cite}holl2021pg
中所述),并重新探讨多模态解的问题。最后,我们将解释防止这些问题的几种替代方法。
下面,我们将按以下步骤进行:
- 展示不同优化器的特性以及相关的缩放问题如何对 NN 训练产生负面影响。
- 找出迄今为止我们的 GD 或 Adam 训练运行中存在的问题。剧透:它们缺少一个反演过程来使训练与缩放无关。
- 然后,我们将解释缓解这些问题的两种替代方案:一种是分析全反演,另一种是数值半反演方案。
17.1 问题的关键
在深入探讨不同优化器的细节之前,下面的段落应该能让我们直观地了解为什么这种反演很重要。如上所述,迄今为止讨论的所有方法都使用梯度,而梯度存在基本的缩放问题:即使是相对简单的线性情况,梯度的方向也可能被负向扭曲,从而阻碍向最小值的有效推进。(在非线性情况下,梯度的长度与离最小点的距离成反比,因此更难收敛)。
在一维空间中,可以通过调整学习率来缓解这个问题,但在高维空间中,问题变得非常明显。让我们考虑一个非常简单的二维玩具“物理”函数,它简单地将因子 应用于第二个分量,然后加上 损失:
\mathcal P(x_1,x_2) = \begin{bmatrix} x_1 \ \alpha ~ x_2 \end{bmatrix} \text{ 其中 } L(\mathcal P) = |\mathcal P|^2
对于 来说,一切都很简单:我们面对的是一个径向对称的损失曲面,而 和 的行为方式是一样的。梯度 垂直于损失分布的孤立线,因此使用 的更新会直接指向 0 处的最小值。这是我们处理经典深度学习场景的一种设置,比如大多数监督学习案例或分类问题。下图左侧为该示例的可视化示意图。
然而,在本书中,我们针对的是物理
学习问题,因此我们在学习过程中融入了物理函数,这一点在可微分物理方法中已有详细讨论。这在本质上是不同的!物理过程几乎总是为不同的成分引入不同的缩放行为:物理状态的某些变化是敏感的,会产生巨大的反应,而另一些则几乎没有任何影响。在我们的玩具问题中,我们可以通过选择不同的 值来模拟这种情况,如上图的中间和右图所示。
对于较大的 ,远离最小值的损失曲面沿 逐渐陡峭。 与 的尺度差异越来越大。因此,梯度会沿着 增长。如果我们不想让优化结果爆炸,就需要选择一个较小的学习率 ,从而减少沿 的梯度。当然,梯度会与损失保持垂直。在这个例子中,我们会沿着 快速移动,直到接近 x 轴,然后才会非常缓慢地向左移动到最小值。更糟糕的是,正如我们将在下文中展示的,定期更新实际上应用的是缩放的平方!而在多维度的设置中,要找到一个好的学习率是非常困难的。因此,为了取得适当的进展,我们需要考虑多维函数中各分量的不同缩放比例。这就需要某种形式的反转,我们将在下文中详细介绍。
请注意,反转自然不意味着否定()。一个负梯度肯定会朝着错误的方向移动。我们需要一种仍指向损失递减的更新,但要考虑到不同比例的维度。因此,下面的核心目标将是 "尺度不变性"。
缩放不变性的定义:对给定函数进行尺度不变优化时,函数的不同参数(即标度)会产生相同的结果。
例如,对于我们上面的玩具问题,这意味着无论我们选择 的值是多少,优化轨迹都是相同的。
17.2 传统优化方法
现在,我们将对不同优化器的性能进行评估和讨论。和之前一样,让 成为标量损失函数,并进行最小化。我们的目标是根据输入参数 计算一个步长,用 表示。下面,我们将计算不同版本的 ,并用下标加以区分。
前几章中的所有 NN 都是通过反向传播的梯度下降(GD)训练的。在 PDE 求解器(模拟器) 中也使用了带有反向传播的梯度下降法,从而形成了 DP 训练方法。当简化设置并暂时忽略 NN 时,就会得到最小化问题 ,其中 。作为一个核心量,我们有损失函数 的复合梯度 :
由于符号使得阅读困难,而且我们实际上只处理转置的雅可比矩阵,因此在接下来的讨论中我们将省略符号。我们在前几章已经证明了使用是可行的,但在经典优化领域,除了梯度下降(GD)之外,还有其他更广泛使用的算法:比较流行的是所谓的拟牛顿方法,它们使用的更新方法有着本质的不同。因此,在接下来的讨论中,我们将重新审视GD以及拟牛顿方法和作为第三种选择的逆雅可比矩阵。我们将在理论层面上重点讨论不同方法的优缺点。其中,有趣的是讨论为什么尽管经典优化算法具有一些明显的优势,但在神经网络训练中并没有被广泛使用。
请注意,我们仅考虑多元函数,因此除非另有说明,否则所有符号都表示向量值表达式。
注:牛顿法或BFGS变体等技术常用于优化数值过程,因为它们可以提供更好的收敛速度和稳定性。这些方法同样采用梯度信息,但在计算更新步长时与GD有很大的区别,它们通常采用高阶导数。
17.3 梯度下降法
梯度下降(GD)的优化更新与目标函数对输入的导数成比例:
其中是标量学习率。
雅可比矩阵描述了损失是如何对输入的微小变化做出反应的。
令人惊讶的是,这种被广泛使用的更新方法存在一些不可取之处,我们将在接下来的内容中进行重点介绍。请注意,我们在(如{doc}supervised-airfoils
)等有监督的设置中自然地应用了这种更新方法,我们也在可微分物理方法中使用了它。例如,在{doc}diffphys-code-sol
中,我们计算了流体求解器的导数。在后一种情况下,我们仍然只更新了神经网络参数,但流体求解器的雅可比矩阵是方程{eq}GD-update
的一部分,如{eq}loss-deriv
所示。
我们将联合评估梯度下降法和其他几种方法在一系列类别中的处理方式:单位处理、函数敏感性和接近最优点的行为。虽然这些主题是相关的,但它们展示了这些方法之间的异同。
单位
GD的一个问题是其本质上错误地表示了维度。假设两个参数和具有不同的物理单位。那么GD参数更新的尺度与这些单位的倒数成比例,因为参数出现在GD更新的分母中()。学习率可以弥补这种差异,但由于和具有不同的单位,不存在一个单一的可以为两个参数产生正确的单位。
有人可能会认为神经网络的参数并不太重要,但从物理学的角度来看,它们的错误是令人不安的,并且暗示了一些更根本的问题。
函数敏感性
如上所述,当函数未经过归一化时,GD也存在固有问题。考虑上述玩具示例的简化版本,即仅包含函数。那么GD的参数更新与成比例,即,而的项甚至会达到量级。如果通过对进行归一化,一切都很好。但在实践中,我们经常会遇到,甚至更糟的是,这样我们的优化就会遇到麻烦。
更具体地说,如果我们观察损失的变化,那么GD的更新步骤中围绕的展开可以得到:。这个一阶步骤导致损失的变化为 。因此,损失的变化由导数的平方决定,这导致了上述提到的 因子。更糟糕的是,在实践中我们希望这里有一个归一化的量。对于梯度的缩放因子 ,我们希望我们的优化器计算一个类似于 的量,以便从梯度中得到可靠的更新。
这表明对于敏感函数,即在的小变化会导致的大变化的函数,梯度下降法(GD)会产生大的,这会导致的更大变化,从而导致梯度爆炸的问题。对于不敏感函数,即输入的大变化不会对输出产生太大变化的函数,梯度下降法会产生小的更新,这可能导致优化过程停滞不前,这就是经典的梯度消失问题。
这种敏感性问题在复杂函数中很容易出现,比如深度神经网络,其中的层通常没有完全归一化。归一化结合正确设置学习率可以在神经网络中在一定程度上抵消这种行为,但在优化物理模拟时这些工具是不可用的。在模拟中应用归一化除了在最后一个求解步骤之后,任何地方都会破坏模拟的状态。在实践中调整学习率也很困难,例如在同时优化不同时间步的模拟参数或者模拟输出相对于初始状态的幅度变化较大的情况下。
最优点附近的收敛
最终,任何可微函数的损失曲面在接近最优解时必然变得平坦,因为梯度在收敛时趋近于零。因此,当接近最优解时,,导致收敛速度缓慢。
这是一个重要的观点,我们将在下面重新讨论它。这也有些令人惊讶,但实际上它可以稳定训练。另一方面,它使得学习过程难以控制。
17.4 拟牛顿法
牛顿法利用梯度和Hessian矩阵的逆来进行更新。
在实践中更广泛使用的是拟牛顿方法,例如BFGS及其变种,它们近似于Hessian矩阵。然而由此产生的更新保持不变。作为进一步的改进,步长通常通过线搜索确定(我们暂时忽略这一步骤)。这种构造解决了上述梯度下降的一些问题,但也存在其他缺点。
单位和敏感性
拟牛顿方法相比于梯度下降法在物理单位处理方面提供了更好的解决方案。方程(1)中的准牛顿更新方法可以为所有需要优化的参数提供正确的单位。因此,可以保持无量纲。
现在考虑通过计算损失变化的情况,第二项正确地抵消了量,并留下了一个与有关的标量更新。回想一下梯度下降法部分的缩放因子的示例,牛顿方法中的逆海森矩阵成功地为我们提供了一个的因子来抵消我们更新的不良缩放。
最优点附近的收敛
当损失函数的曲面相对平坦时,拟牛顿法的收敛速度更快。它们不会减慢步伐,即使被固定。这要归功于逆Hessian矩阵的特征值,它们与Hessian矩阵的特征值成反比,因此随着损失曲面的平坦程度而增加。
复合函数中的一致性
到目前为止,拟牛顿方法解决了梯度下降法的两个缺点。然而,与梯度下降法类似,中间空间的更新仍然取决于之前的所有函数。这种行为源于复合函数的海森矩阵中梯度的非线性项。考虑一个函数组合,其中如上所述,并且还有一个额外的函数。
那么海森矩阵依赖于内部雅可比矩阵的平方。这意味着如果我们在反向传播步骤中使用这种更新,海森矩阵会受到反向传播链中_后续_函数的影响。因此,在计算梯度时,任何中间潜在空间的更新都是未知的。
依赖于海森矩阵
此外,从以上讨论可以明显看出拟牛顿方法的一个根本缺点是其对Hessian矩阵的依赖性。Hessian矩阵在目前讨论的所有改进中都起着至关重要的作用。
首先,明显的缺点是计算成本。尽管评估精确的Hessian矩阵只会在每个优化步骤中增加一个额外的遍历,但这个遍历涉及到比计算梯度更高维的张量。由于随参数数量的平方增长,对于大型系统来说,它的评估和求逆都变得非常昂贵。这就是拟牛顿方法在使用合理资源计算近似值时所付出的重要努力,但这仍然是一个核心问题。
上述拟合牛顿更新还需要_Hessian_矩阵的逆。因此,接近不可逆的Hessian通常会导致数值稳定性问题,而本质上不可逆的Hessian则需要退回到一阶GD更新。
拟牛顿方法的另一个相关限制是目标函数需要_二阶可微_。虽然这似乎不是一个大的限制,但需要注意的是,许多常见的神经网络架构使用ReLU激活函数,其二阶导数为零。
相关的问题是高阶导数在遍历参数空间时往往更快地变化,使它们更容易受到损失曲面中高频噪声的影响。
拟牛顿法仍然是一个非常活跃的研究课题,并且因此已经提出了许多扩展方法,可以在特定环境中缓解其中一些问题。例如,通过仅存储可用于近似海森矩阵的低维向量,可以规避内存需求问题。然而,这些困难说明了在应用BFGS等方法时经常出现的问题。
17.5 逆梯度
作为解决上述问题的第一步,我们将考虑所谓的“逆梯度”(Inverse Gradients,IGs)。这些方法实际上使用了雅可比矩阵的逆,但由于计算链的末尾总是有一个标量损失,这会导致一个梯度向量。不幸的是,它们也带来了一系列自己的问题,这就是为什么它们只代表了一个中间步骤(我们稍后会以一种更实际的形式重新考虑它们)。
我们不再考虑标量 ,而是考虑一个通用的、可能非标量的函数 的优化问题。这个函数在后面通常是物理模拟器 ,但为了保持通用和可读性,我们现在称之为 。这个设置意味着一个逆问题:对于 ,我们希望找到一个给定目标 的 。我们定义:
作为IG更新。在这里,雅可比矩阵类似于上述GD更新的反函数,以一阶精度编码了输入必须如何改变才能获得输出中的小变化。关键步骤是反演,当然需要雅可比矩阵可逆。这是一个与海森矩阵反演类似的问题,我们将在下面重新讨论这个问题。然而,如果我们可以反演雅可比矩阵,这将具有一些非常好的性质。
请注意,这里不是使用学习率,而是步长由期望的输出值的增加或减少确定。因此,我们需要选择一个而不是,但实际上扮演着相同的角色:它控制优化的步长。在最简单的情况下,我们可以通过计算出它作为朝向真实值的一步。这个将在以下方程中频繁出现,并使它们乍一看看起来与上述方程非常不同。
单位
IGs随着反导数的变化而变化。因此更新的单位与参数的单位相同,无需任意学习率: 乘以 的单位为 。
函数敏感性
它们在归一化方面也没有问题,因为上述示例中的参数更新从现在按比例缩放为。因此,敏感函数接收到小的更新,而不敏感的函数接收到大的(或爆炸性的)更新。
最优附近收敛和函数组合
与牛顿法类似,IG方法在接近最优点时表现出与GD相反的行为:它们产生的更新仍然推进优化过程,通常有利于收敛。
此外,IG方法在函数组合方面具有一致性。的变化量为,的近似变化量为。中间空间的变化与它们各自的依赖关系无关,至少在一阶导数的情况下是独立的。因此,在反向传播期间,这些空间的变化可以在所有梯度被计算之前进行估计。
请注意,即使是具有逆Hessian矩阵的牛顿法也没有完全做到这一点。关键在于,如果Jacobian矩阵是可逆的,我们将直接获得给定层的正确缩放方向,而无需像逆Hessian矩阵那样使用辅助量。
依赖于逆 Jacobian
目前为止还不错。上述特性显然是有优势的,但不幸的是,IGs需要雅可比矩阵的逆。它仅在雅可比矩阵是方阵时有明确定义,这意味着对于输入和输出维度相同的函数。然而,在优化中,输入通常是高维的,而输出是标量目标函数。类似于拟牛顿方法的海森矩阵,即使是方阵,它也可能不可逆。
因此,我们现在考虑到逆梯度是逆函数的线性化,同时保留相同的优点,使用逆函数可以提供额外的优势。
到目前为止一切顺利。上述性质明显具有优势, 但不幸的是, IG 需要 Jacobian 的逆 。它仅对方 Jacobian 有意义, 这意味着对于输入和输出维度相等的函数 。然而, 在优化中, 输入通常是高维的, 而输出是一个标量目标函数。并且, 与拟牛顿法的海森矩阵 somewhat 类似, 即使 是方的,它也可能不可逆。
因此, 我们现在考虑逆梯度是逆函数的线性化的事实, 并且展示使用逆函数提供了额外的优势, 同时保留相同的好处。
17.6 逆模拟器
到目前为止,我们已经讨论了现有方法的问题,而在表现更好的方法中,如牛顿法和IGs,一个共同的主题是常规梯度是不够的。我们需要以某种形式的“反转”来解决它的问题,以达到尺度不变性。在进入神经网络训练和执行这种反转的数值方法的细节之前,我们将考虑另一个“特殊”情况,这将进一步说明反转的必要性:如果我们可以利用一个“逆向模拟器”,同样可以解决梯度下降法中的许多固有问题。它实际上代表了计算物理模拟部分更新步骤的理想设置。
设为一种正向模拟,表示其逆运算。与之前的雅可比矩阵或海森矩阵的求逆不同,表示对的所有函数进行完全逆运算。
尝试在从顶部开始的最小化问题中使用反演求解器,有点令人惊讶的是,这使得整个最小化问题变得过时(至少对于考虑具有一个对的单个情况而言)。我们只需要评估来解决反问题并获得。由于我们计划很快恢复NN和更复杂的情况,因此假设我们仍然处理一组目标和非明显的解。一个例子可能是,我们正在寻找一个,它产生多个目标,并且在意义下具有最小的失真。
现在,我们可以使用逆物理模拟器来迭代更新当前近似解,而不是仅仅评估一次以获得解。我们将这个更新称为。
同时,使用一个基于初始解猜测的条件化的局部逆也是一个好主意。由于可能存在导致非常相似的不同空间位置,我们希望找到最接近当前猜测的位置。这对于在多模态设置中获得良好的解非常重要,我们希望避免解流形由一组非常分散的点组成。
借助这些改变,我们可以构建一个优化问题,其中优化的当前状态 , ,使用 进行更新。
这里在空间中的步长可以是完整距离或其一部分,与IG的步长保持一致。当应用更新时,尽管是一个可能高度非线性的函数,它将产生。请注意,等式{eq}PG-def
中的有效地抵消,以给出关于的步长。然而,这种表示法可以显示与等式{eq}IG-def
中的IG步骤的相似之处。
更新给出了第一个迭代方法,它利用了的所有信息,例如高阶项。
17.7 总结
由于缩放问题,使用普通梯度下降方法得到的更新存在令人惊讶的缺陷。经典的基于反演的方法,如IG和牛顿法,通过反演模拟器的更新构造()消除了其中的一些缺陷,其中包括最高阶的项。可以看作是改进(反演)更新步骤的“理想”设置。它正确地获取了上述所有方面:单位、函数灵敏度、组合和接近最优值的收敛性,并提供了一个“尺度不变”的更新。这是以需要表达式和局部反演求解器的离散化为代价的。
与牛顿法和IG的二阶和一阶近似相比,它可以潜在地考虑高度非线性的影响。由于反演模拟器的构造可能很困难,以下各节的主要目标是说明包含所有高阶信息可以获得多大收益。请注意,所有三种方法都成功地通过反演包括了搜索方向的重新缩放,与先前讨论的GD训练相反。尽管所有这些方法都代表不同形式的可微物理,但在将改进的更新包含在NN训练过程中之前,我们将讨论一些附加的理论方面,并用实际例子说明这些方法之间的差异。
17.8 深入了解逆向模拟器
我们将现在更详细地推导和讨论的更新。物理过程可以被描述为状态空间中的轨迹,其中每个点代表系统的一种可能配置。模拟器通常接受一个这样的状态空间向量,并在另一个时间计算一个新的向量。因此,模拟器的雅可比矩阵必然是方阵。只要物理过程不“销毁”信息,雅可比矩阵就是非奇异的。事实上,人们相信我们宇宙中的信息不能被销毁,因此只要我们对状态有完美的知识,任何物理过程理论上都可以被反演。因此,可以合理地期望在许多情况下可以制定。
根据上述描述计算的更新步骤还具有一些良好的理论性质,例如,只要始终收敛到固定目标,优化就会收敛。有关相应证明的详细信息可参见{cite}holl2021pg
。
17.8.1 微积分基本定理
为更清晰地说明非线性情况下的优势,我们应用基本定理来重新表达上述比率。这给出, 这里积分内的表达式是局部梯度,我们假设它在 和 之间的所有点都存在。局部梯度沿着连接更新前状态和更新后状态的路径进行平均。因此,整个表达式等于 在当前 和下一次优化步骤的估计值 之间的平均梯度。这实际上相当于通过计算可以考虑 的非线性性的更新来“平滑”优化的目标景观。
通过将积分替换为沿着连接 和 的任何可微路径的路径积分,并将局部梯度替换为沿路径方向的局部梯度,这些方程自然地推广到更高的维度。
17.8.2 全局和局部逆模拟器
设是一个具有方阵雅可比矩阵的函数,。只有双射的才定义了一个全局反函数。如果反函数存在,则它可以找到任何,使得。我
们在实践中通常不直接使用这个“完美”的反函数,而是使用一个局部反函数,它是在点上条件的,并且相应地与有关。这个局部反函数更容易获得,因为它只需要在给定的附近存在,而不是对于所有的。对于通用的存在,需要是全局可逆的。
相比之下,局部反函数只需要在附近存在并且准确即可。如果全局反函数存在,则局部反函数逼近它,并在时完全匹配它。更正式地,。即使全局反函数不存在,局部反函数也可以存在。
例如,非单射函数可以通过选择最接近的,使得来反转。例如,考虑。它没有全局反函数,因为每个存在两个解()。然而,我们可以通过选择最接近的解从一个初始猜测中轻松构造一个局部反函数。对于可微函数,只要雅可比矩阵是非奇异的,局部反函数就有保证存在,这是由于反函数定理保证了这一点。这是因为反雅可比矩阵本身就是一个局部反函数,尽管是一阶的,而不是最准确的反函数。
即使雅可比矩阵是奇异的(因为函数不是单射的、混沌的或嘈杂的),我们通常也可以找到良好的局部反函数。
17.8.3 时间反转
模拟器的逆函数通常是时间反演的物理过程。在某些情况下,将正向模拟器的时间轴反转,即,可以得到一个足够全局的逆模拟器。除非模拟器在实践中破坏了信息,例如由于累积的数值误差或者刚性线性系统,否则这种方法可以作为逆模拟的起点,或者用于构建一个“局部”的逆模拟。
然而,模拟器本身需要具有足够的准确性才能提供正确的估计。对于更复杂的情况,例如在多个时间步骤中进行的流体模拟,{doc}overview-ns-forw
中使用的一阶和二阶方案是不够的。
17.8.4 集成损失函数
自从引入IGs以来,我们只考虑了一个具有输出的模拟器。现在我们可以重新引入损失函数。与之前一样,我们考虑具有标量目标函数的最小化问题,该函数取决于可逆模拟器的结果。在方程(1)中,我们引入了逆梯度(IG)更新,当包括损失函数时,它给出。
这里,表示在损失方面要采取的步骤。通过应用链式法则,并将IG 替换为方程(2)中逆物理模拟器的更新,我们得到了一阶近似:
这些方程表明,方程{eq}PG-def
在一阶精度上等于上面一节中的IG,但包含非线性项,即。更新的准确性取决于逆函数的保真度。
我们可以使用局部梯度定义局部逆误差的上限。
在最坏的情况下,我们可以回退到常规梯度。此外,我们将对的步骤转化为空间中的步骤:。然而,这并没有规定计算的唯一方法,因为导数作为行向量的右逆几乎没有对施加限制。
相反,我们使用方程(见引用{eq}quasi-newton-update
)中的牛顿步骤来确定,其中控制着优化步骤的步长。在接下来的代码示例之后,我们将结合介绍神经网络的内容详细解释这一点。