术语表

回调

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

在机器学习中,回调是一种自动脚本或函数,在模型训练过程中的特定时刻执行。可以将其视为训练框架在预定义阶段(例如在一个历元、一个训练批次或整个训练会话的开始或结束时)遵循的一组指令。回调为开发人员提供了一种强大的机制,使他们无需更改模型或训练循环的核心代码,即可对训练的各个方面进行监测、控制和自动化。它们是构建高效、稳健的机器学习(ML)管道的重要工具。

回调如何工作

当你训练一个 神经网络,该过程涉及对一个 数据集 多个历时。训练循环管理这一过程,包括向模型输入数据、计算 损失函数并更新 模型权重 通过 反向传播.回调会在特定事件发生时钩住这个循环。例如,一个 on_epoch_end 回调将在每个纪元结束后精确执行其代码。这样就可以进行动态干预,例如调整 学习率在这种情况下,用户可以选择保存模型的最佳版本,或者在性能达到顶峰时提前停止训练。这种自动化是结构良好的 机器学习工作流程.

实践案例

回调被广泛应用于各种计算机视觉(CV)任务中,以提高训练效果。

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

回调与其他概念

将回调与相关术语区分开来很有帮助:

  • 函数:虽然回调是函数的一种,但它的特点是作为参数传递给另一个函数(训练循环),并在特定时间由该函数内部调用。标准函数通常由程序员直接调用。
  • 钩子:在软件工程中,"钩子 "是一个更笼统的术语,指代码中允许插入自定义逻辑的位置。机器学习框架中的回调是钩子概念的具体实现,专门针对模型训练生命周期中的事件而设计。
  • 超参数调整:这是为模型寻找最佳超参数(如学习率或批量大小)的过程。回调可以协助 超参数调整,例如,通过执行学习率调度程序,但回调本身并不是调整过程。调整过程是更高层次的搜索或优化过程。

使用回调的好处

在培训过程中整合回调功能有几个显著的优势:

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

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

加入 Ultralytics 社区

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

立即加入
链接复制到剪贴板