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

Adam 优化器

了解Adam 优化器如何通过自适应学习率、动力和人工智能中的实际应用为高效的神经网络训练提供动力。

Adam (全称自适应矩估计)是一种精密的优化算法,广泛应用于深度学习模型的训练。它通过融合随机梯度下降(SGD)的两种流行扩展——自适应梯度算法(AdaGrad)和均方根传播(RMSProp)的优势,彻底革新了该领域。 通过根据梯度的第一和第二矩估计值为不同参数计算独立的自适应学习率 Adam 神经网络的收敛速度显著快于传统方法。其稳健性与极低的调参需求,使其成为众多从业者启动新机器学习项目时的默认选择。

Adam 如何工作

训练模型的核心在于最小化损失函数,该函数衡量模型预测值与实际数据之间的差异。标准算法通常采用恒定步长(学习率)沿着"损失景观"向最小误差方向下降。然而,这种景观往往极为复杂,存在峡谷与高原等特征,可能使简单算法陷入困境。

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

  1. 动量(一阶动量):类似于重球沿斜坡滚动,它追踪过去梯度的移动平均值,以维持相关方向的速度。
  2. 方差(二阶矩):该指标追踪梯度平方的移动平均值,用于调整学习率。

这种组合使优化器能够在平坦区域采取更大步幅,而在陡峭或噪声较大的区域采取更小、更谨慎的步幅。具体机制详见Kingma和Ba发表Adam 论文,该论文通过实证验证了其在各类深度学习(DL)任务中的优越性。

实际应用

Adam 多功能性使其被广泛应用于人工智能(AI)的几乎所有领域。

Adam SGD

虽然Adam 通常收敛Adam 需注意区分它与随机梯度下降(SGD) Adam 。SGD 固定学习率更新模型权重,常被用于训练尖端目标检测模型的最终阶段,因为它有时能在测试数据上实现略优的泛化能力(最终准确率)。

然而,Adam "自适应"Adam ,即能自动调节学习率。这使得它在初始实验和复杂架构中更易于使用——在这些场景下,手动调整SGD 困难SGD 。对于在Ultralytics 管理实验的用户而言,在不同优化器之间切换以比较性能,通常是超参数调优的关键步骤。

利用Ultralytics实施

现代框架如 PyTorch 和Ultralytics库 Adam 应用变得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等其他算法Adam 精彩图解。此外,PyTorch 文档详细阐述了可供定制的参数及实现细节的技术要点。

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入