【第32篇】SWA:平均权重导致更广泛的最优和更好的泛化

AI浩 发表于 2022/04/25 21:40:06 2022/04/25
【摘要】 SWA:平均权重导致更广泛的最优和更好的泛化 摘要深度神经网络通常通过使用 SGD 变体优化损失函数以及衰减学习率来训练,直到收敛。 我们展示了沿 SGD 轨迹的多个点的简单平均,具有周期性或恒定的学习率,比传统训练具有更好的泛化能力。 我们还表明,这种随机权重平均 (SWA) 过程找到了比 SGD 更平坦的解决方案,并用单个模型逼近了最近的快速几何集成 (FGE) 方法。 使用 SWA,...

SWA:平均权重导致更广泛的最优和更好的泛化

摘要

深度神经网络通常通过使用 SGD 变体优化损失函数以及衰减学习率来训练,直到收敛。 我们展示了沿 SGD 轨迹的多个点的简单平均,具有周期性或恒定的学习率,比传统训练具有更好的泛化能力。 我们还表明,这种随机权重平均 (SWA) 过程找到了比 SGD 更平坦的解决方案,并用单个模型逼近了最近的快速几何集成 (FGE) 方法。 使用 SWA,我们在 CIFAR-10、CIFAR-100 和 ImageNet 上的一系列最先进的残差网络、PyramidNets、DenseNets 和 ShakeShake 网络上的传统 SGD 训练的测试准确性显着提高。 简而言之,SWA 非常容易实现,提高了泛化性,并且几乎没有计算开销。

1、简介

通过更好地理解多层网络的损失面,我们可以加快深度学习中训练过程的收敛性、稳定性和准确性。 最近的工作 [Garipov et al., 2018, Draxler et al.,2018] 表明,SGD 发现的局部最优值可以通过接近恒定损失的简单曲线连接起来。 基于这一见解,Garipov 等人。 [2018] 还开发了快速几何集成 (FGE) 来对权重空间中的多个附近点进行采样,从而在训练单个 DNN 所需的时间内创建高性能集成。

image-20220424162339952

FGE 使用带有 SGD 的高频循环学习率来选择要集成的网络。在图 1(左)中,我们看到 FGE 集成的网络的权重位于最理想解决方案的外围。这一观察表明,在权重空间中对这些点进行平均是有希望的,并使用具有这些平均权重的网络,而不是通过对模型空间中网络的输出进行平均来形成一个集合。尽管保持 SGD 遍历的权重的运行平均值的一般想法可以追溯到 Ruppert [1988],但此过程通常不用于训练神经网络。它有时作为指数衰减的移动平均线与衰减的学习率(称为指数移动平均线)结合使用,它可以平滑传统 SGD 的轨迹,但性能并没有太大差异。然而,我们表明,SGD 以周期性或高恒定学习率遍历的点的等权平均,我们称之为随机权重平均 (SWA),对于训练深度神经网络具有许多令人惊讶和有希望的特征,导致更好地理解其损失表面的几何形状。事实上,具有周期性或恒定学习率的 SWA 可以用作多层网络的标准 SGD 训练的替代品——但具有改进的泛化能力并且基本上没有开销。尤其:

  • 我们展示了具有周期性 [例如,Lashchilov 和 Hutter,2017] 和恒定学习率的 SGD 遍历与高性能网络相对应的权重空间区域。我们发现,虽然这些模型围绕这个最优集合移动,但它们从未到达其中心点。我们表明,我们可以通过对 SGD 迭代中提出的权重进行平均来进入这个更理想的点空间。
  • 虽然 FGE 集成 [Garipov et al., 2018] 可以与单个模型同时训练,但对 k 个模型的集成进行测试预测需要 k 倍的计算量。我们表明,SWA 可以解释为 FGE 集成的近似,但具有单个模型的测试时间、便利性和可解释性。
  • 我们证明 SWA 导致的解决方案比 SGD 找到的最优解决方案更广泛。 Keskar 等人 [2017] Hochreiter 和 Schmidhuber [1997] 推测最优值的宽度与泛化密切相关。我们说明了火车上的损失相对于测试误差发生了变化(图 1,中图和右图,以及第 3、4 节)。我们表明,SGD 通常会收敛到靠近最优点宽平坦区域边界的点。另一方面,SWA 能够找到以该区域为中心的点,通常火车损失稍差,但测试误差要好得多。
  • 我们表明损失函数在连接 SWA 和 SGD 的方向上是不对称的。在这个方向上,SGD 接近急剧上升的外围。 SWA 提高泛化能力的部分原因是它在这些方向上的训练损失的平坦区域中找到了解决方案。
  • SWA 在多个相应的基准上训练广泛的体系结构取得了显着的进步。特别是,在 ImageNet 上运行 SWA 仅 10 个 epoch,我们能够实现 ResNet-50 和 DenseNet-161 0.8% 的改进,以及 ResNet-150 0.6% 的改进。我们使用预激活 ResNet-164、VGG-16 和 Wide ResNet-28-10 在 CIFAR-100 上实现了超过 1.3% 的改进,在 CIFAR-10 上实现了超过 0.4% 的改进。我们还对最近的 Shake-Shake Networks 和 PyramidNets 实现了实质性改进。
  • SWA 非常容易实现,与传统的训练方案相比几乎没有计算开销。我们在 https://github.com/timgaripov/swa 提供了 SWA 的实现。

