Course
Разметка данных стоит дорого, занимает много времени, требует предметных знаний — и у большинства команд её недостаточно.
Размеченные данные для обучения модели нужны всегда, но корректная разметка требует времени и часто участия эксперта. Например, медицинские снимки размечают радиологи, а юридические документы — юристы. Даже простые задачи вроде анализа тональности требуют, чтобы кто-то вручную пометил каждый пример. В итоге у большинства ML-команд есть крошечный размеченный датасет и огромный массив неразмеченных данных, которые они не используют.
Полунаблюдаемое обучение решает проблему, обучаясь на обоих типах данных. Оно берёт ваш небольшой размеченный датасет, объединяет его с большим неразмеченным и позволяет модели выявлять закономерности.
В этой статье я разберу, как работает полунаблюдаемое обучение, опишу самые распространённые техники и покажу, когда их стоит применять.
Но что именно такое обучение с учителем? Прочитайте наш блог-пост, чтобы узнать, как работают ключевые алгоритмы обучения с учителем.
Что такое полунаблюдаемое обучение?
Полунаблюдаемое обучение — это подход машинного обучения, при котором модель обучается на смеси размеченных и неразмеченных данных.
Как следует из названия, оно находится между обучением с учителем и без учителя. Обучение с учителем требует разметки каждого примера. Обучение без учителя не использует разметку вовсе. Полунаблюдаемое обучение применяет небольшой набор размеченных примеров вместе с большим массивом неразмеченных.
Размеченные данные подсказывают модели, что искать. Неразмеченные — показывают, как устроены сами данные. В сочетании они дают модели больше информации, чем каждый тип по отдельности.
Как работает полунаблюдаемое обучение
Процесс начинается с небольшого размеченного датасета — возможно, пары сотен примеров с известными ответами.
Затем вы добавляете гораздо больший неразмеченный датасет. Это могут быть тысячи или даже миллионы примеров без меток. Модель использует эти неразмеченные данные, чтобы выучить скрытые закономерности и связи между объектами.
Затем размеченные примеры направляют эту структуру к верным ответам. Модель уже понимает организацию данных по неразмеченным образцам. Метки подсказывают, какие области структуры соответствуют каким выходам.
Короткий пример.
Допустим, вы классифицируете письма на спам и не спам. У вас есть 100 размеченных писем и 10 000 неразмеченных. Сначала модель учится группировать письма по словарным шаблонам и структуре. Затем с помощью 100 размеченных примеров выясняет, какие группы — спам, а какие — нет. В итоге модель работает лучше, чем если бы вы обучались только на этих 100 размеченных письмах.
Полунаблюдаемое vs обучение с учителем vs без учителя
Пройдёмся по каждому подходу, чтобы понять, где полунаблюдаемое обучение находится относительно двух других.
Обучение с учителем
Обучение с учителем использует полностью размеченные данные. У каждого примера есть вход и известный выход. Модель учится сопоставлять одно с другим.
Это отлично работает, когда у вас достаточно размеченных примеров. Но «достаточно» в зависимости от задачи может означать тысячи и даже миллионы образцов. Это дорого и порой попросту невозможно.
Обучение без учителя
Обучение без учителя вовсе не использует метки. Модель смотрит на «сырые» данные и сама находит структуру. Классические примеры — кластеризация и понижение размерности.
Плюс в том, что разметка не нужна. Минус — модель не знает, что именно вам важно. Она находит закономерности, но они могут не соответствовать вашей задаче.
Полунаблюдаемое обучение
Полунаблюдаемое обучение сочетает лучшее из обоих миров. Вы даёте модели небольшой размеченный датасет, чтобы определить задачу, и большой неразмеченный — чтобы изучить структуру данных.
Размеченные данные направляют модель в нужную сторону. Неразмеченные показывают, как разные примеры соотносятся друг с другом. Это сочетание часто превосходит обучение с учителем на том же небольшом наборе меток, поскольку модель улавливает паттерны, которые пропустила бы без неразмеченных данных.
Краткое сравнение этих трёх подходов:

