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

Adam 优化器

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

Adam (自适应矩估计)是一种复杂的、广泛使用的 优化算法,用于在训练过程中更新 在训练过程中更新神经网络的参数。它结合了其他两种流行的 扩展 自适应梯度算法 (SGD) 和均方根传播 (RMSProp)Adam 学习率。这种 这一功能使其能够高效处理有噪声问题上的稀疏梯度,从而成为训练 复杂的深度学习(DL)架构的默认选择、 包括最新的YOLO11 模型

Adam 如何工作

Adam 背后的核心机制包括计算梯度的第一矩和第二矩,以调整 神经网络中每个权重的学习率 神经网络的学习率。你可以把 "第一矩 可以把 "第一矩 "看作是动力,它能使优化朝着正确的方向前进,就像一个沉重的球 滚下山坡。第二矩 "跟踪的是非中心方差,它能有效地调整步长。 基于梯度的历史大小。

反向传播过程中,算法会计算 损失函数相对于权重的梯度。 权重的梯度。然后,Adam 会更新梯度(动量)和梯度平方(方差)的指数移动平均值。 这些移动平均值用于缩放当前梯度,确保模型在梯度一致的方向上迈出较大的步子,而在梯度不一致的方向上迈出较小的步子。 在梯度一致的方向上步幅较大,而在方差较大的方向上步幅较小。这一过程详见 Kingma 和 Ba 的Adam 研究论文中详细介绍这一过程。

Adam 与其他优化器的区别

要了解何时使用Adam ,需要将其与机器学习(ML)框架中的其他常见算法进行比较。 机器学习 (ML)框架中的其他常见算法进行比较。

  • 随机梯度下降法(SGD) SGD 使用固定的学习率(或简单的衰减时间表)更新参数。虽然SGD 虽然 SGD 的计算效率很高,而且通常能很好地进行泛化,但它在处理损失景观中的 "鞍点 "时可能会遇到困难,而且收敛速度比 Adam 慢。 收敛速度比Adam慢。许多 计算机视觉任务使用SGD 进行最后 微调,以获得最高精度
  • RMSProp:该优化器主要解决 AdaGrad 中出现的学习率下降问题。Adam 对RMSProp进行了改进 增加了动量项,这有助于抑制振荡并加速向最小值收敛。
  • AdamW:被称为 去耦权重衰减的Adam AdamW) 通常是训练现代 变压器和大型计算机视觉模型。它 将权重衰减正则化与梯度更新分离开来,通常能比标准 Adam 标准Adam。

实际应用

由于其稳健性和对超参数调整的最低要求 超参数调整的要求极低,因此Adam 用于各种高影响领域。

  1. 医疗保健领域的人工智能当 训练用于 在训练医学图像分析模型时,例如检测核磁共振成像扫描中的异常 在训练医学图像分析模型(如检测核磁共振成像扫描中的异常点)时,数据可能很稀疏或不平衡。Adam的自适应学习率可帮助模型快速收敛 快速收敛。 即使特定特征在训练数据中出现的频率很低,Adam 的自适应学习率也能帮助模型快速收敛,从而加快 诊断工具。
  2. 自然语言处理 (NLP): 像 GPT-4 这样的大型语言模型 (LLM) 在预训练过程中非常依赖Adam (或AdamW)。该算法 有效地处理了大量参数--通常是数十亿--以及词嵌入的稀疏性、 让这些模型能够从庞大的文本数据集(如维基百科)中学习复杂的语言模式。 维基百科

Ultralytics YOLO的使用情况

使用Ultralytics Python API 时,您可以轻松选择 Adam 优化器来训练对象检测、分割或姿势估计 模型。虽然SGD 是许多 YOLO 配置的默认 对于较小YOLO 数据集或需要快速收敛的情况,Adam 是一个很好的替代方案。 的最佳选择。

下面的示例演示了如何训练 YOLO11模型:

from ultralytics import YOLO

# Load a generic YOLO11 model
model = YOLO("yolo11n.pt")

# Train the model on the COCO8 dataset using the 'Adam' optimizer
# The 'optimizer' argument creates the specific PyTorch optimizer instance internally
results = model.train(data="coco8.yaml", epochs=5, optimizer="Adam")

这种灵活性使研究人员和工程师可以试验 优化器配置,以找到最适合其 最佳设置。

加入Ultralytics 社区

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

立即加入