我们强调 SWA 正在与 SGD 相同的吸引力盆地中寻找解决方案,如图 1 所示,但在训练损失的平坦区域中。 SGD 通常会在一组好的权重的外围找到点。通过以循环或高恒定学习率运行 SGD,我们遍历这组点的表面,并通过平均我们在训练损失的更平坦区域找到更中心的解决方案。此外,SWA 的训练损失通常比 SGD 稍差,这表明 SWA 解决方案不是损失的局部最优值。在本文的标题中,optima 在一般意义上用于 平均解(给定过程的收敛点),而不是同一目标的不同局部最小值。

2 相关工作

这篇论文从根本上讲是关于更好地理解损失表面的几何形状和深度学习中的泛化。我们遵循 SGD 遍历的权重轨迹,从而产生新的几何洞察力和直觉,即 SWA 将导致比标准训练更好的结果。根据经验,我们发现 SWA 在一系列相应的基准上显着改善了许多最先进的深度神经网络的训练,而且基本上没有开销。

训练神经网络的程序正在不断改进。正在为架构设计、正则化和优化提出新的方法。 SWA 方法与优化和正则化的工作有关。

在优化方面,人们对不同类型的局部解决方案如何影响深度学习中的泛化产生了极大的兴趣。 Keskar 等人 [2017]声称 SGD 比批量梯度方法更容易收敛到广泛的局部最优值,后者倾向于收敛到尖锐的最优值。此外,他们认为 SGD 发现的广泛最优值更有可能具有良好的测试性能,即使训练损失比尖锐最优值更差。另一方面,Dinh 等人 [2017]认为所有已知的锐度定义都不能令人满意,不能靠它们自己解释概括。 Chaudhari 等人 [2017]提出了 Entropy-SGD 方法,该方法明确强制对宽谷进行优化。他们报告说,尽管 Entropy-SGD 发现的最优值比传统 SGD 发现的更宽,但泛化性能仍然相当。

SWA 方法基于以周期性或恒定学习率对沿 SGD 轨迹的多个点进行平均。 Ruppert [1988] 以及后来的 Polyak 和 Juditsky [1992] 在凸优化中首先考虑了 SGD 提出的保持权重的运行平均值的一般思想。但是,此过程通常不用于训练神经网络。相反,从业者有时会使用 SGD 发现的权重的指数衰减运行平均值,其学习率会下降,这会使 SGD 的轨迹平滑,但性能相当。

SWA 正在利用通过探索与高性能网络相对应的点集收集的多个样本。为了加强探索,我们以恒定或周期性的学习率运行 SGD。 Mandt 等人 [2017]表明在几个简化假设下,以恒定学习率运行 SGD 等效于从以损失最小值为中心的高斯分布进行采样,并且该高斯的协方差由学习率控制。根据 [Mandt et al., 2017] 的解释,我们可以将 SGD 提出的点解释为受限于球体表面,因为它们来自高维高斯分布。 SWA 有效地允许我们进入球体内部以找到更高密度的解决方案。

在称为快速几何集成 (FGE) 的过程中,Garipov 等人 [2018]表明使用循环学习率可以收集在空间上彼此接近但产生不同预测的模型。与训练单个 DNN 模型相比,他们使用收集的模型来训练集成,而没有计算开销。在最近的工作中 Neklyudov 等人。 [2018] 还讨论了一种对贝叶斯神经网络进行模型平均的有效方法。 SWA 的灵感来自遵循 FGE 提案的轨迹,以便找到一个近似 FGE 集成的单一模型,但提供更大的可解释性、便利性和测试时可扩展性。

