Active learning для ML — не модное словечко, а прагматичный приём, который помогает сократить затраты на разметку и быстрее получить рабочую модель. В этой статье я расскажу, какие стратегии работают на практике, какие подводные камни встречаются и как внедрять такой цикл в реальном проекте.

Что такое активное обучение и зачем оно нужно

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

Идея проста: модель указывает, какие примеры её смущают, а человек отвечает на узкие вопросы. В результате можно достичь той же точности, разметив гораздо меньше данных.

Основные стратегии выборки

Стратегии различаются по тому, как оценивать «полезность» примера. Ниже — самые распространённые подходы и когда их лучше применять.

Неопределённость (uncertainty sampling)

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

Подходит, когда модель способна корректно оценить свои вероятности. В противном случае неопределённость может указывать не на полезность, а на плохо калиброванную модель.

Query-by-committee

Здесь используется не одна модель, а «команда» моделей. Выбирают объекты, по которым модели расходятся. Такой подход помогает находить спорные и информационно насыщенные примеры.

Он устойчив к погрешностям одной модели, но требует держать несколько версий, что дороже по ресурсам.

Maximal expected model change и expected error reduction

Эти стратегии оценивают, как сильно изменится модель или её ошибка после разметки конкретного объекта. Они более теоретически обоснованы, но вычислительно затратны.

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

Диверсификация и кластеризация

Когда данные содержат повторяющиеся кластеры, простой выбор по неопределённости может приводить к схожим примерам. Добавляют критерий разнообразия, чтобы охватить разные подмножества данных.

Комбинация неопределённости и разнообразия часто даёт лучший результат, особенно на мультимодальных распределениях признаков.

Как строится цикл активного обучения

Типичный цикл состоит из четырёх шагов: обучение начальной модели, выбор объектов для разметки, получение меток от эксперта, переобучение модели. Повторяют цикл, пока не исчерпан бюджет или не достигнута целевая точность.

Главное — правильно и быстро интегрировать эти шаги в рабочий процесс, чтобы не терять время на накладные операции и переключение контекста для экспертов.

Стартовая выборка

Нужна небольшая, но репрезентативная начальная разметка. Если стартовые данные слишком узкие, модель будет давать бессмысленную неопределённость и выбирать похожие примеры, что замедлит обучение.

Обычно достаточно 50–500 меток в зависимости от задачи и сложности классов.

Батч-режим и последовательный выбор

Выбирать по одному примеру редко удобно: эксперту проще работать с батчами. В батче важно избежать коррелированных примеров и обеспечить разнообразие.

Для этого используют жадные алгоритмы, оптимизацию покрываемости или кластерные подходы внутри выбранного набора кандидатов.

Практические моменты и ошибки

Внедрение активного обучения приносит не только экономию, но и новые сложности. Ниже — распространённые проблемы и способы их смягчить.

Проблемы с калибровкой вероятностей

Если модель плохо калибрована, неопределённость вводит в заблуждение. Стоит применять методы калибровки, например плацебо-скейлинг или изотоническую регрессию, прежде чем полагаться на вероятности.

Калибровка особенно важна при подборе порогов и при комбинировании стратегий.

Шум в разметке и человеческие ошибки

Эксперты тоже ошибаются. Если в батче попадает спорный пример, разметка может быть непоследовательной. Надёжные системы предусматривают валидацию: дублируют часть разметки между разными экспертами и учитывают доверие к меткам.

Для критичных задач стоит вести историю меток и давать специалистам контекст — почему модель запросила именно этот пример.

Смещение выборки (sampling bias)

Активная выборка фокусируется на «трудных» примерах и может упустить остальные области распределения. Это приводит к смещению и ухудшению качества вне запросной области.

Один из подходов — смешивать активную выборку с случайной выборкой в фиксированном соотношении, чтобы сохранить репрезентативность.

Интеграция в ML pipeline

Переход от идеи к системе требует автоматики: интерфейс для аннотаторов, очередь задач, мониторинг моделей и версия данных. Нельзя надеяться на ручную координацию при увеличении масштаба.

Лучше завести простую инфраструктуру вначале и расширять её по мере роста объёма. Лёгкие инструменты дают быстрые итерации, а затем можно оптимизировать узкие места.

Контроль версий и эксперименты

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

Логи запросов, меток и метрик ускоряют разбор ошибок и помогают воспроизводить успешные решения.

Метрики и критерии остановки

Оценивать успех активного обучения можно по нескольким метрикам: качество на валидации, кривая Labeled-vs-Accuracy и экономия разметки по сравнению с случайной выборкой. Важно смотреть не только на абсолютную точность, но и на скорость её роста.

Критерий остановки может быть связан с исчерпанием бюджета, достижением желаемой точности или снижением прироста качества в нескольких последовательных итерациях.

Небольшая таблица: сравнение стратегий

Стратегия Плюсы Минусы
Неопределённость Простая, часто эффективна Чувствительна к калибровке, может выбирать похожие примеры
Query-by-committee Устойчивее к ошибкам одной модели Дороже по вычислениям
Expected error reduction Теоретически оптимальна Вычислительно затратна
Диверсификация Лучше покрывает распределение Может пропускать «трудные» крайние случаи

Чек-лист для запуска пилота

  • Собрать небольшую стартовую разметку и оценить базовую модель.
  • Выбрать одну стратегию выборки и протестировать её на контрольной валидации.
  • Организовать интерфейс для аннотаторов и логи для аудита.
  • Регулярно калибровать модель и проверять качество меток.
  • Смешивать активную и случайную выборки, чтобы избежать смещения.

Личный опыт из проекта

В одном из моих проектов задача была — классификация клиентских обращений по категориям. Полного корпуса размеченных писем не было, а эксперты были заняты. Мы запустили активное обучение с простым критерием неопределённости и батчем по 100 писем.

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

Когда активное обучение не поможет

Если данные очень шумные или метки неустойчивы, модель будет запрашивать споры и выигрыша по итогу может не быть. Также при малом объёме фич модельу может не хватать выразительности, и выборка не ускорит прогресс.

В таких ситуациях лучше сначала улучшить фичи или упростить задачу, а активное обучение применять уже на устойчивой основе.

Заключительные мысли для практики

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

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