Когда данных мало, а задача реальная

Представьте: вы строите модель для диагностики редкого заболевания по медицинским снимкам. Размеченных примеров — сотня. Нанять радиолога для разметки тысяч изображений стоит как небольшой стартап. Что делать?

Именно здесь на сцену выходит активное обучение (Active Learning) — подход, который переворачивает традиционную логику ML: вместо того чтобы обучать модель на всём доступном массиве, мы учим её задавать правильные вопросы.

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


Что такое активное обучение и почему «активное»

Активное обучение — это метод эффективного использования ресурсов разметки. Он повышает эффективность обучения, выбирая наиболее ценные образцы из неразмеченной базы для аннотирования пользователем (запрос/query).

Обычное (пассивное) обучение берёт данные случайно. Активное — стратегически. Модель сама указывает: «Вот эти 100 примеров дадут мне максимум знаний — разметьте именно их».

Разметка данных — крайне трудоёмкий процесс, занимающий около 80% времени, отведённого на ML-проект. Активное обучение призвано радикально снизить эту цифру.

ℹ Ключевое отличие
Пассивное обучение: дай мне 10 000 случайных примеров. Активное обучение: дай мне 500 самых нужных примеров, и я покажу результат сопоставимый с первым вариантом.

Базовый цикл активного обучения


graph TD
    A[Небольшой размеченный пул] --> B[Обучение модели]
    B --> C[Оценка всего неразмеченного пула]
    C --> D{Acquisition Function}
    D --> E[Выбор наиболее ценных примеров]
    E --> F[Отправка эксперту на разметку]
    F --> A
    E --> G{Бюджет исчерпан?}
    G -- Нет --> A
    G -- Да --> H[Финальная модель]

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


Три главных сценария выборки (Query Strategies)

Сердце активного обучения — функция приобретения (Acquisition Function). Именно она решает, какие примеры запросить у эксперта. Рассмотрим три основных семейства стратегий.

1. Uncertainty Sampling — выбираем то, в чём модель сомневается

Uncertainty Sampling — вероятно, простейшая и наиболее распространённая стратегия запроса. Она предпочитает наиболее неопределённые экземпляры, оцениваемые по выходам модели.

Есть три классических варианта:

Для вероятностных моделей существуют три типичные стратегии неопределённости: энтропийная (entropy-based), наименьшей уверенности (least-confidence) и выборка по марже (margin-sampling).

import numpy as np

def uncertainty_sampling(probs):
    """
    probs: массив вероятностей классов для каждого примера, shape (N, C)
    Возвращает индексы образцов, отсортированных по убыванию энтропии.
    """
    # Энтропийная стратегия: H = -sum(p * log(p))
    entropy = -np.sum(probs * np.log(probs + 1e-10), axis=1)
    return np.argsort(entropy)[::-1]  # наибольшая энтропия = наибольшая неопределённость

# Пример: 5 примеров, 3 класса
probs = np.array([
    [0.9, 0.05, 0.05],   # уверенная предсказание
    [0.34, 0.33, 0.33],  # максимальная неопределённость
    [0.6, 0.3, 0.1],
    [0.45, 0.45, 0.1],
    [0.99, 0.005, 0.005]
])

print(uncertainty_sampling(probs))  # [1, 3, 2, 0, 4]

2. Diversity Sampling — выбираем разнообразное

Одной неопределённости недостаточно: можно выбрать 100 очень похожих, но неопределённых примеров и почти ничего не узнать о других областях данных. Diversity Sampling решает эту проблему.

Core-set approach: выбираем точки так, чтобы покрыть пространство признаков максимально равномерно — строим «ядро» (core-set) набора данных.

Core-set хорошо работает для задач классификации изображений при небольшом числе классов. Когда число классов становится большим или размерность данных возрастает («проклятие размерности»), метод становится менее эффективным.

3. Expected Model Change — выбираем то, что максимально изменит модель

Ещё одна стратегия — выбирать примеры, добавление которых максимально изменит параметры модели. Сюда относится метод BADGE.

BADGE (Batch Active learning by Diverse Gradient Embeddings) отслеживает одновременно неопределённость модели и разнообразие данных в пространстве градиентов.


Неопределённость: алеаторная против эпистемической

При работе с uncertainty sampling важно понимать природу неопределённости, с которой имеет дело модель.

Неопределённость модели делится на два типа. Алеаторная неопределённость вносится шумом в данных (например, данные датчиков, шум в процессе измерений) и может зависеть или не зависеть от входных данных. Она считается нередуцируемой, поскольку отсутствует информация об истинном значении. Эпистемическая неопределённость относится к неопределённости параметров самой модели — то есть мы не знаем, насколько хорошо модель объясняет данные. Этот тип теоретически устраним при наличии большего количества данных.

⚠ Важный нюанс
Если выборка нацелена на уменьшение алеаторной неопределённости — вы тратите бюджет разметки впустую. Размечать больше зашумлённых примеров бессмысленно. Стратегия должна фокусироваться на эпистемической неопределённости.