Dropout [Srivastava et al., 2014] 是一种非常流行的正则化 DNN 的方法。在用于 SGD 的每个 minibatch 中,通过随机丢弃神经元来创建不同的架构。作者在 dropout、集成和贝叶斯模型平均之间进行了类比。在测试时,提出了一种集成方法,但随后通过将每个连接乘以丢失率来近似得出相似的结果。在高层次上,SWA 和 Dropout 既是正则化器又是训练程序,旨在逼近一个集成。每种方法都以完全不同的方式实现这些高级想法,并且正如我们在实验中所展示的,可以将它们组合起来以提高性能。

3 随机加权平均

我们提出随机加权平均 (SWA) 并分析其特性。 在第 3.1 节中,我们考虑了具有恒定和循环学习率的 SGD 轨迹,这有助于理解神经网络的 SGD 训练几何,并激发 SWA 过程。 然后在第 3.2 节中我们详细介绍了 SWA 算法,在第 3.3 节中我们推导了它的复杂性,在第 3.4 节中我们分析了 SWA 与传统 SGD 训练找到的解决方案的宽度。 然后,在第 3.5 节中,我们研究了 SWA 与最近提出的快速几何集成 [Garipov et al., 2018] 之间的关系。 最后,在第 3.6 节中,我们从随机凸优化的角度考虑 SWA。

我们注意到 SWA 这个名称有两个含义:一方面,它是 SGD 权重的平均值。 另一方面,在具有周期性或恒定学习率的情况下,SGD 提议近似地从 DNN 的损失表面采样,从而产生随机权重。

3.1 SGD走势分析

SWA 基于使用学习率计划对 SGD 提出的样本进行平均,该计划允许探索与高性能网络相对应的权重空间区域。 特别是,我们考虑周期性和恒定的学习率计划。 我们采用的周期性学习率计划受到 Garipov 等人的启发。 [2018] 和史密斯和托宾 [2017]。 在每个循环中,我们将学习率从 α1 线性降低到 α2。 迭代 i 的学习率公式由下式给出

α ( i ) = ( 1 t ( i ) ) α 1 + t ( i ) α 2 t ( i ) = 1 c ( m o d ( i 1 , c ) + 1 ) \begin{aligned} \alpha(i) &=(1-t(i)) \alpha_{1}+t(i) \alpha_{2} \\ t(i) &=\frac{1}{c}(\bmod (i-1, c)+1) \end{aligned}

image-20220424162302472

基础学习率 α1 ≥ α2 和循环长度 c 是该方法的超参数。这里通过迭代我们假设处理一批数据。图 2 说明了循环学习率计划和相应点的测试误差。请注意,与 Garipov et al.[2018] 的周期性学习率计划不同和 Smith 和 Topin [2017],在这里我们建议使用不连续的时间表,直接从最小学习率跳到最大学习率,并且不会作为循环的一部分稳步增加学习率。我们使用这个更突然的循环,因为就我们的目的而言,探索比单个提案的准确性更重要。对于更大的探索,我们还考虑恒定的学习率 α(i) = α1。

我们从 CIFAR-100 上的预激活 ResNet-164 的预训练点开始以循环和恒定的学习率计划运行 SGD。然后,我们使用每个轨迹的第一个、中间和最后一个点在包含这些点的所有仿射组合的权重空间中定义一个二维平面。在图 3 中,我们绘制了这些平面中点的训练损失和测试误差。然后我们将轨迹的其他点投影到绘图平面。请注意,除了第一个点、最后一个点和中间点(图中用黑色叉号表示)外,轨迹通常不在绘图平面内。因此,对于轨迹的其他点,无法从图中分辨出火车损失和测试误差的值。

image-20220424162410424

图 3 的关键见解是,这两种方法都探索了靠近高性能网络集外围的点。 可视化表明这两种方法都在与 DNN 对应的空间区域中进行高精度的探索。 这两种方法之间的主要区别在于,具有循环学习率计划的 SGD 的单个提议通常比固定学习率 SGD 的提议更准确。 在迈出一大步之后,具有周期性学习率的 SGD 会花费几个 epoch 来微调结果点,并降低学习率。 另一方面,具有固定学习率的 SGD 总是使步长相对较大,比使用循环学习率更有效地探索,但个别建议更差。

我们可以从图 3 中获得的另一个重要见解是,虽然训练损失和测试误差表面在性质上相似,但它们并不完全对齐。 训练和测试之间的转变表明,高性能网络集中更强大的中心点可以导致更好的泛化。 事实上,如果我们从优化轨迹中平均几个建议,我们会得到更多 鲁棒点,其测试性能比 SGD 的单个提议要高得多,并且基本上集中在测试错误的转移模式上。 我们将在 3.4、3.5、3.6 节中进一步讨论这种行为的原因。

