Yolo Vision Shenzhen
Шэньчжэнь
Присоединиться сейчас
Глоссарий

Callback

Изучите важную роль колбэков в машинном обучении — инструментов, которые отслеживают, контролируют и автоматизируют обучение моделей для повышения точности, гибкости и эффективности.

В машинном обучении (ML) обратный вызов - это универсальная функция или блок кода, предназначенный для автоматического выполнения на определенных этапах вычислительного процесса. На сайте в контексте обучения нейронных сетей (НС), обратные вызовы служат в качестве "крючков", которые взаимодействуют с жизненным циклом обучения для выполнения таких действий, как регистрация метрик, сохранение промежуточных результатов или настройка параметров управления. Отделяя эти вспомогательные задачи от основного цикла обучения, разработчики могут создавать модульные, читаемые и легко настраиваемые рабочие процессы, не изменяя основной Алгоритм.

Как функционируют обратные вызовы

В типичном процессе обучения набор данных итерируется в течение определенного количество проходов, называемых эпохами. В течение этого цикла система выполняет прямые проходы для предсказаний и обратное распространение для обновления весов модели. Обратные вызовы выполняются в заранее определенных "событиях" в этом цикле, таких как начало обучения, окончание партии или завершение эпохи.

Объект Trainer в таких фреймворках, как Ultralytics управляет этими событиями. Когда происходит определенное событие, тренер выполняет все зарегистрированные функции обратного вызова, передавая им им текущее состояние модели. Этот механизм является основополагающим для современных MLOps, позволяя в реальном времени наблюдаемость и автоматическое вмешательство.

Общие приложения в искусственном интеллекте

Обратные вызовы незаменимы для оптимизации производительности и использования ресурсов в глубоком обучении (DL).

  • Ранняя остановка: Одно из наиболее важных применения - предотвращение чрезмерной подгонки. Ранняя обратный вызов ранней остановки отслеживает уровень ошибок на данных проверки. Если производительность модели стагнирует или ухудшается в течение заданного количества эпох, обратный вызов немедленно прекращает обучение, экономя время и затраты на облачные вычисления.
  • Динамическое планирование скорости обучения: Регулировка размера шага алгоритма оптимизации имеет решающее значение для сходимости. Обратные вызовы могут снизить скорость обучения при обнаружении плато, позволяя модели перейти к более оптимальное решение.
  • Контрольная точка модели: Чтобы обеспечить сохранение наилучшей версии модели, обратный вызов контрольной точки сохраняет состояние системы всякий раз, когда ключевая метрика, например средняя точность (mAP), улучшается. Это очень важно при длительном обучении на больших наборах данных, таких как ImageNet или COCO.
  • Ведение журнала экспериментов: Интеграция с инструментами визуализации, такими как TensorBoard, ClearMLили MLflow, часто осуществляется с помощью обратных вызовов. Эти инструменты записывают кривые потерь, использование системы использование аппаратного обеспечения, а также примеры прогнозов для последующего анализа.

Реализация пользовательского обратного вызова

Сайт ultralytics Библиотека предоставляет простой API для подключения пользовательских обратных вызовов к таким моделям, как YOLO11. Это позволяет пользователям внедрять специальную логику, например печать обновлений состояния или взаимодействие с внешними API, непосредственно в конвейер обучения.

Следующий пример демонстрирует, как добавить простой обратный вызов, который печатает подтверждающее сообщение в конце каждой эпохи обучения:

from ultralytics import YOLO


def on_train_epoch_end(trainer):
    """Callback function to print the current epoch number after it finishes."""
    print(f"Custom Callback: Epoch {trainer.epoch + 1} completed successfully.")


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

# Register the custom callback for the 'on_train_epoch_end' event
model.add_callback("on_train_epoch_end", on_train_epoch_end)

# Train the model with the registered callback
model.train(data="coco8.yaml", epochs=2)

Отличие от смежных понятий

Чтобы эффективно использовать обратные вызовы, полезно отличать их от аналогичных терминов в программной инженерии и науке о данных науке.

  • Крючки: Хотя термины "обратный вызов" и "крючок" часто используются как взаимозаменяемые, крючок обычно обозначает место в коде, куда может быть подключена внешняя функция (точка перехвата). Обратный вызов - это конкретная функция, предоставленная пользователем для выполнения на этом крючке.
  • Настройка гиперпараметров: Обратные вызовы облегчают настройку (например, с помощью планировщиков скорости обучения или интеграции с такими библиотеками, как Ray Tune), но сами они не являются процессом настройки. Настройка включает в себя поиск оптимальных значений конфигурации, а обратные вызовы - это механизм для применения изменений или отслеживать прогресс в процессе поиска.
  • Дополнение данных: Дополнение изменяет входные данные до того, как они попадают в сеть. Хотя некоторые продвинутые конвейеры используют обратные вызовы для для динамической настройки интенсивности дополнения (например, вероятность мозаики в YOLOv5), стандартная аугментация обычно является частью конвейера загрузки данных, а не событием цикла обучения. Стандартное увеличение обычно является частью конвейера загрузки данных, а не событием цикла обучения.

Реальные преимущества

Использование обратных вызовов напрямую ведет к повышению надежности и эффективности ИИ-агентов и приложений. Например, в в автономных автомобилях для обучения моделей требуется обработки огромного количества данных с датчиков. Обратные вызовы позволяют инженерам автоматически подбирать модели, которые лучше всего работают в сложных случаях без ручного контроля. Аналогично, в при анализе медицинских изображений обратные вызовы могут запускать предупреждения или вести подробный журнал, если модель начинает запоминать данные о пациенте (overfitting), а не изучать обобщенные характеристики, обеспечивая высокую надежность при развертывании в клинических условиях.

Используя обратные вызовы, разработчики, использующие такие фреймворки, как PyTorch или TensorFlow могут создавать саморегулирующиеся системы, которые экономят время, уменьшают количество ошибок и максимизируют производительность своих решений в области компьютерного зрения (КВ).

Присоединяйтесь к сообществу Ultralytics

Присоединяйтесь к будущему ИИ. Общайтесь, сотрудничайте и развивайтесь вместе с мировыми новаторами

Присоединиться сейчас