Semi-Supervised Learning: обучение с нехваткой данных
Разбираем Semi-Supervised Learning: что это, как работает, какие методы использовать, когда данных мало. Практическое руководство по SSL.
Semi-Supervised Learning: как учить модели, когда данных мало
Представьте: у вас есть миллион изображений кошек и собак, но размечены только 500 из них. Нанять разметчиков — дорого. Выбросить 999 500 картинок — расточительно. Что делать? Именно здесь на помощь приходит полуконтролируемое обучение (Semi-Supervised Learning, SSL) — один из самых практичных подходов в современном ML.
Эта статья — разбор первой части серии «Learning with not Enough Data» от Лилиан Венг (Lilian Weng, OpenAI). Рассмотрим, что такое SSL, какие у него базовые допущения, как устроены ключевые алгоритмы и где применять всё это на практике.
Четыре стратегии, когда данных не хватает
Когда сталкиваешься с нехваткой размеченных данных для задач обучения с учителем, обычно рассматривают четыре подхода:
- Pre-training + fine-tuning — предварительно обучить мощную универсальную модель на большом неразмеченном корпусе (например, языковые модели на свободном тексте или визуальные модели на изображениях через self-supervised learning), затем дообучить на небольшом наборе размеченных данных.
- Semi-supervised learning — обучаться одновременно на размеченных и неразмеченных примерах.
- Active learning — поскольку разметка дорога, умно выбирать, какие именно примеры размечать следующими.
- Data augmentation / few-shot learning — расширять обучающую выборку синтетическими примерами или учиться обобщать по единицам примеров.
В этой статье сосредоточимся на Semi-Supervised Learning — подходе, который сочетает в себе лучшее от supervised и unsupervised миров.
Что такое Semi-Supervised Learning и его ключевые допущения
Semi-supervised learning — это широкая категория методов машинного обучения, которая задействует как размеченные, так и неразмеченные данные, являясь гибридной техникой между обучением с учителем и без учителя.
Базовая идея: для размеченных точек алгоритм использует традиционное обучение с учителем для обновления весов модели; для неразмеченных точек — минимизирует разницу предсказаний между похожими обучающими примерами.
SSL работает, только если выполнены определённые предположения о структуре данных. Ключевые допущения полуконтролируемого обучения — это предположение о многообразии (manifold assumption), кластерное предположение (cluster assumption) и предположение о непрерывности (continuity assumption).
Расшифруем каждое:
| Допущение | Суть | Пример |
|---|---|---|
| Manifold | Данные лежат на многообразии меньшей размерности | Изображения лиц — не случайные пиксели, а точки на «лицевом» многообразии |
| Cluster | Близкие точки принадлежат одному классу | Кластеры в пространстве признаков соответствуют категориям |
| Continuity (Smoothness) | Близкие точки должны иметь одинаковые метки | Два похожих изображения кошки — оба «кошка» |
Три семейства методов SSL
graph TD
A[Semi-Supervised Learning] --> B[Self-Training / Pseudo-Labeling]
A --> C[Consistency Regularization]
A --> D[Graph-Based Methods]
B --> B1[Pseudo-Label]
B --> B2[Noisy Student]
C --> C1[Π-Model]
C --> C2[Mean Teacher]
C --> C3[MixMatch]
C --> C4[FixMatch]
D --> D1[Label Propagation]
D --> D2[Graph Neural Networks]
1. Self-Training и псевдо-разметка (Pseudo-Labeling)
Самый интуитивный подход. Псевдо-разметка (self-training) — парадигма SSL, которая появилась ещё в 1960–70-х годах и остаётся популярной благодаря своей простоте. Суть: обучаем модель на размеченных данных, используем её для предсказания меток на неразмеченных данных (они становятся «псевдо-метками»), затем переобучаем на объединённой выборке.
Этот цикл повторяется снова и снова — «студенческая» модель генерирует псевдо-метки для следующей итерации обучения.
# Упрощённая схема Self-Training
model = train(labeled_data) # шаг 1: учим на размеченных данных
for iteration in range(max_iters):
# шаг 2: предсказываем псевдо-метки
pseudo_labels = model.predict(unlabeled_data)
# шаг 3: фильтруем по уверенности
confident_samples = filter(pseudo_labels, threshold=0.95)
# шаг 4: переобучаем на расширенной выборке
model = train(labeled_data + confident_samples)
Главная опасность — confirmation bias (предвзятость подтверждения): если модель с самого начала ошиблась в псевдо-метке, она будет учиться на ошибке и уверенность в неправильном ответе будет только расти.
2. Consistency Regularization (Регуляризация согласованности)
Ключевая идея: слегка изменённый вход должен давать то же предсказание. В SSL-настройке аугментации используются, чтобы побуждать предсказания для неразмеченных данных быть «согласованными», то есть оставаться стабильными при небольших вариациях входного изображения, вне зависимости от конкретной метки.
Этот принцип лежит в основе:
- Π-Model — сравнивает предсказания двух аугментированных версий одного примера
- Temporal Ensembling — ансамблирует предсказания через несколько эпох
- Mean Teacher — поддерживает «учительскую» модель как экспоненциальное скользящее среднее весов «ученика»
3. Методы на графах (Graph-Based Methods)
Построим граф: вершины — все примеры (размеченные и нет), рёбра — схожесть между ними. Метки «распространяются» от размеченных вершин к неразмеченным через граф. Хорошо работает, когда геометрия данных чётко выражена.
FixMatch и MixMatch: современный взгляд
Среди алгоритмов последних лет особого внимания заслуживают MixMatch и FixMatch от Google Research.
MixMatch
MixMatch объединяет сразу несколько идей: аугментацию, sharpening предсказаний (снижение температуры распределения меток) и MixUp. Для каждого неразмеченного примера алгоритм усредняет предсказания по нескольким аугментациям, «заостряет» распределение и использует это как псевдо-метку.
FixMatch: простота как сила
FixMatch объединяет consistency regularization и pseudo-labeling в единый, простой SSL-фреймворк.
Алгоритм работает так:
- FixMatch сначала генерирует псевдо-метки, используя предсказания модели на слабо аугментированных неразмеченных изображениях. Псевдо-метка сохраняется только если модель выдаёт предсказание с высокой уверенностью. Затем модель обучается предсказывать эту псевдо-метку для сильно аугментированной версии того же изображения.
Weak Augmentation → Model Prediction → Pseudo-label (если conf > τ)
↓
Strong Augmentation → Model Output → Cross-Entropy Loss
На CIFAR-10 с всего 250 метками FixMatch достигает точности 94,93%, превосходя предыдущий рекорд в 93,73%. В экстремально скудном режиме — всего 4 метки на класс — FixMatch достигает 88,61% точности на CIFAR-10.
Сравнение ключевых SSL-алгоритмов
| Метод | Псевдо-метки | Consistency | MixUp | Порог уверенности | Сложность |
|---|---|---|---|---|---|
| Pseudo-Label | ✅ | ❌ | ❌ | Опционально | Низкая |
| Π-Model | ❌ | ✅ | ❌ | ❌ | Средняя |
| Mean Teacher | ❌ | ✅ | ❌ | ❌ | Средняя |
| MixMatch | ✅ | ✅ | ✅ | ❌ | Высокая |
| FixMatch | ✅ | ✅ | ❌ | ✅ | Низкая |
«FixMatch можно рассматривать как существенно упрощённую версию UDA и ReMixMatch, из которой убраны многие компоненты, но при этом достигается лучшее качество.» — обзор NeurIPS 2020
Общие приёмы для борьбы с confirmation bias
Среди свежих SSL-методов можно выделить общие темы, направленные на снижение confirmation bias: применение разнообразных шумов через продвинутые методы аугментации данных. При работе с изображениями эффективным инструментом аугментации является MixUp.
Помимо этого:
- Устанавливайте порог и отбрасывайте псевдо-метки с низкой уверенностью.
- Задавайте минимальное количество размеченных примеров в каждом мини-батче.
- «Заостряйте» распределение псевдо-меток, чтобы снизить перекрытие классов.
Где применяется SSL: реальные кейсы
SSL активно используется в самых разных областях:
- Медицинская аналитика изображений — выявление патологий на МРТ и КТ-снимках
- Классификация документов — автоматическая категоризация больших текстовых архивов
- Рекомендательные системы — персонализированные предложения на основе поведения пользователей
- Обнаружение аномалий — выявление нестандартного сетевого трафика и финансового мошенничества
- NLP — обучение чат-ботов и языковых моделей
- Автономные транспортные средства — обработка данных сенсоров для принятия решений
- Компьютерное зрение — распознавание лиц, рукописного текста, классификация изображений
Например, мониторинг водного биоразнообразия полагается на распознавание видов по изображениям. Хотя глубокое обучение упрощает этот процесс, производительность методов тесно связана с наличием крупных размеченных датасетов. SSL позволяет обойти это ограничение, используя огромные массивы неразмеченных фотографий.
Связь с Active Learning и Pre-training
SSL — не изолированный инструмент. Он хорошо сочетается с другими стратегиями:
Active learning можно дополнительно комбинировать с semi-supervised learning для экономии бюджета на разметку. Пример: алгоритм CEAL параллельно запускает два процесса — отбирает неопределённые примеры для ручной разметки и автоматически назначает псевдо-метки высокоуверенным примерам.
А предобучение (pre-training) с fine-tuning’ом — по сути тоже форма SSL: мощная универсальная модель предварительно обучается на большом неразмеченном корпусе (языковые модели — на свободном тексте, визуальные модели — на изображениях через self-supervised learning), а затем дообучается на небольшом наборе размеченных примеров.
graph LR
A[Размеченные данные\n100-1000 примеров] --> D[SSL-модель]
B[Неразмеченные данные\n10k-1M примеров] --> D
C[Pre-trained backbone\nResNet / BERT] --> D
D --> E[Высокое качество]
D --> F[Pseudo-labels\nдля следующей итерации]
F --> D
Заключение: когда выбирать SSL
Semi-Supervised Learning — это не серебряная пуля, но мощный инструмент при правильном применении. Вот итоговая шпаргалка:
Используйте SSL, если:
- У вас есть большой массив неразмеченных данных (≥10x к размеченным)
- Разметка дорога или медленна (медицина, юриспруденция, специализированные области)
- Данные удовлетворяют кластерному предположению (классы компактны в признаковом пространстве)
Будьте осторожны, если:
- Классы в данных плохо разделены
- Неразмеченных данных совсем мало
- Доменный сдвиг между размеченными и неразмеченными примерами велик
Серия «Learning with not Enough Data» от Лилиан Венг продолжается разбором Active Learning (Part 2) — как умно выбирать, что именно размечать. Следите за обновлениями на ai-uchi.ru.