3.2 SWA 算法

我们现在介绍随机权重平均算法的详细信息,这是一种用于训练神经网络的简单但有效的修改,由我们在第 3.1 节中的观察推动。

继 Garipov 等人 [2018] 之后,我们从预训练模型 w^ 开始。我们将使用常规训练程序训练给定 DNN 所需的 epoch 数作为其训练预算,并用 B 表示。预训练模型 w^ 可以使用常规训练程序进行训练,以获得全部训练预算或减少数量时代(例如 0:75B)。在后一种情况下,我们只是提前停止训练而不修改学习率计划。从 w^ 开始,我们使用循环或恒定的学习率计划继续训练。当使用循环学习率时,我们根据 Garipov et al.[2018] 捕获与学习率最小值相对应的模型 wi(参见图 2)。对于恒定的学习率,我们在每个时期捕获模型。接下来,我们对所有捕获的网络 wi 的权重进行平均,以获得我们的最终模型 wSWA。

请注意,对于循环学习率计划,SWA 算法与 FGE [Garipov et al.,2018] 相关,只是我们不是对模型的预测进行平均,而是对它们的权重进行平均,并且我们使用不同类型的学习率循环.在 3.5 节中,我们展示了 SWA 如何逼近 FGE,但只使用一个模型。

批量标准化。 如果 DNN 使用批量归一化 [Ioffe and Szegedy, 2015],我们会在数据上再运行一次,如 Garipov 等人所述。 [2018],在训练完成后使用 wSWA 权重计算网络每一层的激活的运行均值和标准差,因为在训练期间不会收集这些统计数据。 对于大多数深度学习库,例如 PyTorch 或 Tensorflow,通常可以通过在训练模式下对数据进行前向传递来收集这些统计数据。

image-20220425144448085

SWA 过程总结在算法 1 中。

3.3 计算复杂度

与传统训练相比,SWA 的时间和内存开销可以忽略不计。 在训练期间,我们需要维护一份 DNN 权重的运行平均值的副本。 然而请注意,存储 DNN 的内存消耗主要由其激活而不是其权重,因此 SWA 过程仅略微增加,即使对于大型 DNN(例如,大约 10%)也是如此。 训练完成后,我们只需要存储聚合平均值的模型,导致与标准训练相同的内存需求。

在训练期间,额外的时间仅用于更新聚合的平均权重。 该操作的形式为

w SWA  w SWA  n models  + w n models  + 1 w_{\text {SWA }} \leftarrow \frac{w_{\text {SWA }} \cdot n_{\text {models }}+w}{n_{\text {models }}+1}

它只需要计算两个 DNN 的权重的加权和。 由于我们每个 epoch 最多应用一次此操作,因此 SWA 和 SGD 实际上需要 相同的计算量。 事实上,类似的操作是作为每个梯度步骤的一部分执行的,每个 epoch 由数百个梯度步骤组成。

3.4 方案宽度

image-20220425151853193

Keskar 等人 [2017] 和 Chaudhari 等人 [2017] 推测局部最优的宽度与泛化有关。 对宽度重要性的一般解释是列车损失和测试误差的表面相对于彼此移动,因此希望收敛到广泛最优模式,在小扰动下保持近似最优。 在本节中,我们比较了 SWA 和 SGD 找到的解决方案,并表明 SWA 通常会导致更广泛的解决方案。

w S W A w_{SWA} w S G D w_{SGD} 表示训练的 DNN 的权重 分别使用 SWA 和传统的 SGD。 考虑光线

w SWA  ( t , d ) = w SWA  + t d w SGD  ( t , d ) = w SGD  + t d \begin{aligned} &w_{\text {SWA }}(t, d)=w_{\text {SWA }}+t \cdot d \\ &w_{\text {SGD }}(t, d)=w_{\text {SGD }}+t \cdot d \end{aligned}

它遵循单位球面上的方向向量 d,分别从 w S W A w_{SWA} w S G D w_{SGD} 开始。 在图 4 中,我们绘制了$ w_{SWA}(t,d_{i})$ 和 w S G D ( t , d i ) w_{SGD}(t,d_{i}) 的训练损失和测试误差制为 10 个随机方向 d i , i = 1 , 2 , . . . , 10 d_{i}, i = 1,2, ..., 10 的函数 分布在单位球面上。 对于这个可视化,我们在 CIFAR-100 上使用了 Preactivation ResNet-164。

