当前位置:  首页>> 技术小册>> NLP入门到实战精讲(中)

77 | 优化器:Adam和AdamW

在深度学习与自然语言处理(NLP)的广阔领域中,优化器是连接模型与数据之间的桥梁,它们负责调整模型参数以最小化损失函数,进而提升模型性能。在众多优化算法中,Adam(Adaptive Moment Estimation)及其改进版AdamW因其高效性和稳定性而备受青睐,成为许多NLP项目和研究中的首选优化器。本章将深入探讨Adam与AdamW的原理、特点、应用场景以及它们如何助力NLP模型的训练过程。

77.1 引言

在深度学习中,梯度下降法是最基本的优化算法,但面对大规模数据集和复杂模型时,其学习率固定、收敛速度慢等问题逐渐显现。为了克服这些挑战,研究者们提出了多种改进算法,其中,Adam因其自适应调整学习率的能力而广受欢迎。随后,为了进一步解决Adam在某些情况下可能出现的泛化能力差的问题,AdamW应运而生。

77.2 Adam优化器

77.2.1 原理概述

Adam优化器结合了动量(Momentum)和RMSprop两种优化算法的思想,通过计算梯度的一阶矩估计(即均值)和二阶矩估计(即未中心化的方差)来自适应地调整每个参数的学习率。具体来说,Adam通过以下步骤更新参数:

  1. 计算梯度:对于每个参数,首先计算其关于损失函数的梯度。
  2. 更新一阶矩估计(m_t):一阶矩估计(即梯度的均值)是过去梯度的指数衰减平均,有助于加速SGD在相关方向上的收敛并抑制震荡。
  3. 更新二阶矩估计(v_t):二阶矩估计(即梯度的未中心化方差)同样是过去梯度平方的指数衰减平均,用于调整每个参数的学习率大小,使得在参数空间中较为平坦的维度上学习率较大,而在陡峭的维度上学习率较小。
  4. 偏差修正:由于m_t和v_t在初始阶段会被初始化为0,这会导致它们偏向于0,尤其是在衰减率(β1, β2)接近1时。因此,Adam引入了偏差修正项来纠正这一问题。
  5. 更新参数:最后,根据修正后的一阶矩和二阶矩估计,以及预设的学习率α,更新模型参数。
77.2.2 优点与挑战

优点

  • 自适应学习率:无需手动调整学习率,能够自动调整以适应不同参数的更新需求。
  • 内存需求小:相比于RMSprop,Adam仅需要存储两个额外的参数(一阶矩和二阶矩的估计)。
  • 计算效率高:计算梯度的一阶和二阶矩的复杂度较低,适用于大规模数据集和复杂模型。

挑战

  • 可能不收敛:在某些情况下,尤其是当学习率设置不当或β1、β2接近1时,Adam可能不收敛到最优解。
  • 泛化能力差:有研究表明,在某些数据集上,Adam相比于SGD等传统优化器,可能会导致模型泛化能力下降。

77.3 AdamW优化器

为了解决Adam可能存在的泛化能力问题,Loshchilov & Hutter(2017)提出了AdamW(或称为Adam with Decoupled Weight Decay)。AdamW的核心思想是将权重衰减(Weight Decay)从优化器中解耦出来,并直接在参数更新步骤中应用,而非像Adam那样通过修改二阶矩估计来间接实现。

77.3.1 原理详解

在AdamW中,权重衰减被明确地作为正则化项加入到参数更新中,其更新规则可以表示为:

[ \theta_{t+1} = \theta_t - \frac{\alpha}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t - \lambda \theta_t ]

其中,(\theta_t)表示第t步的参数值,(\alpha)是学习率,(\hat{m}_t)和(\hat{v}_t)是经过偏差修正后的一阶矩和二阶矩估计,(\epsilon)是一个很小的常数用于防止除零错误,(\lambda)是权重衰减系数。注意,与Adam不同,AdamW直接在更新规则中引入了权重衰减项(-\lambda \theta_t),而非通过修改二阶矩估计来间接影响学习率。

77.3.2 优点
  • 提升泛化能力:通过明确地将权重衰减作为正则化项,AdamW能够有效提升模型的泛化能力,减少过拟合风险。
  • 保持高效性:尽管在更新规则上做了调整,但AdamW的计算复杂度与Adam相当,依然适用于大规模数据集和复杂模型。
77.3.3 应用场景

AdamW因其优异的性能,在NLP领域的多个任务中得到了广泛应用,包括但不限于文本分类、序列标注、机器翻译、语言模型预训练等。特别是在使用大规模预训练模型(如BERT、GPT系列)进行微调时,AdamW常常作为首选优化器,帮助模型在有限的数据集上快速收敛并达到良好的性能。

77.4 实践指南

在使用Adam或AdamW时,以下是一些实践建议:

  • 选择合适的初始学习率:学习率是优化器中最关键的超参数之一,需要根据具体任务和数据集进行调整。通常,可以从较小的学习率开始尝试,并逐步增加以观察模型训练效果。
  • 调整β1和β2:β1和β2分别控制一阶矩和二阶矩估计的衰减率,默认值通常为0.9和0.999。在某些情况下,适当调整这些值可以进一步改善模型性能。
  • 使用权重衰减:对于AdamW,合理设置权重衰减系数λ对于提高模型泛化能力至关重要。
  • 监控训练过程:定期监控训练过程中的损失值和验证集性能,以便及时发现并调整学习率、权重衰减等超参数。

77.5 总结

Adam和AdamW作为深度学习领域中的两大主流优化器,在NLP模型的训练过程中发挥着不可替代的作用。Adam以其自适应学习率和高效性著称,而AdamW则通过解耦权重衰减进一步提升了模型的泛化能力。在实际应用中,根据具体任务和数据集的特点选择合适的优化器,并合理调整其超参数,是提升模型性能的关键。未来,随着深度学习技术的不断发展,我们有理由相信会有更多更优秀的优化器涌现出来,为NLP领域的研究和应用带来更加广阔的可能性。