Adam Optimizer
探索用于深度学习的 Adam 优化器。了解它如何结合动量和 RMSProp,从而在 Ultralytics YOLO26 等模型中实现更快的收敛。
Adam 优化器(Adaptive Moment Estimation 的缩写)是一种先进的 优化算法,广泛用于训练深度学习模型。它通过结合 随机梯度下降 (SGD) 的另外两个流行扩展(自适应梯度算法 (AdaGrad) 和均方根传播 (RMSProp))的优势,彻底改变了该领域。通过根据梯度的第一和第二矩估计为不同参数计算单独的自适应 学习率,Adam 使 神经网络 的收敛速度比传统方法显著加快。其稳健性和极少的调优要求使其成为许多从业者开启新的 机器学习 (ML) 项目时的默认选择。
Link to this sectionAdam 的工作原理#
核心上,训练模型涉及最小化 损失函数,该函数用于衡量模型的预测结果与实际数据之间的差异。标准算法通常使用恒定的步长(学习率)在“损失图景”中下降以寻找最小误差。然而,这种图景通常很复杂,其中包含的沟壑和高原可能会困住较简单的算法。
Adam 通过为每个参数维护两个历史缓冲区来解决此问题:
-
动量(第一矩): 类似于在山上滚落的沉重球体,它跟踪过去梯度的移动平均值,以保持在相关方向上的速度。
-
方差(第二矩): 它跟踪平方梯度的移动平均值,从而对学习率进行缩放。
这种组合允许优化器在平坦区域采取更大的步长,而在陡峭或嘈杂区域采取更小、更谨慎的步长。具体机制在 Kingma 和 Ba 的 Adam 基础研究论文 中有详细说明,该论文证明了它在各种 深度学习 (DL) 任务中的经验优势。
Link to this section实际应用#
Adam 优化器的多功能性使其被应用于 人工智能 (AI) 的几乎所有领域。
- 自然语言处理 (NLP): 大语言模型(例如 生成式预训练 Transformer (GPT))非常依赖 Adam(或其变体 AdamW)进行训练。该算法能高效处理与海量词汇和大规模数据集相关的稀疏梯度,从而实现强大的 聊天机器人 和翻译系统的构建。
- 医疗保健领域的计算机视觉: 在 医学图像分析 中,模型必须检测 MRI 扫描中肿瘤等细微异常。Adam 帮助 卷积神经网络 (CNN) 快速收敛到高精度的解决方案,这对于开发 AI 医疗保健 诊断工具至关重要。
Link to this sectionAdam 与 SGD#
虽然 Adam 的收敛速度通常更快,但务必将其与 随机梯度下降 (SGD) 区分开来。SGD 使用固定的学习率更新 模型权重,通常在训练最先进的 目标检测 模型的最后阶段更为常用,因为它有时能在测试数据上实现稍好的泛化能力(最终精度)。
然而,Adam 是“自适应”的,这意味着它会自动处理学习率的调优。这使得它对于初始实验和难以调优 SGD 的复杂架构来说更加用户友好。对于在 Ultralytics 平台 上管理实验的用户而言,切换这些优化器以比较性能往往是 超参数调优 的关键步骤。
Link to this section使用 Ultralytics 进行实现#
像 PyTorch 和 Ultralytics 库这样的现代框架使得使用 Adam 变得非常直接。一种名为 AdamW(带权重衰减的 Adam)的流行变体通常被推荐使用,因为它修复了原始 Adam 算法中正则化的问题。这对于像 YOLO26 这样的最新架构特别有效,因为它受益于 AdamW 提供的稳定性。
以下示例演示了如何使用 AdamW 优化器训练 YOLO26 模型:
from ultralytics import YOLO
# Load the cutting-edge YOLO26n model
model = YOLO("yolo26n.pt")
# Train the model using the 'AdamW' optimizer
# The 'optimizer' argument allows easy switching between SGD, Adam, AdamW, etc.
results = model.train(data="coco8.yaml", epochs=5, optimizer="AdamW")对于对更深层理论基础感兴趣的开发者,诸如 斯坦福 CS231n 优化笔记 等资源提供了 Adam 与 RMSProp 和 AdaGrad 等其他算法对比的优秀可视化效果。此外,PyTorch 优化器文档 提供了可供自定义的参数和实现细节的技术说明。