首先,虽然 w S G D w_{SGD} w S W A w_{SWA} 的训练损失值非常相似(实际上 w S G D w_{SGD} 的训练损失略低),但 w S G D w_{SGD} 的测试误差低 1.5%(在对应于 t = 0 的收敛值处)。 此外, w S W A w_{SWA} 的训练损失曲线和测试误差曲线的形状都比 w S G D w_{SGD} 宽得多,这表明 SWA 确实收敛到更广泛的解决方案:我们必须远离 w S W A w_{SWA} 才能将误差增加给定数量。 我们甚至看到 SGD 的误差曲线有一个拐点,而 SWA 的这些距离不存在。

请注意,在图 4 中,来自 w S G D w_{SGD} 的任何随机方向都会增加测试误差。 然而,我们知道从 w S G D w_{SGD} w S W A w_{SWA} 的方向会减少测试误差,因为 w S W A w_{SWA} 的测试误差比 w S G D w_{SGD} 低得多。 换句话说,从 w S G D w_{SGD} w S W A w_{SWA} 的路径与图 4 中所示的所有方向都有质的不同,因为沿着这个方向 w S G D w_{SGD} 远非最优。 因此,我们考虑连接 w S G D w_{SGD} w S W A w_{SWA} 的线段:

w ( t ) = t w SGD  + ( 1 t ) w SWA  w(t)=t \cdot w_{\text {SGD }}+(1-t) \cdot w_{\text {SWA }}

在图 5 中,我们绘制了 w(t) 的训练损失和测试误差作为与 w S W A w_{SWA} 的有符号距离的函数,用于 CIFAR-100 上的预激活 ResNet-164 和 VGG-16。

image-20220425161416360

我们可以从图 5 中提取关于 w S W A w_{SWA} w S G D w_{SGD} 的几个关键见解。首先,训练损失和测试误差图确实发生了很大变化,通过最小化训练损失获得的点在测试中远非最优。 其次, w S G D w_{SGD} 位于火车损失的宽平坦区域的边界附近。 此外,损失在 w S G D w_{SGD} 附近非常陡峭。

Keskar 等人 [2017]认为 SGD 发现的具有非常大批量的锐利最优值附近的损失实际上在大多数方向上都是平坦的,但存在最优值非常陡峭的方向。他们推测,由于这种锐度,大批量优化的泛化性能大大低于小批量 SGD 找到的解决方案。值得注意的是,在本节的实验中,我们观察到即使对于小批量最优也存在陡峭上升的方向,并且 SWA 提供了更广泛的解决方案(至少沿着随机方向),具有更好的泛化性。事实上,我们可以在图 5 中清楚地看到,SWA 并没有找到与 SGD 不同的最小值,而是在同一个吸引力盆地中找到了一个更平坦的区域。我们还可以清楚地看到,损失函数在某些方向上的显着不对称性,例如 SWA 到 SGD 的方向,有助于理解为什么 SWA 提供了比 SGD 更好的泛化能力。在这些方向上,SWA 找到了比 SGD 更平坦的解决方案,SGD 可以靠近急剧上升的外围。

3.5 连接到集成

加里波夫等人[2018] 提出了快速几何集成(FGE)程序,用于在训练单个模型所需的时间内训练集成。 使用循环学习率,FGE 生成一系列在权重空间中彼此接近的点,但会产生不同的预测。 在 SWA 中,我们不是平均模型的预测,而是平均它们的权重。 然而,FGE 集成和 SWA 模型提出的预测具有相似的特性。

令 f(·) 表示由权重 w 参数化的神经网络的预测。 我们将假设 f 是一个标量(例如,特定类别的概率)关于 w 的两次连续可微函数。

考虑 FGE 提出的点 wi。 这些点在设计上在权重空间中很接近,并且集中在它们的平均 w SWA  = 1 n i = 1 n w i w_{\text {SWA }}=\frac{1}{n} \sum_{i=1}^{n} w_{i} 。我们表示 Δ i = w i w SWA  \Delta_{i}=w_{i}-w_{\text {SWA }} 。 注意 i = 1 n Δ i = 0 \sum_{i=1}^{n} \Delta_{i}=0 。集成网络对应于平均函数值

f ˉ = 1 n i = 1 n f ( w i ) \bar{f}=\frac{1}{n} \sum_{i=1}^{n} f\left(w_{i}\right)

考虑 w S W A w_{SWA} 处 f 的线性化。

