作者讲解了Hessian 阵、临界点的数量与性质、优化路径性质、Transformer 优化性质几个方面,希望能够帮助我们更好的理解网络损失的 landscape,优化器优化轨迹的性质。大规模神经网络优化

We should use the special structure properties of f(for example f is a given by a neural network)to optimize it faster, instead of purely relying on optimization algorithms. ― Yuanzhi Li

Adam 虽然称作”通用“优化算法,虽然在大语言模型等 Transformer 架构上表现的好,但它也并不是万能的,在视觉模型的泛化性,以及一些凸问题上收敛的表现都没有 SGD 要好。正如本篇开头所引,我们要关注特殊网络结构的特殊性质(比如 Transformer)。

如何刻画网络的优化性质呢?在优化相关的论文中,通常通过分析 Hessian 矩阵及其特征值,或者将损失函数进行一维或二维的可视化来分析网络的优化性质。我们希望这些指标能够帮助我们更好的理解网络损失的 landscape,优化器优化轨迹的性质等等。我们希望将这些指标刻画的性质与优化器的设计关联起来。我们也希望找到合适的指标来反应随着网络参数、数据量、批量大小等参数的变化,网络的优化性质如何变化「R1」。

本文讨论的方向如果有新的动向,也会持续更新。如果有任何错误/问题/讨论,欢迎在评论区留言。

#Hessian 阵

大量对神经网络损失空间的研究都是基于 Hessian 阵的。Hessian 阵是损失函数的二阶导数。由于 Hessian 阵是实对称矩阵,可以应用特征分解。它的特征值和特征向量可以帮助我们理解损失函数的 landscape。这里我们不太严谨的介绍一些优化文章中常见的概念。

1.1 常见概念

Curvature 曲率:数学定义为一点处密切圆弧的半径的倒数,它刻画了函数与直线的差距。在梯度为 0 的点时,Hessian 阵行列式为曲率。

Eigenvalue 特征值:Hessian 阵的特征值越大,对应的特征向量(Eigenvector)方向就越陡(凸性越强)。最大特征值对应的方向为最大曲率的方向。如果考虑以特征向量对应方向的单位向量作为基张成的空间,该空间称为特征空间 Eigenspace,对应的单位向量为 Eigenbasis。

Conditioning number 条件数:Hessian 阵的最大特征值与最小特征值的比值。条件数越大,系统越不稳定。

Axis-aligned 坐标轴对齐:Hessian 阵的特征向量是否与坐标轴平行。

神经网络~损失空间_泛化

  • 鞍点:H 非正定的驻点
  • plateaus:平坦地,拥有小曲率的平面
  • basins:盆地,局部最优点的集合
  • wells:井,鞍点的集合

局部的泰勒展开到二阶:

神经网络~损失空间_神经网络_02

1.2 费雪信息

Fisher information matrix 费雪信息:

神经网络~损失空间_神经网络_03

1.3 Gauss-Newton 阵

Gauss-Newton decomposition:记神经网络输出为 ,其中 为损失函数,则网络的黑塞阵有如下分解。以一维 f 为例,高维可参考此处:

https://andrew.gibiansky.com/blog/machine-learning/gauss-newton-matrix/

神经网络~损失空间_特征值_04

#临界点的数量与性质

为了更直观的理解,不会介绍太多理论推导。讨论网络优化性质的文章往往观点鲜明,不少文章得出的结论甚至是相互矛盾。从今天的视角往前看,我们主要介绍目前被广泛接受的观点。但也要注意,部分结论是在 CNN,MLP,LSTM 上用监督学习进行,对应的是 over-paramterized 网络(参数量远大于数据量)。目前的 LLM 则一定程度是 under-parameterized 网络。

1. 局部最优点的数量随着网络参数的增加而指数级增加,但不同局部最优点的训练损失相差不大

[AHW96] 用单神经元网络说明了局部最优点的数量随着网络参数的增加而指数级增加。LeCun 引领的一系列工作 [CHM+14,CLA15,SGA15,K16] 使用 spin-glass 物理模型阐释了简化的神经网络中差局部最优解随着模型参数增大指数级减小,以及局部最优解附近相当平坦。[DY16] 则证明了多层神经网络中相似的结论。

[SEG+18] 中提到,在全连接层中交换任意两个神经元可以得到等价的神经网络。这个性质让随机初始化的网络可能收敛到非常不同的局部最优值。[DVS18] 则用过实验发现,不同的局部最小值之间可以通过平坦的路径相连。[KWL+20] 同样支持了这点:任意两个局部极小值之间都可以通过一条不会太”扭曲“的路径相连,这条路径上的损失最多比局部最优处的损失高一点。

神经网络~损失空间_泛化_05

2. 鞍点的数量比上局部最优点的数量随着网络参数的增加而指数级增加

[DPG+14] 理论分析了鞍点数量和局部最优点数量的比例随着网络参数的增加而指数级增加,同时鞍点通常被 plateaus 所包围。[LSJ+16] 则通过理论分析补充,训练时不会陷入鞍点,但是会减慢速度。[CHM+14] 同意该看法,并认为训练神经网络的过程可以看作避开鞍点,并通过选择鞍点的一端从而打破“对称性”的过程。在鞍点处优化器的选择会影响到最终收敛点的性质。

3. Hessian 的低秩性质