Таблица сравнения подходов машинного обучения
Подытожим: если разметка занимает слишком много времени, а неразмеченных данных много, стоит присмотреться к полунаблюдаемому подходу. Далее покажу распространённые техники.
Распространённые техники полунаблюдаемого обучения
Есть несколько способов реализовать полунаблюдаемое обучение. Каждая техника по-своему использует разделение на размеченные и неразмеченные данные, пройдёмся по самым популярным.
Самообучение (self-training)
Это самый простой подход. Вы обучаете модель на размеченных данных, затем используете её для предсказания меток у неразмеченных примеров. Самые уверенные предсказания добавляются в размеченный набор как псевдометки, после чего вы переобучаете модель на расширенном датасете.
Процесс повторяется, пока модель не перестанет улучшаться или не закончатся неразмеченные данные. Реализовать просто, но если модель рано ошиблась, эта ошибка становится частью вашего датасета.
Совместное обучение (co-training)
Совместное обучение использует две модели вместо одной. Каждая обучается на своём «представлении» данных — по сути, на своём поднаборе признаков.
Например, при классификации веб-страниц одна модель может анализировать текст страницы, а другая — анкорный текст ссылок, указывающих на неё. Каждая модель размечает неразмеченные примеры для другой, и они обучают друг друга в несколько раундов.
Идея в том, что сильные стороны одной модели компенсируют слабые места другой. Если оба представления сами по себе информативны, совместное обучение может превзойти самообучение, потому что ошибки одной модели исправляются другой.
Распространение меток (label propagation)
В этом подходе строится граф, где каждой точке данных соответствует узел, а рёбра соединяют похожие точки. Метки затем «распространяются» от размеченных узлов к их соседям.
Предполагается, что похожие точки должны иметь одинаковую метку. Если рядом с размеченным примером находится кластер неразмеченных, велика вероятность, что они относятся к тому же классу. Метки распространяются по графу, пока каждый узел её не получит.
Это работает хорошо, когда у данных выраженная кластерная структура, но может давать сбои при размытых границах между классами.
Полунаблюдаемые нейросети
В глубоком обучении есть свой набор полунаблюдаемых техник. Вот пара самых распространённых:
- Регуляризация согласованности (consistency regularization): она заставляет модель выдавать одинаковый результат для входа даже после небольших возмущений, например шума или аугментации. Идея в том, что хорошая модель не должна менять предсказание из‑за лёгких изменений входа
- Псевдометки в нейросетях: это аналог самообучения на уровне батчей. Во время обучения модель порождает метки для неразмеченных примеров и использует их вместе с реальными метками в функции потерь.
Методы FixMatch и MixMatch комбинируют эти идеи и показывают хорошие результаты на бенчмарках с очень малым числом размеченных примеров.
Почему полунаблюдаемое обучение важно
Главная причина обратить внимание на полунаблюдаемое обучение — стоимость.
Разметка данных требует самих данных, экспертов по предметной области, времени и денег. Полунаблюдаемое обучение снижает затраты, извлекая больше пользы из меньшего числа меток.
Далее — качество. Модель, обученная на 500 размеченных и 50 000 неразмеченных примерах, часто превзойдёт такую же модель, обученную только на тех 500 размеченных. Неразмеченные данные дают более полное представление о распределении, что ведёт к лучшим предсказаниям.
И, наконец, реальность большинства датасетов. Неразмеченные данные повсюду. У каждой компании есть логи, изображения, документы и записи, на разметку которых ни у кого нет времени. Полунаблюдаемое обучение позволяет извлечь из них пользу.
Применения полунаблюдаемого обучения
Полунаблюдаемое обучение особенно востребовано там, где метки получить сложно.
Классификация изображений — один из самых частых кейсов. Разметка тысяч изображений утомительна, а собирать неразмеченные — легко. Полунаблюдаемые методы позволяют обучать точные классификаторы всего на нескольких сотнях размеченных снимков.
Классификация текстов — то же самое. У вас могут быть миллионы отзывов клиентов или тикетов поддержки, но лишь небольшая часть с ручной разметкой. Полунаблюдаемое обучение поможет построить классификаторы, обобщающие на весь датасет.
Распознавание речи — ещё одна интересная область. Ручная транскрибация аудио очень трудоёмка, а «сырого» аудио много. Неразмеченные записи помогают модели выучить акустические паттерны, а транскрибированные примеры — правильные соответствия.
Анализ медицинских данных — отличный предметно-специфичный кейс. Привлекать врача к разметке снимков или карт — дорого и медленно, у них есть более приоритетные задачи. При этом в больницах есть огромные массивы неразмеченных клинических данных. Полунаблюдаемые методы помогают строить диагностические модели без полностью размеченного набора.
Преимущества полунаблюдаемого обучения
Почему полунаблюдаемое обучение подходит многим проектам:
- Требует меньше разметки: можно получить хорошие результаты с долей меток, необходимых при полностью наблюдаемом подходе
- Улучшает обобщение: неразмеченные данные расширяют спектр примеров, помогая лучше работать на новых данных
- Экономически эффективно: когда разметка дорога или трудоёмка — а так бывает почти всегда — полунаблюдаемое обучение экономит время и бюджет, максимально используя уже имеющиеся данные
Так что если данных больше, чем меток, самое время рассмотреть полунаблюдаемое обучение.
Ограничения полунаблюдаемого обучения
У полунаблюдаемого обучения есть несколько компромиссов, о которых стоит знать.
- Качество неразмеченных данных важно: если неразмеченные данные не из того же распределения, что и размеченные, модель выучит неверные паттерны
- Неверные псевдометки: в методах вроде самообучения уверенное, но неверное предсказание принимается за истину. Модель обучается на плохой метке, закрепляя ошибку и ухудшая дальнейшие предсказания
- Сложнее, чем обучение с учителем: больше гиперпараметров, больше проектных решений и больше потенциальных сбоев. Модель с учителем проще построить и объяснить. Полунаблюдаемые методы добавляют сложность, которая не всегда оправдана — особенно если ваш размеченный датасет уже достаточно велик
Ничего критичного, но о них стоит помнить до начала работ.
Полунаблюдаемое обучение на практике (пример на Python)
Посмотрим полунаблюдаемое обучение в действии на простом примере на Python с алгоритмом scikit-learn LabelSpreading.
Я создам датасет, размечу лишь небольшую часть и позволю модели восстановить остальное.
Подготовка данных
Сначала сгенерирую датасет и замаскирую большую часть меток, чтобы смоделировать полунаблюдаемый сценарий:
import numpy as np
from sklearn.datasets import make_moons
from sklearn.semi_supervised import LabelSpreading
from sklearn.metrics import accuracy_score
# Generate a dataset with 500 samples
X, y_true = make_moons(n_samples=500, noise=0.2, random_state=42)
# Keep only 10%, mask the rest as -1
rng = np.random.RandomState(42)
labeled_idx = rng.choice(500, size=50, replace=False)
y_train = np.full(500, -1) # -1 means unlabeled in scikit-learn
y_train[labeled_idx] = y_true[labeled_idx]
print(f"Labeled samples: {np.sum(y_train != -1)}")
print(f"Unlabeled samples: {np.sum(y_train == -1)}")