f ( w j ) = f ( w SWA  ) + f ( w SWA  ) , Δ j + O ( Δ j 2 ) f\left(w_{j}\right)=f\left(w_{\text {SWA }}\right)+\left\langle\nabla f\left(w_{\text {SWA }}\right), \Delta_{j}\right\rangle+O\left(\left\|\Delta_{j}\right\|^{2}\right)

其中 , \langle\cdot, \cdot\rangle 表示点积。 因此,平均权重和平均预测之间的差异。

f ˉ f ( w SWA  ) = 1 n i = 1 n ( f ( w SWA  ) , Δ i + O ( Δ i 2 ) ) = f ( w SWA  ) , 1 n i = 1 n Δ i + O ( Δ 2 ) = O ( Δ 2 ) \begin{array}{r} \bar{f}-f\left(w_{\text {SWA }}\right)=\frac{1}{n} \sum_{i=1}^{n}\left(\left\langle\nabla f\left(w_{\text {SWA }}\right), \Delta_{i}\right\rangle+O\left(\left\|\Delta_{i}\right\|^{2}\right)\right) \\ =\left\langle\nabla f\left(w_{\text {SWA }}\right), \frac{1}{n} \sum_{i=1}^{n} \Delta_{i}\right\rangle+O\left(\Delta^{2}\right)=O\left(\Delta^{2}\right) \end{array}

其中 Δ = max i = 1 n Δ i \Delta=\max _{i=1}^{n}\left\|\Delta_{i}\right\| 。 请注意,不同扰动网络的预测之间的差异是

f ( w i ) f ( w j ) = f ( w SWA  ) , Δ i Δ j + O ( Δ 2 ) f\left(w_{i}\right)-f\left(w_{j}\right)=\left\langle\nabla f\left(w_{\text {SWA }}\right), \Delta_{i}-\Delta_{j}\right\rangle+O\left(\Delta^{2}\right)

因此是一阶小,而平均预测和平均权重之间的差异是二阶小。 请注意,对于 FGE 提出的点,提案之间的距离在设计上相对较小,这证明了局部分析的合理性。

为了在实践中分析集成和平均 FGE 提议的权重之间的差异,我们运行 FGE 20 个 epoch,并将不同模型在测试数据集上的预测与 CIFAR-上的 Preactivation ResNet-164 [He et al., 2016] 进行比较100。在测试数据集上平均的连续 FGE 提议的类概率之间的差异范数为 0.126。然后,我们对提案的权重进行平均,并计算测试数据集上的类概率。SWA 模型和 FGE 集成的概率差异范数为 0.079,远小于连续 FGE 提案的概率差异.此外,连续 FGE 提议输出相同标签的对象比例不大于 87.33%。对于 FGE 和 SWA,相同标记对象的比例为 95.26%。

本节中提出的理论考虑和实证结果表明,SWA 可以用单个模型逼近 FGE 集成。

3.6 连接到凸最小化

Mandt 等人 [2017] 表明在强简化假设下,具有固定学习率的 SGD 近似地从以损失最小值为中心的高斯分布中采样。 假设当我们以固定的学习率运行 SGD 来训练 DNN 时就是这种情况。

让我们用 d 来表示神经网络的权重空间的维数。 用 w i w_{i} 表示 SGD 产生的样本,i = 1, 2, . . . , k。 假设点 wi 集中在局部最优值 w ^ \hat{w} 附近。 SWA 解由 w S W A = 1 n i = 1 k w i w_{S W A}=\frac{1}{n} \sum_{i=1}^{k} w_{i} 给出。 点 wi 是来自多维高斯 N ( w ^ , Σ ) \mathcal{N}(\hat{w}, \Sigma) 的样本,协方差矩阵 Σ 由损失的曲率、批量大小和学习率定义。 请注意,来自多维高斯的样本集中在椭圆上

{ z R d Σ 1 2 ( z w ^ ) = d } \left\{z \in \mathbb{R}^{d} \mid\left\|\Sigma^{-\frac{1}{2}}(z-\hat{w})\right\|=\sqrt{d}\right\}

并且样本最终进入 w ^ \hat{w} 附近的椭球内的概率质量可以忽略不计。 另一方面,当 k → ∞ 时 wSWA 保证收敛到 w ^ \hat{w}

