术语表

回调

探索回调在机器学习中的重要作用--这些工具可监测、控制和自动进行模型训练,从而提高准确性、灵活性和效率。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

在机器学习中,尤其是在复杂的神经网络训练过程中,回调(Callback)是一种强大的工具。它本质上是一个对象或函数,用于在程序的不同阶段执行特定操作,最常见的是在模型训练或评估期间。将回调视为自动钩子或触发器,可让您监控内部状态、观察模型统计数据、做出决策或执行自定义代码,而无需手动中断训练过程。回调提供了一种重要机制,可在流行的深度学习(DL)框架(如 TensorFlowPyTorch.

回调如何工作

回调基于事件驱动系统运行。它们通常以列表形式传递给主函数,如 train method within a 机器学习 框架。框架的设计目的是在特定的时间点(称为 "事件")调用这些回调。常见的事件包括:整个培训过程的开始或结束、一个培训项目的开始或结束、一个培训项目的开始或结束、一个培训项目的开始或结束、一个培训项目的开始或结束。 纪元甚至在处理单个 批量大小 的数据。当特定事件发生时,框架会执行相应的回调函数,通常会传递当前状态的相关信息,如当前的纪元号、 损失函数 值或性能指标作为参数。这样,回调程序就能根据实时信息与正在进行的流程进行动态交互,并对其产生影响。

主要应用和使用案例

回调的用途非常广泛,可以实现有效的模型开发和培训所必需的各种功能:

  • 监控模型性能在整个训练过程中跟踪训练数据验证数据的损失和准确性等指标。结果可记录到控制台、保存到文件,或使用TensorBoard 等工具进行可视化。
  • 模型检查点定期自动保存模型权重,通常只保存基于所选指标(如验证准确率或损失)的最佳性能版本。这样就能确保在训练中断或性能下降时不会丢失最佳模型。
  • 早期停止监控某个性能指标(如验证损失),如果该指标在规定的时间内停止改善,则自动停止训练过程。这样既能防止过度拟合,又能节省计算资源。
  • 动态调整即时修改训练参数。一个常见的例子是根据训练进度动态调整学习率,通常在性能达到顶峰时降低学习率(学习率调度)。
  • 日志和报告:将日志、指标和培训进度更新发送到外部监控系统或实验跟踪平台,如 Weights & BiasesUltralytics HUB 等外部监控系统或实验跟踪平台,帮助开展MLOps实践。
  • 资源管理:实施自定义逻辑来管理系统资源,例如清除 GPU内存缓存。更多建议,请参阅我们的 "模型训练技巧"指南。

实践案例

  1. 保存最佳物体检测模型在训练 Ultralytics YOLO模型时,可能会使用ModelCheckpoint 回调。该回调会监控验证数据集上平均精度(mAP)。只有当 mAP 分数比之前保存的最佳分数有所提高时,它才会将模型的权重保存到文件中,从而确保您从训练会话中保留最准确的模型。在我们的模型比较页面上比较不同YOLO 模型的性能。
  2. 防止图像分类中的过度拟合:想象一下在ImageNet 这样的复杂数据集上训练图像分类模型的情景。可以配置一个 EarlyStopping 回调来监控验证损失。如果验证损失连续 10 个 epochs 没有减少,回调就会自动停止训练。这样可以防止模型过度拟合训练数据,节省大量训练时间和成本。进一步探索图像分类任务

使用回调的好处

将回调集成到机器学习工作流程中具有几个显著优势:

  • 自动化:回调功能可自动执行保存模型、记录指标和调整参数等重复性任务,从而减少在长时间训练运行过程中的人工干预需求。
  • 灵活定制:它们允许开发人员在不修改核心框架代码的情况下,在训练循环中插入自定义逻辑,从而实现高度定制的训练行为。这对于复杂实验或超参数调整尤其有用。
  • 效率:早期停止和动态学习率调整等回调功能可以节省计算资源,加快收敛速度,从而提高训练效率。
  • 洞察和监测:通过详细记录和可视化随时间变化的指标,它们能深入洞察培训动态。
  • 可重复性:通过规范训练过程中的操作(如保存标准、停止条件),回调有助于提高机器学习实验的可重复性。

KerasPyTorch Lightning等框架提供了大量内置回调集合和用于创建自定义回调的直接接口。Ultralytics 还在其训练管道内部利用回调,从而提高了工具的鲁棒性和用户友好性,例如 Ultralytics YOLO11Ultralytics HUB平台等工具的稳健性和用户友好性。请查阅Ultralytics 文档,了解与YOLO 模型训练相关的更多具体示例。

阅读全部