Количество размеченных и неразмеченных примеров
В scikit-learn значение -1 помечает образец как неразмеченный. Из 500 примеров только 50 имеют метки. Остальные 450 модель должна восстановить.
Обучение и предсказание
Теперь обучу модель LabelSpreading и проверю, насколько хорошо она размечает неразмеченные данные:
model = LabelSpreading(kernel="knn", n_neighbors=7)
model.fit(X, y_train)
y_pred = model.transduction_
# Check accuracy on the originally unlabeled samples
unlabeled_mask = y_train == -1
accuracy = accuracy_score(y_true[unlabeled_mask], y_pred[unlabeled_mask])
print(f"Accuracy on unlabeled samples: {accuracy:.2%}")

Точность на неразмеченных примерах
Модель верно разметила большинство неразмеченных примеров, имея лишь 10% размеченных данных. В этом и суть подхода.
Визуализация результатов
Точность высокая — почти 96%, но давайте визуально посмотрим, какие примеры были классифицированы неверно:

Истинные и предсказанные метки
Предсказанные метки практически полностью совпадают с истинными, хотя модель видела лишь 50 размеченных примеров из 500. На правом графике красным выделены ошибочно классифицированные точки.
Типичные ошибки при полунаблюдаемом обучении
Вы увидели, насколько мощным может быть полунаблюдаемое обучение, но оно подходит не всегда. Вот самые частые ошибки и способы их избежать.
- Предположение, что неразмеченные данные всегда помогают: это не так. Если неразмеченные данные из другого распределения, чем размеченные, модель выучит паттерны, не относящиеся к вашей задаче. Всегда проверяйте, что размеченные и неразмеченные данные происходят из одного источника и описывают одну и ту же проблему
- Плохая начальная модель: полунаблюдаемые методы опираются на первоначальную модель с учителем. Если она слаба — обучена на слишком малом числе примеров или с неудачными гиперпараметрами — все следующие шаги унаследуют эти проблемы. Начните с максимально сильной базовой модели с учителем, прежде чем добавлять неразмеченные данные
- Чрезмерная уверенность в псевдометках: качество псевдометок не выше качества модели, которая их сгенерировала. Если доверять всем псевдометкам подряд, ошибки будут накапливаться от раунда к раунду. Задайте высокий порог уверенности и используйте только те псевдометки, в которых модель действительно уверена. Остальные отбрасывайте
- Игнорирование распределения данных: полунаблюдаемые методы предполагают, что структура неразмеченных данных несёт полезную информацию о метках. Если у данных нет чётких кластеров или гладких границ решений, это предположение не выполняется
Чтобы избежать этих ошибок, начните с сильной базовой модели с учителем, добавляйте неразмеченные данные постепенно и на каждом шаге проверяйте, что качество действительно растёт.
Когда использовать полунаблюдаемое обучение
Полунаблюдаемое обучение уместно в трёх случаях:
- Когда размеченных данных мало: если у вас небольшой размеченный датасет, а получение новых меток дорого или медленно, полунаблюдаемое обучение поможет «выжать» дополнительную точность
- Когда неразмеченных данных много: нужен большой объём неразмеченных данных. Если их мало, модель не успеет выучить достаточно структуры, чтобы это имело значение. Чем больше разрыв между размеченным и неразмеченным наборами, тем больше пользы от полунаблюдаемых методов
- Когда у данных есть чёткая структура: полунаблюдаемое обучение лучше всего работает, когда похожие точки имеют одинаковую метку. Если данные образуют кластеры или между классами есть плавные границы, неразмеченные данные сделают эти паттерны очевиднее. Если классы перемешаны без явного разделения, вклад неразмеченных данных будет невелик.
Если выполняются все три условия, полунаблюдаемое обучение точно стоит попробовать.
Заключение
Проще говоря, полунаблюдаемое обучение позволяет обучать более качественные модели без тотальной разметки. Вы берёте небольшой размеченный датасет, дополняете его большим неразмеченным и позволяете модели учиться на обоих.
Преимущества очевидны: меньше времени на разметку, быстрее вывод на рынок, ниже затраты и лучшее качество по сравнению с обучением только на ограниченных метках. А в областях вроде медицины, права и NLP, где разметка требует экспертов, это особенно важно.
Если у вас много неразмеченных данных, попробуйте полунаблюдаемое обучение. Начните с хорошей базовой модели с учителем, выберите технику, подходящую структуре ваших данных, и измерьте, действительно ли неразмеченные данные помогают. LabelSpreading из scikit-learn — хороший первый эксперимент, но поэкспериментируйте и с FixMatch, MixMatch.
Если вы хотите быть востребованными на рынке в 2026 году, пройдите наш трек Machine Learning Engineer. Он охватывает всё — от основ до MLOps.
FAQs
Что такое полунаблюдаемое обучение?
Полунаблюдаемое обучение — это подход машинного обучения, при котором модели обучаются на небольшом наборе размеченных данных и большом наборе неразмеченных. Размеченные данные подсказывают модели, что искать, а неразмеченные помогают понять общую структуру. Так вы получаете лучшие результаты, чем при обучении только на размеченных данных.
Чем полунаблюдаемое обучение отличается от обучения с учителем и без учителя?
Обучение с учителем использует только размеченные данные, где у каждого примера известен выход. Обучение без учителя использует только неразмеченные данные и само находит паттерны. Полунаблюдаемое обучение использует небольшой размеченный набор для определения задачи и большой неразмеченный — для изучения структуры данных.
Когда мне следует использовать полунаблюдаемое обучение?
Используйте его, когда у вас мало размеченных данных, много неразмеченных и у данных есть явная структура — например, естественные кластеры или плавные границы между классами. Если разметка дорога или требует экспертов — как в медицинской визуализации или анализе юридических текстов — полунаблюдаемое обучение помогает строить точные модели без тотальной разметки.
Что такое самообучение (self-training) в полунаблюдаемом обучении?
Самообучение — это техника, при которой модель сначала обучается на размеченных данных, а затем предсказывает метки для неразмеченных примеров. Самые уверенные предсказания добавляются в размеченный набор как псевдометки, и модель переобучается на расширенном датасете. Риск в том, что ранние ошибки могут закрепиться в последующих раундах, поэтому задавайте высокий порог уверенности.