此外,Polyak 和 Juditsky [1992] 表明,平均 SGD 提议在所有随机梯度算法中实现了最佳可能的收敛速度。 证明依赖于潜在问题的凸性,并且通常如果损失函数是非凸的,则没有收敛保证[参见例如 加迪米和兰,2013]。 虽然已知 DNN 损失函数是非凸的 [例如 Choromanska et al.,2015],在 SGD 的轨迹上,这些损失表面是近似凸的 [e.g. Goodfellow 等人,2015]。 然而,即使损失是局部非凸的,SWA 也可以提高泛化能力。 例如,在图 5 中,我们看到 SWA 收敛到训练损失的中心点。

image-20220425164429149

换句话说,有一组点都实现了低训练损失。 通过以高常数或周期性时间表运行 SGD,我们遍历了该集合的表面。 然后通过平均相应的迭代,我们可以在集合内移动。 这个观察解释了收敛速度和泛化。 在深度学习中,我们主要观察到平均化在泛化方面的好处。 平均可以移动到更中心的点,这意味着必须从该点进一步移动,才能在几乎任何方向上增加给定数量的损失。 相比之下,具有衰减时间表的传统 SGD 将收敛到该集合外围的一个点。 使用不同的初始化,传统的 SGD 会在边界上找到不同的点,这些点是具有低训练损失的解决方案,但它不会向内移动。

4 实验

我们将 SWA 与 CIFAR-10、CIFAR-100 和 ImageNet ILSVRC-2012 [Russakovsky et al., 2012] 上的传统 SGD 训练进行比较。 我们还与快速几何集成 (FGE) [Garipov et al., 2018] 进行了比较,但我们注意到 FGE 是一个集成,而 SWA 对应于单个模型。 传统的 SGD 训练使用标准的衰减学习率计划(详见附录)直到收敛。 我们发现 SGD 的指数衰减平均值与收敛时的传统 SGD 相当。 我们在 https://github.com/timgaripov/swa 上发布了用于重现本文结果的代码。

4.1 CIFAR 数据集

对于 CIFAR 数据集的实验,我们使用 VGG16 [Simonyan and Zisserman, 2014]、164 层 Preactivation-ResNet [He et al., 2016] 和 Wide ResNet28-10 [Zagoruyko and Komodakis, 2016] 模型。 此外,我们在 CIFAR-10 和 PyramidNet272(瓶颈,α = 200)[Han et al., 2016] 在 CIFAR100 上试验了最近的 Shake-Shake 2x64d [Gastaldi, 2017]。 所有模型都使用 L2 正则化进行训练,并且 VGG-16 也使用了 dropout。

对于每个模型,我们将预算定义为训练模型直到与传统 SGD 训练收敛所需的 epoch 数,因此我们看不到 SGD 超出此预算的改进。我们对 VGG、Preactivation ResNet 和 Wide ResNet 模型使用与 Garipov 等人相同的预算。 [2018]。对于 ShakeShake 和 PyramidNets,我们使用提出这些模型的论文中指出的预算 [Gastaldi, 2017, Han et al., 2016]。我们在 1、1.25 和 1.5 个 epoch 预算内报告 SWA 训练的结果。

对于 VGG、Wide ResNet 和 Preactivation-ResNet 模型,我们首先运行大约 75% 的训练预算的标准 SGD 训练,然后使用最后一个 epoch 的权重作为具有固定学习率计划的 SWA 的初始化。我们以 0.25、0.5 和 0.75 的预算运行 SWA,以分别在 1、1.25 和 1.5 的预算内完成训练。

对于 Shake-Shake 和 PyramidNet 架构,我们不会在一份预算中报告结果。对于这些模型,我们使用完整预算来初始化程序,然后使用 0.25 和 0.5 预算的循环学习率计划进行训练。我们对 Shake-Shake 使用了长周期的小学习率,因为这种架构已经涉及许多随机组件。

我们在附录中介绍了每个模型的学习率计划的详细信息。

对于每个模型,我们还报告了传统 SGD 训练的结果,我们用 SGD 表示。对于 VGG、Preactivation ResNet 和 Wide ResNet,我们还提供了 FGE 方法的结果,Garipov et al.[2018] 报告了一个预算。请注意,对于 FGE,我们报告 6 到 12 个网络的集合的准确性,而对于 SWA,我们报告单个模型的准确性。

我们在表 1 中总结了实验结果。对于所有模型,我们报告了 3 次运行的测试准确度的平均值和标准差。在所有进行的实验中,SWA 在一个预算中大大优于 SGD,并且随着我们允许更多的训练时期而进一步改进。在不同的架构中,我们看到 CIFAR-10(不包括 Shake-Shake,SGD 性能已经非常高)和 CIFAR-100 的持续改进 ≈ 0.5% 和 0.75-1.5%。令人惊讶的是,仅使用一个模型,SWA 就能够实现与 FGE 集成相当或更好的性能。在 CIFAR-100 上,SWA 通常需要不止一个预算才能获得与 FGE 集成相媲美的结果,但在 CIFAR-10 上,即使有 1 个预算,SWA 的表现也优于 FGE。

