Adam Optimizer
探索用于深度学习的 Adam 优化器。了解它如何结合动量和 RMSProp,让 Ultralytics YOLO26 等模型更快收敛。
Adam 优化器是 Adaptive Moment Estimation 的简称,是一种广泛用于训练深度学习模型的高级优化算法。它通过结合另外两种流行的随机梯度下降(SGD)扩展算法——自适应梯度算法(AdaGrad)和均方根传播(RMSProp)——彻底改变了这一领域。Adam 根据梯度一阶矩和二阶矩的估计,为不同参数计算单独的自适应学习率,从而使神经网络的收敛速度显著快于传统方法。Adam 的稳健性以及对调参的低要求,使其成为许多实践者启动新机器学习(ML)项目时的默认选择。
Adam 的工作原理#
模型训练的核心是最小化一个损失函数,该函数用于衡量模型预测结果与实际数据之间的差异。标准算法通常使用固定的步长(学习率)沿着“损失地形”向误差最小值下降。然而,这种地形通常很复杂,包含可能使简单算法陷入困境的峡谷和平坦区域。
Adam 通过为每个参数维护两个历史缓冲区来解决这一问题:
-
动量(一阶矩): 这类似于一个沉重的球滚下山坡,用于跟踪过去梯度的移动平均值,以保持相关方向上的速度。
-
方差(二阶矩): 用于跟踪梯度平方的移动平均值,从而缩放学习率。
这种组合使优化器能够在地形平坦的区域采取更大的步长,在陡峭或噪声较大的区域采取更小、更谨慎的步长。具体机制详见由 Kingma 和 Ba 撰写的基础性 Adam 研究论文,该论文证明了 Adam 在各种深度学习(DL)任务中的经验优势。
实际应用#
Adam 优化器的多功能性使其几乎被人工智能(AI)的所有领域采用。
- 自然语言处理(NLP): 大型语言模型(如生成式预训练 Transformer(GPT))在训练过程中高度依赖 Adam(或其变体 AdamW)。该算法能够高效处理庞大词汇表和海量数据集所对应的稀疏梯度,从而支持创建强大的聊天机器人和翻译系统。
- 医疗保健中的计算机视觉: 在医学图像分析中,模型必须检测 MRI 扫描中的肿瘤等细微异常。Adam 可帮助卷积神经网络(CNNs)快速收敛到高精度解,这对于开发医疗保健领域的 AI诊断工具至关重要。
Adam 与 SGD#
虽然 Adam 通常收敛得更快,但必须将其与**随机梯度下降(SGD)**区分开来。SGD 使用固定学习率更新模型权重,并且在训练最先进的目标检测模型的最后阶段通常更受青睐,因为它有时能在测试数据上实现略好的泛化能力(最终精度)。
然而,Adam 是“自适应的”,这意味着它会自动处理学习率的调节。因此,在初始实验和复杂架构中,Adam 对用户更加友好,而在这些场景下调节 SGD 可能会很困难。对于在Ultralytics Platform上管理实验的用户来说,在这些优化器之间切换以比较性能,通常是超参数调优的关键步骤。
使用 Ultralytics 实现#
现代框架(如 PyTorch)和 Ultralytics 库让 Adam 的使用变得十分简单。一种名为 AdamW(带权重衰减的 Adam)的流行变体通常受到推荐,因为它修复了原始 Adam 算法中的正则化问题。这对于 YOLO26 等最新架构尤其有效,因为 YOLO26 能够受益于 AdamW 提供的稳定性。
下面的示例演示如何使用 AdamW 优化器训练 Ultralytics 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")对于希望深入了解理论基础的开发者,Stanford CS231n 优化笔记等资源提供了 Adam 与 RMSProp、AdaGrad 等其他算法对比的优秀可视化内容。此外,PyTorch 优化器文档还提供了可用于自定义的参数和实现细节等技术信息。