Гибридные стратегии и SVP: практика побеждает теорию

Многие из описанных методов не являются взаимоисключающими. Гибридная стратегия выборки учитывает разные атрибуты точек данных, объединяя различные предпочтения выборки в одну.

Одна из элегантных практических оптимизаций — SVP (Selection via Proxy).

Поскольку core-set selection вычислительно дорог, Coleman et al. (2020) экспериментировали со слабой моделью (например, меньшей архитектурой, не полностью обученной) в качестве прокси и обнаружили, что эмпирически использование слабой модели-прокси может значительно сократить каждый цикл выбора данных без ощутимой потери в финальной ошибке. Метод называется SVP.

Сравнение основных стратегий

СтратегияПринципПлюсыМинусы
Uncertainty SamplingВыбор наиболее «сомнительных» примеровПрост в реализации, быстрИгнорирует разнообразие, может выбирать похожие примеры
Diversity Sampling (Core-set)Покрытие пространства признаковХорошее представление распределенияДорого вычислительно, хуже при высокой размерности
BADGEНеопределённость + разнообразие в пространстве градиентовУчитывает оба фактораСложнее в реализации
SVPПрокси-модель для ускорения выборкиБыстро, практичноКачество зависит от прокси
Random SamplingСлучайная выборкаБыстрее всегоНаименее эффективен информационно

Результаты и практическая применимость

Как хорошо работает активное обучение на практике?

Uncertainty, margin и entropy sampling способны достичь более 99% производительности при использовании подмножества из 10 000 точек менее чем за 25% времени, необходимого для обучения на полном датасете. Это означает, что при снижении точности менее чем на 1% время обучения сокращается на 75%.

«Бросать больше данных на проблему — не всегда лучший ответ» — Mind Foundry Research

Однако у активного обучения есть и свои пределы. Недавние исследования дают трезвую оценку:

Активное обучение является наименее эффективным методом решения проблемы нехватки данных, генерируя прирост лишь 1–4% по сравнению со случайной выборкой, тогда как методы аугментации данных (DA) и полуобучения (SSL) в сочетании могут дать до 60% прироста. Однако когда AL комбинируется с сильными методами DA и SSL, он по-прежнему способен обеспечить дополнительное улучшение. Таким образом, AL лучше рассматривать не как метод борьбы с нехваткой меток, а как финальный кирпичик для выжимания последних процентов качества после применения DA и SSL.

💡 Практический совет
Не начинайте с активного обучения. Сначала примените Data Augmentation и Semi-Supervised Learning (self-training, pseudo-labeling). Активное обучение — финальный инструмент тонкой настройки, а не замена базовым техникам работы с малыми данными.

Три сценария применения Active Learning

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

Вот когда Active Learning даёт наибольший эффект:

  1. Медицина и биология — разметка требует экспертизы редких специалистов; каждый запрос к эксперту стоит дорого.
  2. NLP с узкой предметной областью — юридические документы, технические тексты, где нет готовых датасетов.
  3. Компьютерное зрение в промышленности — детекция дефектов, где аномалии редки и разметка медленная.
📝 Реальный сценарий
Компания обучает детектор дефектов на производственной линии. Ежедневно камеры фиксируют 50 000 изображений, из которых дефектных — около 0.1%. Разметчик может обработать 200 изображений в день. Без активного обучения случайная выборка даёт ~0.1 дефекта на 200 изображений. С активным обучением модель направляет разметчика к изображениям с максимальной неопределённостью — и тот видит 30–50 реальных дефектов за тот же день.

Подводные камни: когда Active Learning вредит

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

Важная проблема — смещение выборки (sampling bias):

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

Другая сложность — выбор правильной стратегии:

Выбор оптимальной стратегии запроса чувствителен к качеству эмбеддингов. Хотя вычислительно дешёвый Margin sampling может показывать пики производительности на конкретных датасетах, стратегии вроде BADGE демонстрируют большую робастность. При этом их эффективность часто улучшается в паре с высококачественными эмбеддингами.


Заключение: активное обучение как философия работы с данными

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

Ключевые выводы:

  • Активное обучение решает задачу выявления наиболее информативных образцов для разметки с целью снижения затрат на аннотирование для задач обучения с учителем.
  • Три основных семейства стратегий: Uncertainty, Diversity и Expected Model Change — каждое со своими сценариями применения.
  • Uncertainty sampling остаётся конкурентоспособным и предпочтительным выбором для практиков.
  • AL лучше всего работает как дополнение к Data Augmentation и Semi-Supervised Learning, а не замена им.
  • Эффективность активного обучения сильно зависит от качества эмбеддингов и целевой задачи — необходима контекстно-специфическая оценка.

Если ваша задача требует дорогой экспертной разметки — активное обучение не опция, а необходимость. Начните с простой энтропийной стратегии, добавьте diversity-компонент, и вы удивитесь, насколько меньше данных вам на самом деле нужно.