深圳Yolo 视觉
深圳
立即加入
词汇表

Adam 优化器

探索用于深度学习的Adam优化器。了解它如何结合动量和RMSProp,以在Ultralytics YOLO26等模型中实现更快的收敛。

Adam优化器,全称自适应矩估计,是一种复杂的优化算法,广泛用于训练深度学习模型。它结合了随机梯度下降 (SGD)的两种流行扩展——自适应梯度算法 (AdaGrad) 和均方根传播 (RMSProp) 的优点,彻底改变了该领域。通过根据梯度的一阶和二阶矩估计,为不同参数计算单独的自适应学习率,Adam使神经网络的收敛速度比传统方法显著加快。其鲁棒性和最小的调优要求使其成为许多开始新机器学习 (ML)项目的实践者的默认选择。

Adam 如何工作

其核心是,训练模型涉及最小化损失函数,该函数衡量模型预测与实际数据之间的差异。标准算法通常使用恒定的步长(学习率)沿着“损失景观”下降到最小误差。然而,这种景观通常很复杂,具有可能困住简单算法的沟壑和高原。

Adam 通过为每个参数维护两个历史缓冲区来解决这个问题:

  1. 动量(一阶矩): 类似于一个重球滚下山坡,这跟踪过去梯度的移动平均值,以保持相关方向的速度。
  2. 方差(二阶矩):这跟踪平方梯度的移动平均值,用于调整学习率。

这种组合允许优化器在损失函数平坦区域采取更大的步长,而在陡峭或嘈杂区域采取更小、更谨慎的 步长。具体机制在Kingma和Ba的基础 Adam研究论文中详细阐述,该论文证明了其在各种 深度学习 (DL) 任务中的经验优势。

实际应用

Adam优化器的通用性使其在几乎所有人工智能 (AI)领域中得到应用。

  • 自然语言处理(NLP):大型语言模型,例如生成式预训练Transformer(GPT),在训练时严重依赖Adam(或其变体AdamW)。该算法能高效处理与庞大词汇量和海量数据集相关的稀疏梯度,从而实现强大的聊天机器人和翻译系统的创建。
  • 计算机视觉在医疗健康领域的应用:医学图像分析中,模型必须检测MRI扫描中肿瘤等细微异常。Adam有助于 卷积神经网络 (CNN) 快速收敛到高精度解决方案,这对于开发 医疗AI诊断工具至关重要。

Adam 与 SGD

尽管 Adam 通常收敛更快,但将其与 Stochastic Gradient Descent (SGD) 区分开来很重要。SGD 使用固定的学习率更新 模型权重,并且在训练最先进的 object detection 模型时,通常在最后阶段更受青睐,因为它有时可以在测试数据上实现略好的泛化能力(最终准确率)。

然而,Adam 是“自适应的”,这意味着它会自动处理学习率的调整。这使得它对于初始实验和难以调优 SGD 的复杂架构来说,更加用户友好。对于在Ultralytics Platform上管理实验的用户来说,在这些优化器之间切换以比较性能通常是超参数调优的关键一步。

利用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 优化器文档提供了关于可用于自定义的参数和实现细节的技术信息。

让我们一起共建AI的未来!

开启您的机器学习未来之旅