Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • AdamW与Adam的比较可能AdamW依然是最好的优化器

  • AINotes
  • MLTutorials
  • 模型优化
Geeks_Z
2024-09-13

AdamW与Adam的比较可能AdamW依然是最好的优化器

AdamW与Adam的比较,可能AdamW依然是最好的优化器

https://mp.weixin.qq.com/s/4oq1L3hdWWby9lERDZiF6g

原创 11 [ 行恒编程1对1 ](javascript:void(0)😉


Adam 优化器在2014年发布的时候引起了热烈反响,但随后出现了性能不稳定的问题,导致研究人员开始转向使用 SGD 加 momentum。2017 年底,Ilya Loshchilov 和 Frank Hutter 提出了 AdamW,这是 Adam 优化器的一个修正版本,通过正确实现权重衰减,AdamW 在实验中显示出了更快的训练速度和更好的性能。

AdamW 在计算机视觉和自然语言处理任务上的取得了成功应用,llama3也使用的AdamW。

** 几个重要的观点: ** ‍ ‍

  1. Adam 优化器虽然一开始受到欢迎,但后续研究发现其在某些情况下性能不佳,导致研究者倾向于使用 SGD 加 momentum。

  2. Ilya Loshchilov 和 Frank Hutter 提出的 AdamW 通过修正权重衰减的实现方式,显示出在多种任务上比原始 Adam 和 SGD 加 momentum 更好的性能。

  3. AdamW 的实现方法与传统的 L2 正则化不同,它直接对权重进行衰减,而不是将其加到损失函数上。

  4. amsgrad 被提出为解决 Adam 梯度更新规则中的问题,但实验结果并不支持 amsgrad 能够提供实际的性能改进。

  5. 实验结果显示,适当调整的 Adam 优化器可以达到或超过 SGD 加 momentum 的准确率,并且通常训练速度更快。

  6. 在使用 Adam 优化器时,需要适当调整正则化超参数,以确保模型的泛化能力。

调整AdamW超参,可以获得最好的模型训练结果:

对于AdamW的最佳实践,以下是一些基于文献和实践经验的建议:

1. 初始学习率(lr): 通常从较大的学习率开始,例如0.001到0.01,然后根据需要进行调整。对于AdamW,可以使用学习率预热(gradual warm- up)策略,逐渐增加学习率,以避免初始训练阶段的不稳定。

2. 权重衰减(wd): 权重衰减通常设置得较小,例如1e-2到1e-5。在使用AdamW时,wd的值可能需要比在SGD中使用L2正则化时大得多。

3. 动量参数(beta1): beta1的常用值在0.9到0.99之间。有时候,可以在训练过程中根据学习率调整beta1,例如使用1cycle策略,在学习率增加时降低beta1,学习率减少时恢复高值。

4. 二次动量参数(beta2): beta2通常被设置得较高,如0.999,以便更好地平滑梯度的估计。对于非常长的训练,有时会选择更接近1的值。

5. epsilon(ε): 通常设置为一个非常小的值,如1e-8,以确保数值稳定性。

6. 学习率衰减(lr decay): 可以使用步进衰减、余弦衰减或余弦余弦衰减等策略,以逐渐降低学习率,有助于模型收敛。

7. 批量大小(batch size): 选择合适的批量大小对于训练稳定性和计算效率很重要。批量大小通常受到硬件(尤其是GPU内存)的限制。

8. 训练周期(epochs): 确保模型有足够的训练周期来收敛。对于使用AdamW的超级收敛(super- convergence),可能需要的周期比使用SGD时少得多。

9. 权重初始化: 使用合适的权重初始化方法,如He初始化或Xavier初始化,可以帮助模型更快地收敛。

10. 实验和调整: 超参数的最佳值通常是问题特定的,因此进行实验和调整是找到最佳超参数的关键。可以使用网格搜索、随机搜索或贝叶斯优化等方法来调整超参数。

11. 使用学习率调度器: 结合学习率调度器,如LearningRateMonitor或OneCycleLR,可以帮助监控和调整学习率,以优化训练过程。

12. 混合精度训练: 使用混合精度训练可以加快训练速度并减少内存消耗,特别是在使用较新的NVIDIA GPU时。

遵循这些最佳实践并结合实验数据,可以帮助你更有效地使用AdamW优化器,以获得最佳的模型训练结果。

上次更新: 2025/06/25, 11:25:50
最近更新
01
帮助信息查看
06-08
02
常用命令
06-08
03
学习资源
06-07
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式