4.2 ImageNet

在 ImageNet 上,我们用 ResNet-50、ResNet152 [He et al.,2016] 和 DenseNet-161 [Huang et al.,2017] 进行了实验。 对于这些架构,我们使用了来自 PyTorch.torchvision 的预训练模型。 对于每个模型,我们使用循环学习率计划运行 SWA 10 个时期,所有模型的参数都相同 (详见附录),并报告 3 次运行平均的测试误差的平均值和标准差。 结果如表2所示。

image-20220425165156780

对于所有 3 种架构,SWA 比预训练模型提供了 0.6-0.9% 的提高。

4.3 学习率计划的影响

在本节中,我们将探讨学习率计划如何影响 SWA 的性能。 我们在 CIFAR-100 上对 Preactivation ResNet-164 进行实验。 对于所有计划,我们使用来自使用传统 SGD 训练训练了 125 个 epoch 的模型的相同初始化。 作为基线,我们使用使用传统 SGD 训练了 150 个 epoch 的完全训练模型。

我们考虑了一系列恒定和周期性的学习率计划。 对于循环学习率,我们将循环长度固定为 5,并考虑基础学习对 速率参数 (α1, α2) ∈ {(10−1, 10−3),(5 · 10−2, 5 ·10−4),(10−2 , 10−4),(5 · 10−3, 5 · 10−5)}。 在恒定的学习率中,我们考虑 α1 ∈ {10−1, 5 ·10−2, 10−2, 10−3}。

image-20220425165622543

我们在图 6 中绘制了不同学习率计划下 SWA 程序的测试误差与训练 epoch 数的函数关系。 我们发现,一般来说,更积极的恒定学习率计划会导致 SWA 的更快收敛。

在我们的实验中,我们发现将学习率设置为常规训练中退火方案中使用的最大和最小学习率之间的某个中间值通常会给我们最好的结果。 然而,该方法是通用的,并且可以很好地与为特定任务定制的不同学习率计划一起工作。

4.4 固定学习率的 DNN 训练

在本节中,我们展示了使用 SWA 以固定的学习率从头开始训练 DNN 是可能的。我们在 Wide ResNet-28-10 [Zagoruyko and Komodakis, 2016] 上以 0.05 的固定学习率运行 SGD,在 CIFAR-100 上随机初始化 300 个 epoch。然后我们在每个 epoch 结束时平均权重 从 epoch 140 到训练结束。该 SWA 模型的最终测试精度为 81.7。

image-20220425170121729

图 7 说明了作为 SWA 和常规训练的训练时期数的函数的测试误差。使用 SWA 平均权重的单个模型的准确度保持在 ≈ 65% 的水平,比 SWA 模型的准确度低 16%。这些结果与我们在第 3.6 节中提出的直觉一致,即具有恒定学习率的 SGD 在最优值附近振荡,但 SWA 收敛。

虽然能够以固定学习率训练 DNN 是 SWA 的一个令人惊讶的特性,但出于实际目的,我们建议从经过常规训练预训练的模型初始化 SWA(可能用于减少 epoch 的数量),因为它会导致更快、更多比从头开始运行 SWA 稳定收敛。

5 讨论

我们提出了用于训练神经网络的随机权重平均 (SWA)。 SWA 非常易于实现,与架构无关,并且与传统训练相比几乎无需额外成本即可提高泛化性能。

未来的研究有很多令人兴奋的方向。由于算法遍历权重的几何形状,SWA 并不要求其平均值中的每个权重都对应于一个好的解决方案。因此,有可能开发出比标准 SGD 更快的收敛速度的 SWA。人们还可以将 SWA 与大批量大小结合起来,同时保持泛化性能,因为 SWA 发现比传统 SGD 训练更广泛的最优值。此外,循环学习率使 SWA 能够在神经网络权重上探索高后验密度区域。这种学习率计划可以与随机 MCMC 方法一起开发,以鼓励探索,同时仍然提供高质量的样本。还可以使用 Garipov 等人 [2018] 中发现的高精度曲线开发 SWA,以平均整个区域的良好解决方案。

更好地理解多层网络的损失面将有助于继续释放这些丰富模型的潜力。我们希望 SWA 将激发该领域的进一步进展。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。