[SBL17,SEG+18] 通过计算 CNN 网络训练时的特征谱,发现 Hessian 阵特征值谱分布特点:

  • 在训练初期,Hessian 特征值以 0 为中心对称分布。随着训练进行不断向 0 集中,H 退化严重。训练末期极少量小于 0。
  • 接近收敛时 Hessian 特征谱分为两部分,大量接近 0,离群点远离大部分特征值,离群点的数量接近于训练数据中的类别数量(或聚类数量)。即 Hessian 阵此时是低秩的。
  • 数据不变的情况下,增大参数仅仅使 Hessian 阵接近 0 的部分更宽;参数不变的情况下,数据量的变化会改变 Hessian 阵特征谱的离群点。
  • 参数量越大,批量大小越小,训练结束时 Hessian 阵特征值的负值越多(但总体比例都很小。[BKX19] 补充,在训练早期 Hessian 阵就会变得基本没有负值。

[DVS18,BKX19] 同样发现了离群点数量(近似 Hessian 阵的秩)与分类任务中的类别数量相关。最近的一篇工作 [SHS23] 则说明,CNN 中 Hessian 阵的秩随着参数增加而增大。[SKV20] 分析了每层的 Hessian 特征值谱,发现与整个网络的 Hessian 特征值谱相似。

[GRD18] 则进一步描绘了整个训练过程中的低秩现象:Hessian 最大的几个特征值对应的特征向量张成的子空间尽管会变化,但变化程度不大。训练的梯度会很快的进入到这个子空间中,但在这个子空间中并没有什么规律。故整个神经网络的训练似乎是发生在一个低维的子空间上的。

4. Gauss-Newton 阵可以近似 Hessian 阵

[SEG+18,SKV20] 都指出了这一点。实验如图所示。Sophia 等二阶优化器正是利用了这点进行对角黑塞阵的计算。[LGZ+19,P19] 则验证了梯度的二阶矩的大特征值与 Hessian 阵的大特征值近似。

神经网络~损失空间_神经网络_06

▲ [LGZ+19] 不同层以及整个网络 Hessian 阵与 Gauss-Newton 阵特征值分布对比

5. 平坦的收敛点具有更好的泛化性,大的批量容易收敛到 sharp 的收敛点

[KMN+17] 指出 Flat minima 有利于泛化,大批量训练容易收敛到 sharp minima,小批量训练容易收敛到 flat minima。[SEG+18] 同意这一点,但反对 [KMN+17] 中认为 flat minima 和 sharp minima 被 well 分割开。通过实验证明能够从 sharp minima 平坦的“走”到 flat minima。[YGL+18] 分析了不同批量大小收敛点的 Hessian 特征谱,发现了相同的结论。

一般认为平坦的损失空间,既有利于优化算法的梯度下降,得到的收敛点性质也会更好。故很多文章从该角度解释网络设计的成功原因。譬如残差链接,BN,更宽的网络(over-paramterized)都有助于让损失空间更平滑。

优化路径性质

这里先介绍两篇近期的工作,之后有机会再补充。

[LBZ+21] 沿着前人的工作,探讨了初始权重与训练完成后的权重,两者插值得到的一系列权重的性质。可以看到不同初始化的网络权重往往收敛到同一个盆地。虽然与训练路径不同,插值路径也是单调递减,没有凸起的现象。

神经网络~损失空间_神经网络_07

▲ [GGG+21] 左:不同学习率下不同方法的表现;右:最大特征值和学习率的变化

[PL23] 工作则是将优化器每步进行分解。根据局部泰勒展开,作者定义 gradient correlation 和 directional sharpness 两项:

神经网络~损失空间_人工智能_08

▲ [PL23] 函数的单次更新的泰勒展开

作者发现,不同的优化器的 direction sharpness 的表现很不相同。Sharpness 刻画的是一个点局部的平坦程度,而 directional sharpness 则刻画了优化方向上的平坦程度。在语言模型上,作者发现 SGD 优化器的 direction sharpness 显著高于 Adam 优化器。作者认为这是 Adam 优化器收敛速度快的原因。作者还通过梯度的值裁剪进一步减小 Sharpness 程度,从而加速收敛。

神经网络~损失空间_泛化_09

▲ [PL23] 不同方法的 directional sharpness 对比

我们已经知道收敛点是需要越平坦泛化性越好的。但从这两篇文章中可以看到,我们希望优化路径始终能够在平坦的区域探索。以往的文章会认为这些区域可能会导致优化陷入鞍点,但目前看来,优化空间中存在大量这样平坦的空间,优化器应该在这些较为平坦的空间中“大踏步”的进行探索。

#Transformer 优化性质

前面的分析都是比较泛化的,为了更好的设计针对 Transformer 的优化器,我们还需要分析 Transformer 的特殊性质。比如文章 [LLG+20] 就指出了 Transformer 训练时的一些困难。同样的,Adam 在 Transformer 上表现显著好于 SGD,也暗示了 Transformer 的优化性质与 CNN 等网络不同。

Transformer 的分析文章很多都是对模型设计的分析,如果有机会,我会单独写一篇文章进行介绍。这里只介绍一篇最近的工作 [LYB+23],以补完本节的完整性。

该工作用大量实验揭示了非常直接但有趣的一个现象:Transformer 架构的激活层非常的稀疏。在 T5-Base 中,只有 3% 的神经元被激活了(ReLU 输出值非 0)。并且增大模型会使其更加稀疏,以及和数据似乎无关。无论使用视觉还是语言,甚至是随机数据,以及不重复的数据,都有该现象出现。作者简单的讨论了这种现象可能和优化动力学相关。笔者认为这个现象可能会给 Transformer 的优化器设计一些启示。

神经网络~损失空间_神经网络_10

▲ [LYB+23] 激活值的稀疏性现象