训练深层复杂的卷积神经网络常使标准优化算法达到其局限。虽然带有动量的随机梯度下降(SGD)和Adam等自适应方法是根本,但它们有时在处理非常深层模型的损失时会遇到困难。收敛缓慢、对初始化敏感、泛化效果不理想或训练过程中的不稳定等问题,都促使人们寻求更精密的优化策略。讨论了几种旨在为当前先进的CNN提供更有效训练的高级算法。AdamW: 解耦权重衰减Adam是一种常用的自适应学习率优化算法,以其快速的初始收敛而闻名。它根据梯度的一阶和二阶矩估计,为不同参数计算各自的自适应学习率。然而,一个常见的实现细节与L2正则化(也称作权重衰减)结合不佳。在典型的深度学习框架中,L2正则化通常通过在计算矩估计和最终权重更新之前,将正则化项($\lambda \theta$,其中 $\lambda$ 是衰减强度,$\theta$ 是权重)加到梯度 $g_t$ 上来实现。Adam更新如下:$$g_t' = g_t + \lambda \theta_{t-1}$$ $$m_t = \beta_1 m_{t-1} + (1-\beta_1)g_t'$$ $$v_t = \beta_2 v_{t-1} + (1-\beta_2)(g_t')^2$$ $$\theta_t = \theta_{t-1} - \eta \cdot \text{更新}(\hat{m}_t, \hat{v}_t)$$问题在于权重衰减项 $\lambda \theta_{t-1}$ 成为了自适应学习率计算的一部分(通过 $m_t$ 和 $v_t$)。这将权重衰减强度与历史梯度的幅度耦合起来。具有大历史梯度幅度(大 $v_t$)的参数实际上受到的权重衰减比预期少,可能损害泛化能力。AdamW(“带有解耦权重衰减的Adam”)通过在Adam步骤之后直接对权重应用权重衰减来解决此问题,使其与基于梯度的更新分离。更新变为:$$m_t = \beta_1 m_{t-1} + (1-\beta_1)g_t$$ $$v_t = \beta_2 v_{t-1} + (1-\beta_2)g_t^2$$ $$\theta_t' = \theta_{t-1} - \eta \cdot \text{更新}(\hat{m}_t, \hat{v}t)$$ $$\theta_t = \theta_t' - \eta \lambda' \theta{t-1}$$此处,$\lambda'$ 是解耦的权重衰减因子(可能与学习率 $\eta$ 同时调整)。通过将L2正则化与自适应矩估计分离,AdamW通常比标准Adam取得更好的泛化性能,尤其是在正则化作用重要或使用精密学习率调度方案的任务上。它已成为训练Transformer等大型模型的常用选择,同样适用于高级CNN。Lookahead: 通过慢速权重稳定参数空间调整深度学习优化涉及在高维非凸损失面上进行移动。优化器有时会在最优值附近波动,或陷入次优区域。Lookahead是一种机制,它围绕现有优化器(如SGD或AdamW)工作,以提高稳定性和加速收敛。Lookahead通过维护两组参数来工作:快速权重($\phi$): 它们由内部优化器(例如AdamW)多次更新($k$步)。它们对局部参数空间进行快速调整。慢速权重($\theta$): 它们代表最终的模型参数。它们每$k$个快速步骤只更新一次,向快速权重达到的最终位置移动。The更新周期如下:同步:用当前慢速权重 $\theta$ 初始化快速权重 $\phi$。调整:运行内部优化器(例如AdamW)$k$步,仅更新快速权重 $\phi$。让$k$步后的最终快速权重为 $\phi_k$。插值:通过将慢速权重 $\theta$ 部分地向最终快速权重移动来更新它们: $$\theta_{new} = \theta_{old} + \alpha (\phi_k - \theta_{old})$$ 此处,$\alpha$ 是“慢速步长”或插值因子,通常在0.5到0.8之间。digraph Lookahead { rankdir=LR; node [shape=circle, style=filled, color="#adb5bd", fontname="Helvetica", fontsize=10]; edge [fontname="Helvetica", fontsize=10]; theta_t [label="θ_t\n(慢速)", color="#4263eb", shape=doublecircle]; phi_start [label="φ = θ_t", color="#fd7e14"]; phi_step1 [label="φ_1", color="#ffc078"]; phi_dots [label="...", shape=plaintext]; phi_stepk [label="φ_k", color="#ff922b"]; theta_t1 [label="θ_{t+1}\n(慢速)", color="#4263eb", shape=doublecircle]; theta_t -> phi_start [label=" 同步", fontsize=9]; phi_start -> phi_step1 [label=" 内部\n 步骤 1", fontsize=9]; phi_step1 -> phi_dots [arrowhead=none]; phi_dots -> phi_stepk [label=" 内部\n 步骤 k", fontsize=9]; subgraph cluster_fast { label = "k 快速步骤 (内部优化器)"; style=dashed; color="#adb5bd"; bgcolor="#f1f3f5"; node [style=filled]; phi_start; phi_step1; phi_dots; phi_stepk; } theta_t -> theta_t1 [label=" 插值 θ_t + α(φ_k - θ_t) ", color="#4263eb", style=bold, constraint=false, fontsize=9]; phi_stepk -> theta_t1 [style=dashed, arrowhead=none, constraint=false]; // Visual guide for interpolation target }Lookahead优化过程包括将快速权重($\phi$)与慢速权重($\theta$)同步,对 $\phi$ 执行 $k$ 个内部优化步骤,然后通过向 $\phi$ 的最终状态插值来更新 $\theta$。通过对快速权重在$k$步中的调整轨迹进行平均,Lookahead降低了更新的方差,并帮助优化器取得更一致的进展。它通常带来更快的收敛和更好的最终性能,计算开销相对较小(主要是存储两份权重副本)。主要的超参数是 $k$(同步周期,例如5-10)和 $\alpha$(慢速步长,例如0.5),它们对微小变化通常很稳定。Ranger: 结合RAdam和LookaheadRanger是一种优化器,它将多种高级技术整合到一个包中,旨在提供开箱即用的性能。它主要结合了:RAdam (修正Adam): 标准Adam在训练的初始阶段可能会在自适应学习率上表现出高方差,特别是当小批量大小较小时。这可能导致发散或收敛不良。RAdam通过计算二阶矩($v_t$)的指数移动平均的方差来解决此问题。如果方差被认为过高(表示数据不足以信任自适应学习率),RAdam会暂时恢复使用带有动量的普通SGD进行该更新步骤。这种“修正”有效地为自适应学习率提供了一个自动热身期,防止了早期不稳定的步骤。Lookahead: Ranger应用了Lookahead机制(如上所述),并使用RAdam作为其内部优化器。这将RAdam的初始稳定性与Lookahead慢速权重更新所带来的改进调整和收敛稳定性相结合。Ranger的目标是将这些互补技术打包,以创建一个对超参数不那么敏感、收敛速度快,并在包括计算机视觉在内的各种深度学习任务上实现强大泛化性能的优化器。尽管它引入了RAdam和Lookahead的超参数,但实际实现通常带有在许多情况下运行良好的合理默认值。选择和使用高级优化器这些高级优化器为标准SGD或Adam提供了强大的替代方案,尤其适用于复杂模型和数据集。AdamW 在使用权重衰减时常被认为是标准Adam的直接改进,并且在现代训练流程中是常用的默认选项。Lookahead 提供了一个侧重于稳定性的正交改进,可以叠加在AdamW或SGD等优化器之上。如果训练表现不稳定或收敛过早停滞,值得尝试。Ranger 代表了一种将多项修正(初始方差、稳定性)整合到一个包中的尝试,旨在以更少的调优获得强大性能。然而,没有适用于所有情况的单一“最佳”优化器。最佳选择取决于具体的架构、数据集特点、批量大小以及与其他训练组件(如学习率调度和数据增强)的配合。在训练损失、验证性能和梯度统计的仔细监控指导下进行实验,对于为您的特定计算机视觉应用选择和调整最有效的优化策略仍然必不可少。