首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
51 | 神经网络的构建:Residual Connection和Dense Connection
52 | 神经网络的构建:Network in Network
53 | 神经网络的构建:Gating Mechanism和Attention
54 | 神经网络的构建:Memory
55 | 神经网络的构建:Activation Function
56 | 神经网络的构建:Normalization
57 | 神经网络的训练:初始化
58 | 神经网络的训练:学习率和Warm-up
59 | 神经网络的训练:新的PyTorch训练框架
60 | Transformer:如何通过Transformer榨取重要变量?
61 | Transformer代码实现剖析
62 | xDeepFM:如何用神经网络处理高维的特征?
63 | xDeepFM的代码解析
64 | 时序建模:如何用神经网络解决时间序列的预测问题?
65 | 图嵌入:如何将图关系纳入模型?
66 | 图网络简介:如何在图结构的基础上建立神经网络?
67 | 模型融合基础:如何让你所学到的模型方法一起发挥作用?
68 | 高级模型融合技巧:Metades是什么?
69 | 挖掘自然语言中的人工特征:如何用传统的特征解决问题?
70 | 重新审视Word Embedding:Negative Sampling和Contextual Embedding
71 | 深度迁移学习模型:从ELMo到BERT
72 | 深度迁移学习模型:RoBERTa、XLNet、ERNIE和T5
73 | 深度迁移学习模型:ALBERT和ELECTRA
74 | 深度迁移学习模型的微调:如何使用TensorFlow在TPU对模型进行微调
75 | 深度迁移学习模型的微调:TensorFlow BERT代码简析
76 | 深度迁移学习的微调:如何利用PyTorch实现深度迁移学习模型的微调及代码简析
77 | 优化器:Adam和AdamW
78 | 优化器:Lookahead,Radam和Lamb
79 | 多重loss的方式:如何使用多重loss来提高模型准确率?
80 | 数据扩充的基本方法:如何从少部分数据中扩充更多的数据并避免过拟合?
81 | UDA:一种系统的数据扩充框架
82 | Label Smoothing和Logit Squeezing
83 | 底层模型拼接:如何让不同的语言模型融合在一起从而达到更好的效果?
84 | 上层模型拼接:如何在语言模型基础上拼接更多的模型?
85 | 长文本分类:截取、关键词拼接和预测平均
86 | Virtual Adverserial Training:如何减少一般对抗训练难收敛的问题并提高结果的鲁棒性?
87 | 其他Embedding的训练:还有哪些Embedding方法?
88 | 训练预语言模型
89 | 多任务训练:如何利用多任务训练来提升效果?
90 | Domain Adaptation:如何利用其它有标注语料来提升效果?
91 | Few-shot Learning:是否有更好的利用不同任务的方法?
92 | 半监督学习:如何让没有标注的数据也派上用场?
93 | 依存分析和Semantic Parsing概述
94 | 依存分析和Universal Depdency Relattions
95 | 如何在Stanza中实现Dependency Parsing
96 | Shift Reduce算法
97 | 基于神经网络的依存分析算法
98 | 树神经网络:如何采用Tree LSTM和其它拓展方法?
99 | Semantic Parsing基础:Semantic Parsing的任务是什么?
当前位置:
首页>>
技术小册>>
NLP入门到实战精讲(中)
小册名称: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领域的研究和应用带来更加广阔的可能性。
上一篇:
76 | 深度迁移学习的微调:如何利用PyTorch实现深度迁移学习模型的微调及代码简析
下一篇:
78 | 优化器:Lookahead,Radam和Lamb
该分类下的相关小册推荐:
AIGC原理与实践:零基础学大语言模型(二)
python与ChatGPT让excel高效办公(下)
AIGC原理与实践:零基础学大语言模型(一)
AI-Agent智能应用实战(上)
巧用ChatGPT轻松玩转新媒体运营
AI时代架构师:ChatGPT与架构师(中)
ChatGPT中文教程
AI-Agent智能应用实战(下)
ChatGPT通关之路(下)
玩转ChatGPT:秒变AI提问和追问高手(下)
NLP自然语言处理
深入浅出人工智能(下)