探索用于深度学习的Adam优化器。了解它如何结合动量和RMSProp,以在Ultralytics YOLO26等模型中实现更快的收敛。
Adam优化器,全称自适应矩估计,是一种复杂的优化算法,广泛用于训练深度学习模型。它结合了随机梯度下降 (SGD)的两种流行扩展——自适应梯度算法 (AdaGrad) 和均方根传播 (RMSProp) 的优点,彻底改变了该领域。通过根据梯度的一阶和二阶矩估计,为不同参数计算单独的自适应学习率,Adam使神经网络的收敛速度比传统方法显著加快。其鲁棒性和最小的调优要求使其成为许多开始新机器学习 (ML)项目的实践者的默认选择。
其核心是,训练模型涉及最小化损失函数,该函数衡量模型预测与实际数据之间的差异。标准算法通常使用恒定的步长(学习率)沿着“损失景观”下降到最小误差。然而,这种景观通常很复杂,具有可能困住简单算法的沟壑和高原。
Adam 通过为每个参数维护两个历史缓冲区来解决这个问题:
这种组合允许优化器在损失函数平坦区域采取更大的步长,而在陡峭或嘈杂区域采取更小、更谨慎的 步长。具体机制在Kingma和Ba的基础 Adam研究论文中详细阐述,该论文证明了其在各种 深度学习 (DL) 任务中的经验优势。
Adam优化器的通用性使其在几乎所有人工智能 (AI)领域中得到应用。
尽管 Adam 通常收敛更快,但将其与 Stochastic Gradient Descent (SGD) 区分开来很重要。SGD 使用固定的学习率更新 模型权重,并且在训练最先进的 object detection 模型时,通常在最后阶段更受青睐,因为它有时可以在测试数据上实现略好的泛化能力(最终准确率)。
然而,Adam 是“自适应的”,这意味着它会自动处理学习率的调整。这使得它对于初始实验和难以调优 SGD 的复杂架构来说,更加用户友好。对于在Ultralytics Platform上管理实验的用户来说,在这些优化器之间切换以比较性能通常是超参数调优的关键一步。
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 优化器文档提供了关于可用于自定义的参数和实现细节的技术信息。
开启您的机器学习未来之旅