Active Learning
Активное обучение выбирает наиболее неопределённые и информативные примеры для разметки человеком, позволяя достичь высокой точности при гораздо меньшем числе аннотаций. Включён код на Python.
Активное обучение — это стратегический подход в машинном обучении (ML), при котором алгоритм сам выбирает наиболее информативные точки данных для разметки, а не пассивно принимает уже размеченный набор данных. При традиционном обучении с учителем моделям часто требуется огромное количество размеченных данных, подготовка которых может быть дорогостоящей и долгой. Активное обучение оптимизирует этот процесс: оно находит «неуверенные» или «сложные» примеры — те, что находятся около границы принятия решений или в которых модель не уверена, — и просит разметчиков размечать только эти конкретные примеры. Благодаря этому итеративному циклу модели достигают высокой точности при значительно меньшем количестве размеченных примеров, что делает этот подход особенно эффективным для проектов с ограниченными бюджетом или сроками.
Как работает цикл активного обучения#
В основе активного обучения лежит цикл обратной связи, который часто называют обучением с участием человека. Вместо однократного обучения на статичном наборе данных модель развивается в циклах запросов и обновлений.
-
Инициализация: Процесс начинается с небольшого набора размеченных обучающих данных, используемого для обучения исходной модели, например Ultralytics YOLO26.
-
Выбор запросов: Модель оценивает большой пул неразмеченных данных. Используя стратегию выбора запросов — чаще всего выборку по неопределённости, — она выбирает изображения или текст, для которых прогнозы модели наименее уверенные.
-
Разметка: Эти приоритетные примеры передаются эксперту-человеку, которого в литературе по активному обучению часто называют «оракулом», для разметки данных.
-
Повторное обучение: Новые размеченные данные добавляют в обучающую выборку, после чего модель обучают заново. Обновлённая модель лучше справляется с выбором следующей партии сложных примеров.
Каждый проход цикла выглядит так:
Примеры применения в реальных условиях#
Активное обучение незаменимо в отраслях, где данных много, но для их разметки нужны специальные знания или значительные затраты.
- Анализ медицинских изображений: В таких областях, как радиология, разметку выполняют сертифицированные специалисты, время которых очень ценно. Вместо того чтобы просить врача размечать тысячи очевидных снимков, система активного обучения может отбирать неоднозначные случаи — например, опухоли на ранних стадиях или редкие аномалии, — чтобы эксперт работал только с изображениями, которые действительно повышают диагностические возможности модели.
- Автономные транспортные средства: Беспилотные автомобили создают петабайты видеоданных. Разметить каждый кадр невозможно. Активное обучение помогает инженерам находить нестандартные сценарии, например пешеходов в костюмах или поездки в сильный снегопад, которые могут пропустить стандартные модели обнаружения объектов. Уделяя приоритетное внимание таким редким ситуациям, компании повышают безопасность и не тратят ресурсы на разметку повторяющихся кадров с шоссе.
Пример на Python: отбор неуверенных прогнозов#
В следующем примере показана простая логика «выборки по неопределенности» с использованием Ultralytics YOLO26. Мы загружаем модель, запускаем инференс на изображениях и помечаем те, у которых показатель уверенности ниже заданного порога, для ручной проверки.
from ultralytics import YOLO
# Load the latest YOLO26 model
model = YOLO("yolo26n.pt")
# List of unlabeled image paths
unlabeled_images = ["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]
# Run inference
results = model(unlabeled_images)
# Identify samples with low confidence for active learning
uncertain_threshold = 0.6
for result in results:
# Check if any detection confidence is below the threshold
if result.boxes.conf.numel() > 0 and result.boxes.conf.min() < uncertain_threshold:
print(f"Active Learning Query: {result.path} needs human labeling.")Различия между связанными понятиями#
Важно отличать активное обучение от похожих парадигм обучения:
- Полуобучение: хотя оба метода используют неразмеченные данные, при полуобучении псевдометки автоматически присваиваются данным на основе предсказаний модели с высокой уверенностью. В отличие от него, активное обучение явно запрашивает у человека разметку предсказаний с низкой уверенностью.
- Трансферное обучение: Этот подход предполагает использование предварительно обученной модели (например, обученной на ImageNet) и её адаптацию к новой задаче. Активное обучение определяет, какие данные нужно разметить, а трансферное обучение сосредоточено на повторном использовании усвоенных признаков.
- Обучение с подкреплением: Агент обучается, взаимодействуя со средой и получая награды. Активное обучение устроено иначе: оно запрашивает у оракула статические метки эталонной разметки, а не оптимизирует последовательность действий для получения награды.
Интеграция с MLOps#
Для эффективного внедрения активного обучения нужен надёжный конвейер эксплуатации машинного обучения (MLOps). Тебе нужна инфраструктура для управления версиями данных, запуска задач повторного обучения и предоставления людям интерфейса разметки. Инструменты, интегрированные с экосистемой Ultralytics, позволяют легко переключаться между инференсом, отбором и обработкой данных и обучением. Например, пользовательские скрипты обучения позволяют разработчикам быстро включать новые порции данных активного обучения в процесс работы с моделями YOLO.
Помимо выборки по неопределенности, в обзорах глубокого активного обучения сравниваются стратегии отбора, например на основе разнообразия и гибридные стратегии. Отслеживание метрик оценки модели после каждого цикла позволяет убедиться, что цикл активного обучения действительно повышает производительность.










