Supervised vs Unsupervised 🏷️
В прошлом уроке ты увидел общую карту задач машинного обучения: обучение с учителем, обучение без учителя и обучение с подкреплением — три разных способа заставить модель чему-то научиться на данных. Классификация и регрессия, с которыми ты подробно разобрался, — это два лица одной и той же медали, обучения с учителем: в обоих случаях у каждого примера в обучающих данных есть известный правильный ответ, и задача модели — научиться предсказывать этот ответ по признакам. Но эта карта была обзорной, крупным планом на весь ландшафт сразу. В этом уроке мы возьмём лупу и подробно разберём главный водораздел машинного обучения — тот самый критерий, который на практике определяет, каким инструментом ты вообще можешь воспользоваться для конкретной задачи: есть ли у тебя размеченные данные с известными правильными ответами или нет.
Этот вопрос звучит просто, но именно он в 90% случаев определяет весь дальнейший путь проекта в реальной работе специалиста по данным. Если у тебя есть тысячи писем, про каждое из которых точно известно «спам» или «не спам», перед тобой открыт весь арсенал обучения с учителем — от логистической регрессии до градиентного бустинга. Если у тебя миллион кликов пользователей по товарам интернет-магазина без единой метки о том, «какие пользователи похожи друг на друга», ты автоматически оказываешься в мире обучения без учителя — кластеризации, поиска структуры, снижения размерности. А что делать, если у тебя есть немного размеченных примеров и океан неразмеченных данных вокруг них? Или если разметки нет вообще, но данные сами по себе настолько богаты структурой, что модель может придумать себе задачу самостоятельно? Именно на эти вопросы отвечают два инструмента, которым посвящена значительная часть этого урока, — полу-контролируемое обучение и самообучение.
Последнее — самообучение (self-supervised learning) — заслуживает у тебя особого внимания не потому, что это модная аббревиатура, а потому, что это буквально то, как в реальности обучаются GPT-подобные большие языковые модели, с которыми ты, скорее всего, взаимодействуешь каждый день. Никто не нанимал миллионы людей, чтобы вручную разметить триллионы слов текста из интернета правильными метками для языковой модели. Вместо этого модель сама превращает обычный, никем не размеченный текст в бесконечный поток заданий «с учителем»: возьми любой фрагмент текста, спрячь от модели следующее слово, попроси её угадать — а правильный ответ уже лежит в самом тексте, его не нужно было размечать отдельно. Это один из важнейших концептуальных сдвигов в машинном обучении последнего десятилетия, и разобраться в нём стоит не вскользь, а по-настоящему подробно.
Для полноты картины в этом уроке будет и обучение с подкреплением (reinforcement learning) — третья парадигма из прошлого урока, где вместо правильного ответа модель получает лишь сигнал вознаграждения за свои действия. Это отдельная и обширная тема, ей будет посвящён отдельный урок дальше в курсе, поэтому здесь мы коснёмся её кратко, ровно настолько, чтобы завершить общую картину и показать, чем в корне отличается «учиться на правильных ответах» от «учиться методом проб и вознаграждений». А в конце урока — и это, пожалуй, самый практически полезный раздел — ты получишь чёткий критерий: как за несколько вопросов о своих данных быстро определить, какой тип обучения вообще применим к задаче, с которой ты столкнулся.
История
Разделение методов машинного обучения на «с учителем» и «без учителя» появилось не как единая теория, а как результат слияния двух исторически независимых традиций. Первая, восходящая к статистике начала XX века, — это поиск структуры в данных без всякой привязки к предсказанию конкретной метки. В 1901 году британский статистик Карл Пирсон предложил метод главных компонент (principal component analysis, PCA) — способ найти оси наибольшей изменчивости в многомерных данных без единого понятия «правильного ответа»: с формальной точки зрения это самый ранний из широко известных методов обучения без учителя, хотя термин «машинное обучение» появится лишь полвека спустя. Вторая традиция — распознавание образов по размеченным примерам — оформилась в статистике классификации: в 1936 году Рональд Фишер опубликовал линейный дискриминантный анализ, метод, который по размеченным измерениям (например, длине и ширине лепестков трёх видов ирисов) строит правило для классификации новых, ещё не размеченных цветков. Это, по сути, обучение с учителем задолго до вычислительных машин, способных его автоматизировать.
Сами термины «supervised learning» и «unsupervised learning» закрепились в литературе по распознаванию образов и нейронным сетям в 1950–60-х годах, когда исследователи стали явно противопоставлять два режима обучения перцептронов и других ранних моделей: обучение с «учителем», подсказывающим правильный выход на каждом шаге, и обучение без него, когда сеть должна сама выявлять закономерности во входных сигналах — в духе принципа обучения Дональда Хебба 1949 года, где связи между нейронами усиливаются просто от совместной активности, без какой-либо внешней метки правильности. Формальную статистическую базу под обучение с учителем в 1960–90-х годах подвёл Владимир Вапник вместе с Алексеем Червоненкисом, разработав теорию статистического обучения и понятие VC-размерности — строгий математический аппарат, объясняющий, когда и почему модель, обученная на конечном размеченном наборе примеров, вообще способна обобщаться на новые данные.
Полу-контролируемое обучение оформилось как отдельное направление в середине 1960-х: в 1965 году Х. Дж. Скаддер предложил метод самообучения через псевдоразметку (self-training) — обучить модель на немногих размеченных примерах, дать ей самой разметить часть неразмеченных данных, а затем дообучиться уже и на этой псевдоразметке. Самообучение (self-supervised learning) как отдельный, явно названный термин распространилось значительно позже, во второй половине 2010-х годов, во многом благодаря публичным выступлениям Яна Лекуна, назвавшего его «тёмной материей интеллекта» — той огромной массой обучающего сигнала, которая скрыта в самих неразмеченных данных и не требует ручной разметки человеком. Решающим для всей современной эпохи языковых моделей стал 2018 год: статья Alec Radford и коллег из OpenAI «Improving Language Understanding by Generative Pre-Training» показала, что модель, предобученная на огромном неразмеченном корпусе текста через задачу предсказания следующего слова, а затем дообученная на сравнительно небольшом размеченном наборе под конкретную задачу, превосходит модели, обученные с нуля только на размеченных данных. В том же году исследователи Google представили BERT с похожим, но чуть иным self-supervised заданием — предсказанием замаскированных слов внутри предложения. Именно эта связка — самообучение на огромном неразмеченном тексте плюс сравнительно небольшая дообучающая надстройка — и стала архитектурным шаблоном, на котором построены все современные большие языковые модели, включая те, с которыми ты, возможно, разговариваешь прямо сейчас.
Обучение с учителем: как модель учится на готовых ответах
Интуиция
Представь репетитора, который выдаёт тебе сборник задач вместе с ответами в конце учебника. Ты решаешь задачу, сверяешься с ответом, видишь, где ошибся, корректируешь свой подход — и так сотни раз подряд, пока не начнёшь решать похожие задачи правильно даже без подглядывания в ответы. Обучение с учителем устроено ровно так же, только «учеником» выступает математическая модель, а «сборником задач с ответами» — обучающий датасет, где для каждого примера заранее известен правильный ответ. Модель не запоминает конкретные примеры дословно (это было бы бесполезно для новых задач) — она подстраивает свои внутренние параметры так, чтобы систематически минимизировать разницу между своими предсказаниями и известными правильными ответами, и в процессе улавливает закономерность, которая обобщается на ещё не виденные примеры.
Формальное определение
Обучение с учителем (supervised learning). Парадигма машинного обучения, в которой модель обучается на наборе размеченных пар $\{(x_1, y_1), (x_2, y_2), \dots, (x_n, y_n)\}$, где $x_i$ — вектор признаков объекта, а $y_i$ — известный правильный ответ (метка) для этого объекта, с целью найти функцию $f: X \to Y$, минимизирующую ошибку предсказания на новых, ранее не виденных объектах. Если $y$ принимает значения из конечного набора категорий, задачу называют классификацией; если $y$ — непрерывное число, задачу называют регрессией.
Ключевое слово здесь — «известный правильный ответ для каждого объекта обучающей выборки». Не «примерно понятно», не «предположительно», а конкретное, заранее зафиксированное значение $y_i$, с которым модель может напрямую сравнить своё предсказание $\hat{y}_i$ и вычислить числовую ошибку — именно эта ошибка, усреднённая по всем примерам, и есть то, что модель минимизирует в процессе обучения.
Примеры
Пример 1: диагностика по медицинским снимкам. Радиологическая клиника накопила 50 тысяч рентгеновских снимков грудной клетки, для каждого из которых врач в своё время поставил диагноз — «пневмония присутствует» или «пневмония отсутствует». Это классическая задача классификации с учителем: признаки $x$ — пиксели снимка (или признаки, извлечённые из них свёрточной сетью), метка $y$ — бинарный диагноз врача. Модель обучается минимизировать долю ошибочных диагнозов на этих 50 тысячах примеров, а затем применяется к новым снимкам, диагноз по которым ещё не поставлен. Важно понимать источник меток здесь: это не абстрактная «истина», а конкретное решение конкретного врача в конкретный момент — если врачи ошибались систематически, модель унаследует эти ошибки.
Пример 2: кредитный скоринг. Банк хочет предсказывать вероятность того, что заявитель на кредит не вернёт долг. Обучающие данные — это исторические заявки прошлых лет, для каждой из которых уже известен фактический исход: вернул клиент кредит вовремя или допустил дефолт. Признаки $x$ — возраст, доход, кредитная история, сумма запрошенного кредита; метка $y$ — бинарный факт дефолта. Модель, обученная на этих исторических парах (заявка, исход), затем применяется к новым заявкам, по которым исход ещё не наступил и наступит только через месяцы или годы — обучение с учителем в этом смысле буквально переносит знание из прошлого в предсказание будущего.
Пример 3: прогноз спроса в рознице. Сеть магазинов хочет заранее знать, сколько единиц конкретного товара продастся на следующей неделе, чтобы правильно спланировать поставки. Здесь метка $y$ — непрерывное число (количество проданных единиц), значит это регрессия, а не классификация. Признаки $x$ — исторические продажи этого товара за прошлые недели, сезон, цена, наличие акции, погода. Обучающие пары строятся автоматически из истории продаж: каждую прошедшую неделю, для которой уже известны признаки и фактические продажи, можно использовать как обучающий пример — метку здесь не нужно было размечать вручную, она сама естественным образом появилась из уже свершившихся продаж.
Почему это важно
Обучение с учителем сегодня — самая зрелая и наиболее широко используемая в промышленности парадигма машинного обучения именно потому, что у неё есть чёткий, измеримый критерий успеха: точность предсказания метки, которую можно вычислить объективно, без субъективной интерпретации результата человеком. Если модель классификации спама ошибается в 2% случаев, это конкретное, проверяемое число, которое можно сравнивать между разными версиями модели, отслеживать во времени и использовать как критерий для запуска модели в продакшен. Именно эта измеримость делает обучение с учителем предпочтительным выбором всегда, когда размеченные данные вообще доступны или их можно получить по приемлемой цене — а следующие уроки курса, посвящённые линейной и логистической регрессии, деревьям решений и ансамблям, будут разбирать именно этот тип обучения в деталях.
Обучение без учителя: как модель ищет структуру сама
Интуиция
Теперь представь противоположную ситуацию: тебе выдали не сборник задач с ответами, а огромную кучу документов без единой подсказки, о чём они и как их классифицировать. Единственное, что ты можешь сделать, — читать документы, сравнивать их друг с другом и постепенно замечать, что часть из них явно похожа между собой по стилю и содержанию, а часть — совсем другая. Ты можешь разложить документы по стопкам «похожих друг на друга» — но названия этим стопкам, если они вообще нужны, придётся придумывать самому, потому что никакого готового правильного ответа о «правильной» группировке никогда не существовало. Обучение без учителя устроено именно так: модели дают только признаки объектов $X$, без каких-либо меток $y$, и просят найти скрытую структуру — группы похожих объектов, направления наибольшей изменчивости данных или примеры, которые резко выбиваются из общей картины.
Формальное определение
Обучение без учителя (unsupervised learning). Парадигма машинного обучения, в которой модель обучается только на признаках объектов $X = \{x_1, x_2, \dots, x_n\}$, без каких-либо сопутствующих меток, с целью выявить скрытую структуру данных — сгруппировать похожие объекты (кластеризация), найти низкоразмерное представление, сохраняющее основную изменчивость данных (снижение размерности), или обнаружить объекты, статистически резко отличающиеся от общей массы (поиск аномалий).
Обрати внимание на принципиальное отличие от предыдущего раздела: здесь нет числа $y_i$, с которым можно было бы напрямую сравнить предсказание модели, а значит нет и прямого, однозначного критерия «правильно/неправильно» для отдельного объекта. Качество результата в обучении без учителя оценивается иначе — через внутренние метрики структуры данных (например, насколько плотно сгруппированы объекты внутри кластера относительно расстояния между кластерами) или через то, насколько полезной оказывается найденная структура для последующей задачи.
Примеры
Пример 1: сегментация клиентов интернет-магазина. У магазина есть данные о поведении сотен тысяч покупателей — частота покупок, средний чек, категории товаров, время последней покупки — но никакой заранее известной «правильной» группировки клиентов не существует в природе. Алгоритм кластеризации (например, метод k-средних) разбивает клиентов на группы со схожим поведением: скажем, окажется, что естественно выделяются группы «частые покупатели с небольшим чеком», «редкие, но крупные покупки» и «клиенты, давно не заходившие в магазин». Маркетологи затем сами интерпретируют смысл каждой группы и придумывают под неё персонализированную рассылку — алгоритм нашёл структуру, но осмысление этой структуры осталось задачей человека.
Пример 2: поиск аномалий в промышленном оборудовании. На заводе установлены датчики, непрерывно снимающие показания температуры, вибрации и давления с производственной линии. Поломки случаются редко и непредсказуемо, и заранее размеченных примеров «вот так выглядели показания прямо перед поломкой» либо очень мало, либо нет вовсе — а значит для классического обучения с учителем просто недостаточно материала. Алгоритм поиска аномалий строит модель «нормального» поведения показаний по огромному массиву штатной работы оборудования и затем сигнализирует, когда текущие показания статистически значимо отклоняются от этой нормы — задолго до того, как накопится достаточно размеченных примеров реальных поломок.
Пример 3: снижение размерности данных экспрессии генов. В биоинформатике измерения активности тысяч генов для каждой клетки образуют пространство из тысяч признаков — визуализировать или анализировать такие данные напрямую невозможно. Метод главных компонент (PCA) или более современный t-SNE сжимают это пространство до двух-трёх измерений, сохраняя при этом основную структуру различий между клетками, — на итоговой визуализации исследователи часто видят чёткие скопления точек, которые затем оказываются соответствующими разным типам клеток, хотя алгоритм снижения размерности вообще ничего не знал о биологии и работал исключительно с числами.
Почему это важно
Обучение без учителя незаменимо ровно в тех ситуациях, где обучение с учителем бессильно в принципе — когда меток нет, получить их дорого или сама постановка задачи не предполагает единственного «правильного» ответа. Оно также часто выступает предварительным шагом перед обучением с учителем: снижение размерности убирает избыточные признаки и ускоряет последующее обучение, а кластеризация может подсказать, какие подгруппы данных стоит анализировать раздельно. И, забегая вперёд, именно принцип «искать структуру в данных без явной ручной разметки» — общий корень, из которого выросло самообучение, разбираемое чуть ниже в этом уроке.
Полу-контролируемое обучение: когда разметки мало, а данных много
Интуиция
Представь, что тебе всё-таки выдали сборник задач с ответами — но ответы приведены только для первых десяти задач из тысячи. Разумная стратегия — не выбрасывать оставшиеся 990 задач как бесполезные, а сначала выучить закономерность на этих десяти, затем попробовать применить получившееся понимание к оставшимся задачам, а после — использовать свои же ответы на них (те, в которых ты достаточно уверен) как дополнительный, пусть и менее надёжный, материал для дальнейшего обучения. Именно так работает полу-контролируемое обучение (semi-supervised learning): оно использует одновременно небольшой размеченный набор данных и значительно больший неразмеченный, извлекая пользу из обоих источников сразу, вместо того чтобы полагаться исключительно на дефицитную разметку.
Формальное определение
Полу-контролируемое обучение (semi-supervised learning). Парадигма машинного обучения, в которой модель обучается на смеси небольшого размеченного набора $\{(x_1, y_1), \dots, (x_l, y_l)\}$ и значительно большего неразмеченного набора $\{x_{l+1}, \dots, x_{l+u}\}$, где $u \gg l$, с целью получить модель, которая работает точнее, чем при обучении только на размеченных $l$ примерах, за счёт дополнительной информации о структуре данных, заключённой в неразмеченной части.
Примеры
Пример 1: разметка медицинских снимков МРТ. Пригласить квалифицированного радиолога для разметки тысяч снимков — дорогое и медленное удовольствие, поэтому у клиники обычно есть лишь несколько сотен размеченных примеров и десятки тысяч неразмеченных. Метод самообучения (self-training) сначала обучает модель на размеченных примерах, затем применяет её к неразмеченным снимкам, отбирает те предсказания, в которых модель наиболее уверена, добавляет их как «псевдоразметку» к обучающему набору и повторяет обучение уже на расширенном датасете.
Пример 2: классификация языка веб-страниц. У поисковой системы есть несколько тысяч страниц, для которых язык проверен вручную, и миллиарды страниц без такой проверки. Полу-контролируемые методы используют структуру неразмеченных данных (например, схожесть страниц по используемым словам и их совместной встречаемости), чтобы «распространить» разметку от немногих проверенных примеров на похожие непроверенные — подход называется распространением меток (label propagation).
Пример 3: распознавание речи с малым числом расшифровок. Транскрибация аудио в текст вручную стоит дорого и занимает много времени, поэтому у компании может быть 50 часов точно расшифрованного аудио и 5000 часов нерасшифрованного. Модель, предобученная на неразмеченном аудио и дообученная на 50 размеченных часах, систематически превосходит модель, обученную исключительно на этих 50 часах без привлечения остального массива.
Почему это важно
Полу-контролируемое обучение — это практичный компромисс для той крайне распространённой в реальной работе ситуации, когда данных много, а размечать их либо дорого (труд экспертов — врачей, юристов, переводчиков), либо долго. Оно позволяет не выбирать между «обучиться плохо на малом размеченном наборе» и «заплатить неподъёмную цену за разметку всего массива», а получить заметную часть выгоды от полного датасета почти бесплатно.
Самообучение: как на самом деле обучаются языковые модели
Интуиция
Самообучение (self-supervised learning) решает задачу отсутствия разметки радикально иначе, чем полу-контролируемое обучение: оно не пытается растянуть немногочисленную разметку на весь массив данных, а вовсе обходится без разметки, созданной человеком, — модель сама придумывает себе учебное задание, ответ на которое уже спрятан внутри тех же самых данных. Представь, что тебе дали книгу и попросили закрыть ладонью последнее слово на каждой странице перед тем, как его прочитать, — и каждый раз пытаться угадать, что там написано, прежде чем убрать руку и проверить себя. Никто не составлял для тебя отдельный «правильный ответ» — правильный ответ всегда был частью самой книги, просто ты сам организовал процесс так, чтобы регулярно проверять свои предсказания. Именно это и делает современная языковая модель с миллиардами и триллионами слов текста: она не нуждается в человеке, который скажет ей правильный ответ, потому что правильный ответ — это буквально следующее слово в том же самом тексте.
Формальное определение
Самообучение (self-supervised learning). Парадигма машинного обучения, в которой обучающий сигнал (метки) конструируется автоматически из самих неразмеченных данных с помощью вспомогательной задачи (pretext task) — например, предсказания скрытой части входа по остальной его части, — без какого-либо ручного труда человека по разметке; полученная модель затем, как правило, дообучается (fine-tuning) на сравнительно небольшом размеченном наборе под конкретную целевую задачу.
Формально задача выглядит как обычное обучение с учителем — есть вход, есть целевой «ответ», есть функция потерь, которую нужно минимизировать. Разница исключительно в происхождении этого «ответа»: в классическом supervised learning метку присвоил человек-разметчик, а в self-supervised learning метка автоматически извлечена из структуры самих данных без единого часа ручного труда.
Примеры
Пример 1: предсказание следующего токена (GPT и причинное языковое моделирование). Возьми любое предложение из интернета, например «Столица Франции — Париж». Модель типа GPT учится решать миллиарды однотипных мини-задач: по фрагменту «Столица Франции —» предсказать следующее слово «Париж». Этот «правильный ответ» не размечал ни один человек — он просто уже был в исходном тексте, а модель научилась превращать любой достаточно длинный текст в последовательность таких заданий «предскажи следующий токен по всем предыдущим». Именно эта задача — причинное языковое моделирование (causal language modeling) — и есть self-supervised объектив, на котором предобучаются GPT-подобные модели на триллионах токенов текста, кода и других данных, собранных из интернета, книг и других источников, без единого часа ручной разметки конкретно под эту задачу.
Пример 2: маскированное языковое моделирование (BERT). Вместо того чтобы предсказывать только следующее слово, BERT случайным образом «прячет» (маскирует) около 15% слов внутри предложения и учится восстанавливать именно их, опираясь на слова как слева, так и справа от пропуска — двунаправленный контекст. Из предложения «Кошка [MASK] на подоконнике» модель должна предсказать «сидела» или похожее по смыслу слово, снова используя в качестве правильного ответа само исходное, неразмеченное предложение.
Пример 3: контрастивное обучение для изображений (SimCLR, CLIP). Здесь pretext-задача устроена иначе: возьми одну фотографию, примени к ней две разные случайные аугментации (обрезка, поворот, изменение цвета) и получи две «похожие» версии одной и той же картинки. Модель учится располагать представления этих двух версий близко друг к другу в пространстве признаков, а представления случайно взятых других фотографий — далеко. Никакой человек не размечал «это кошка, а это собака» — единственный обучающий сигнал заключается в том, что модель заранее знает: две аугментации одной фотографии должны быть похожи между собой сильнее, чем на случайную другую фотографию. Модель CLIP расширяет эту же идею на пары «изображение — подпись к нему», взятые прямо из интернета: сами подписи к фотографиям, которые люди и так публично оставили в сети, служат бесплатным источником соответствий между картинкой и текстом, без отдельной ручной разметки категорий.
Пример 4: автокодировщики (autoencoders). Более раннее и концептуально простое воплощение той же идеи: модель сжимает входные данные в компактное представление, а затем пытается восстановить из него исходные данные как можно точнее. «Правильный ответ» для сравнения — это просто сам исходный вход, снова не требующий отдельной ручной разметки. Разница с GPT и BERT — в характере pretext-задачи (восстановление всего входа целиком против предсказания скрытой его части), но принцип идентичен: обучающий сигнал берётся из самих данных.
Почему это важно
Самообучение — это концептуальный сдвиг, который сделал возможным обучение моделей на масштабе, немыслимом для классического supervised learning. Ручная разметка триллионов слов текста человеком физически невозможна ни при каком бюджете — а self-supervised pretraining превращает весь текст интернета в источник бесплатного обучающего сигнала. Именно поэтому современная разработка больших языковых моделей строится в два принципиально разных этапа: сначала self-supervised предобучение на гигантском неразмеченном корпусе (модель учится языку, фактам о мире и базовым закономерностям через предсказание следующего токена), а затем сравнительно небольшой этап supervised fine-tuning на размеченных парах «инструкция — качественный ответ», подготовленных людьми, и часто ещё один этап обучения с подкреплением от обратной связи людей (RLHF), о котором чуть ниже. Понимание этого двухэтапного процесса — не факультативная деталь, а один из важнейших концептуальных инструментов для любого, кто сегодня работает с прикладным машинным обучением: он объясняет и то, почему языковые модели «знают» огромное количество фактов, которым их никто явно не учил, и то, почему они всё равно нуждаются в дополнительном, куда более дорогом этапе дообучения, чтобы вести себя как полезный, послушный инструкциям помощник, а не просто продолжатель текста.
Обучение с подкреплением: коротко, для полноты картины
Интуиция
В отличие от обучения с учителем, где модель на каждом шаге получает готовый правильный ответ, и от обучения без учителя, где нет вообще никакого внешнего сигнала о качестве, обучение с подкреплением (reinforcement learning) стоит на третьей, промежуточной по природе позиции: агент не знает заранее «правильного» действия в каждой ситуации, но после серии действий получает вознаграждение — число, показывающее, насколько хорошо или плохо всё сложилось, часто с задержкой и без разбивки на вклад каждого отдельного шага.
Формальное определение
Обучение с подкреплением (reinforcement learning). Парадигма машинного обучения, в которой агент взаимодействует со средой через последовательность состояний $s$ и действий $a$, получая после каждого действия сигнал вознаграждения $r$, и обучается стратегии (политике) $\pi: S \to A$, максимизирующей ожидаемую суммарную награду за весь эпизод взаимодействия, а не за отдельно взятый шаг.
Примеры
Пример 1: самообучение в настольных играх. Система AlphaZero играет сама с собой миллионы партий в го, не имея ни одного человеческого «правильного хода» в обучающих данных — она получает награду +1 за победу и -1 за поражение по итогам целой партии и постепенно выучивает стратегию, которая систематически приводит к победе.
Пример 2: робот, учащийся захватывать предметы. Манипулятор пробует разные траектории движения и получает вознаграждение только в момент успешного захвата предмета — никто не объясняет роботу заранее, какой угол наклона схвата «правильный» для каждого отдельного предмета, он выучивает это методом проб и накопления опыта.
Пример 3: RLHF — дообучение языковых моделей обратной связью людей. После self-supervised предобучения и supervised fine-tuning языковую модель часто дообучают ещё одним этапом — Reinforcement Learning from Human Feedback. Люди сравнивают пары ответов модели и отмечают, какой из них лучше; на этих сравнениях обучается отдельная модель вознаграждения, а затем сама языковая модель дообучается методом обучения с подкреплением так, чтобы максимизировать оценку этой модели вознаграждения. Заметь, что и здесь нет единственного «правильного ответа» для каждого запроса — есть только сигнал относительного предпочтения, из которого модель выучивает более полезное и приятное для человека поведение.
Почему это важно
Обучение с подкреплением — отдельная и весьма обширная парадигма, требующая своего собственного словаря понятий (среда, состояние, политика, функция ценности) и своих алгоритмов, поэтому основной, подробный разговор о нём этот курс отложит до отдельного урока. Здесь важно зафиксировать главное отличие: в обучении с подкреплением сигнал качества — это не заранее известный правильный ответ на конкретный вход, а вознаграждение за последовательность решений, зачастую отложенное и зависящее от всей цепочки действий целиком, а не от одного изолированного шага.
Как выбрать нужный тип обучения для своей задачи
Главный практический критерий, который определяет весь дальнейший выбор, — это наличие или отсутствие размеченных данных и то, во сколько обходится их получение. Прежде чем открывать учебник по конкретным алгоритмам, стоит задать себе последовательность простых вопросов о собственных данных.
Есть ли у тебя для каждого объекта известный правильный ответ, который ты хочешь предсказывать для новых объектов? Если да и таких размеченных примеров достаточно много — перед тобой обучение с учителем, а дальнейший выбор между классификацией и регрессией определяется лишь тем, дискретна целевая переменная или непрерывна.
Меток нет вообще, а задача заключается в том, чтобы найти скрытые группы, закономерности или необычные объекты в данных, а не предсказать конкретное заранее известное значение? Это обучение без учителя — конкретный алгоритм (кластеризация, снижение размерности, поиск аномалий) зависит от того, что именно ты хочешь получить на выходе.
Есть немного размеченных данных и значительно больше неразмеченных, а получить дополнительную разметку дорого или медленно? Стоит рассмотреть полу-контролируемое обучение, чтобы использовать неразмеченный массив в дополнение к дефицитной разметке, а не отбрасывать его.
Данных много, но разметка отсутствует полностью, и при этом сами данные обладают богатой внутренней структурой (текст, изображения, аудио, где часть данных естественным образом предсказывает другую их часть)? Стоит присмотреться к самообучению как к способу предобучить модель на этой структуре, а затем дообучить её на сравнительно небольшом размеченном наборе под конкретную целевую задачу — этот путь сегодня часто требует меньше размеченных данных, чем обучение той же задачи с учителем с нуля.
Задача заключается не в предсказании значения по фиксированному набору признаков, а в последовательности решений, где качество определяется отложенным вознаграждением за всю цепочку действий, а не за отдельный шаг? Это область обучения с подкреплением, требующая отдельного набора инструментов за пределами данного урока.
Важно держать в голове, что эти категории на практике часто комбинируются, а не выбираются раз и навсегда по отдельности: современный пайплайн разработки языковой модели — это self-supervised предобучение, за которым следует supervised fine-tuning, а затем зачастую ещё и этап обучения с подкреплением. Наличие разметки — главный, но не единственный критерий выбора; вопрос «что я хочу получить на выходе — предсказание конкретного значения, структуру данных или последовательность решений» задаёт направление ничуть не менее важное, чем наличие меток само по себе.
Практика: 30 заданий
Базовые задания (1–10)
Задание 1: Компания хочет предсказывать, кликнет ли конкретный пользователь по рекламному баннеру, используя историю прошлых показов с известными метками «кликнул» / «не кликнул». Какой тип обучения здесь применяется?
Задание 2: Банк хочет сгруппировать транзакции клиентов по похожести паттернов трат, никаких заранее заданных категорий групп не существует. Какой тип обучения нужен?
Задание 3: Робот-пылесос учится объезжать препятствия: он получает +1 за каждую убранную без столкновений комнату и −1 за каждое столкновение. Какой тип обучения используется?
Задание 4: У тебя есть 500 размеченных фотографий кошек и собак и ещё 50 000 неразмеченных фотографий животных. Какой тип обучения позволит использовать оба набора сразу?
Задание 5: Языковая модель обучается предсказывать следующее слово на огромном неразмеченном корпусе текстов из интернета. Какой тип обучения здесь применён?
Задание 6: Нужно снизить размерность признакового описания пациентов (200 медицинских показателей на человека) до двух измерений для визуализации. Какой тип обучения нужен?
Задание 7: Требуется предсказать цену акции завтра по историческим ценам за прошлые дни (конкретное числовое значение). Определи тип и подтип обучения.
Задание 8: Нужно найти подозрительные операции по кредитной карте среди миллионов обычных транзакций, при этом заранее размеченных примеров мошенничества практически нет. Какой тип обучения подходит лучше всего?
Задание 9: Модель BERT маскирует 15% слов в предложении и учится восстанавливать именно их по оставшемуся контексту. Какой тип обучения это иллюстрирует?
Задание 10: Нужно определить, к какой из 10 заранее известных категорий новостей относится статья, обучаясь на датасете, где каждая статья уже размечена своей категорией. Какой тип обучения и подтип задачи?
Продвинутые задания (11–20)
Задание 11: Объясни своими словами разницу между тем, как self-supervised learning получает «метки», и тем, как это делает обычное обучение с учителем с ручной разметкой.
Задание 12: У тебя есть 10 миллионов неразмеченных отзывов и цель — классифицировать тональность (позитив/негатив). Опиши стратегию, комбинирующую self-supervised pretraining и supervised fine-tuning.
Задание 13: Алгоритм кластеризации разбил клиентов магазина на 5 групп. Почему сам алгоритм не может сказать, что кластер №2 — это «лояльные клиенты», а кластер №5 — «клиенты на грани оттока»?
Задание 14: Сравни, сколько размеченных данных обычно требуется классификатору изображений, обучаемому с нуля, против модели, предобученной self-supervised способом и затем дообученной на маленьком размеченном датасете.
Задание 15: В чём разница между semi-supervised self-training (псевдоразметкой) и полностью supervised обучением на всех данных, если в итоге модель в обоих случаях «верит» части своих же предсказаний?
Задание 16: Чат-бот сначала предобучен self-supervised способом (предсказание следующего токена), а затем дообучен через RLHF на человеческих предпочтениях. Опиши роль каждого из двух этапов.
Задание 17: Почему обучение с подкреплением принципиально отличается от обучения с учителем, даже если в обоих случаях модель в итоге получает какое-то число как сигнал качества?
Задание 18: Приведи контрпример к утверждению «если данные размечены — это всегда обучение с учителем».
Задание 19: Почему контрастивное обучение (SimCLR) относят к self-supervised, а не к unsupervised learning в узком смысле кластеризации?
Задание 20: У тебя есть 100 часов размеченного аудио для распознавания речи и 100 000 часов неразмеченного. Почему прямое supervised обучение только на 100 часах обычно хуже, чем self-supervised предобучение на всём массиве с последующим fine-tuning на этих же 100 часах?
Задания-челленджи (21–30)
Задание 21: Спроектируй пайплайн системы автоматической модерации комментариев, использующий unsupervised, self-supervised и supervised подходы на разных этапах.
Задание 22: Объясни рассуждением, почему self-supervised предобучение на тексте не решает задачу классификации тональности «из коробки», без дополнительного supervised fine-tuning под конкретную целевую метку.
Задание 23: Сравни разметочную и вычислительную стоимость трёх подходов к созданию классификатора спама: (а) supervised с нуля на 10 000 размеченных писем, (б) self-supervised pretrain на всех письмах + supervised fine-tune на тех же 10 000, (в) чисто unsupervised кластеризация без разметки вообще.
Задание 24: Есть датасет медицинских снимков без разметки. Опиши, как self-supervised pretraining (например, контрастивное обучение) может снизить требуемое количество размеченных снимков в 10 раз при сохранении качества модели.
Задание 25: Объясни, почему RLHF нельзя заменить чисто supervised fine-tuning, если у тебя есть только примеры «хороший ответ / плохой ответ» без градации предпочтений между похожими по качеству ответами.
Задание 26: Придумай сценарий, где неправильный выбор между supervised и unsupervised подходом приведёт к дорогой ошибке в бизнесе.
Задание 27: Есть явные оценки пользователей (1–5 звёзд) для части фильмов и история просмотров без оценок для остальных. Опиши, какие типы обучения задействовать и как их скомбинировать для рекомендательной системы.
Задание 28: Объясни, почему «количество размеченных примеров» — не единственный критерий выбора подхода, и приведи ситуацию, где размеченных данных достаточно, но всё равно стоит начать с self-supervised pretraining.
Задание 29: Объясни связь между температурой softmax при генерации текста self-supervised предобученной GPT-моделью и решениями, принимаемыми моделью после RLHF-дообучения — как две стадии обучения взаимодействуют в итоговом поведении модели.
Задание 30: Спроектируй эксперимент, который эмпирически покажет, помогает ли self-supervised pretraining на неразмеченных данных твоей задачи, прежде чем тратить бюджет на полномасштабное внедрение.
Частые ошибки
Ошибка 1. Считают, что наличие каких-либо чисел рядом с данными автоматически означает обучение с учителем.
Как выглядит: «у нас же есть оценка предпочтений в RLHF, значит это supervised learning».
Почему возникает: и в supervised learning, и в некоторых схемах RL модель в итоге получает некоторое число, что создаёт видимость сходства.
Как правильно: ключевой признак supervised learning — конкретный, заранее известный правильный ответ для каждого отдельного примера. Если вместо этого есть лишь относительное сравнение вариантов или отложенная награда за последовательность действий, это RLHF или обучение с подкреплением, а не supervised learning в строгом смысле.
Ошибка 2. Путают unsupervised learning с «обучением без всякого сигнала качества вообще».
Как выглядит: «раз данные без учителя, алгоритм просто угадывает случайно, и результат нельзя проверить».
Почему возникает: отсутствие меток $y$ по ошибке приравнивают к отсутствию любого критерия качества.
Как правильно: обучение без учителя опирается на внутренние метрики структуры данных (плотность кластеров, доля объяснённой дисперсии при снижении размерности) и на последующую полезность найденной структуры для конкретной прикладной задачи — критерий качества есть, он просто не сводится к сравнению с заранее известной меткой.
Ошибка 3. Считают self-supervised learning отдельной, третьей независимой парадигмой наравне с supervised и unsupervised.
Как выглядит: «есть три равноправных типа: supervised, unsupervised и self-supervised».
Почему возникает: самообучение действительно работает с неразмеченными данными, что создаёт внешнее сходство с unsupervised learning.
Как правильно: формально self-supervised learning решает задачу через тот же механизм, что и supervised learning, — сравнение предсказания с конкретным целевым значением и минимизацию ошибки, — отличие лишь в происхождении этого целевого значения (автоматически извлечено из данных, а не размечено человеком). Это скорее особый способ получить обучающий сигнал для supervised-подобной оптимизации, чем принципиально иная парадигма обучения.
Ошибка 4. Считают, что self-supervised pretraining полностью решает целевую задачу без дополнительного дообучения.
Как выглядит: «модель предобучена на триллионах токенов, значит она уже умеет классифицировать тональность отзывов из коробки».
Почему возникает: впечатляющие возможности предобученных моделей создают ощущение, будто предобучение уже включает в себя решение любой конкретной прикладной задачи.
Как правильно: pretext-задача самообучения (предсказание следующего токена, восстановление маскированных слов) почти никогда не совпадает напрямую с конкретной целевой задачей пользователя — для перевода общих выученных представлений в решение конкретной задачи почти всегда нужен отдельный этап supervised fine-tuning, пусть и на значительно меньшем объёме размеченных данных, чем потребовалось бы при обучении с нуля.
Ошибка 5. Игнорируют возможность полу-контролируемого обучения, считая, что если разметки мало, единственный выход — либо собрать больше разметки, либо смириться с низким качеством.
Как выглядит: «у нас только 300 размеченных примеров, значит модель просто не сможет учиться хорошо, пока мы не разметим ещё тысячи».
Почему возникает: привычка мыслить исключительно в рамках чистого supervised learning, не рассматривая большой неразмеченный остаток данных как ресурс.
Как правильно: стоит в первую очередь проверить, есть ли доступный неразмеченный массив данных того же типа, и рассмотреть полу-контролируемые методы (self-training, распространение меток) или self-supervised предобучение на этом массиве — во многих случаях это даёт заметный прирост качества без единого дополнительного часа ручной разметки.
Главное запомнить
-
Главный критерий выбора парадигмы обучения — наличие и стоимость получения размеченных данных: есть ли для каждого объекта заранее известный правильный ответ, который нужно предсказывать для новых объектов.
-
Обучение с учителем (supervised learning) обучается на парах «вход — известный правильный ответ» и включает классификацию (дискретная метка) и регрессию (непрерывная метка) — темы, подробно разобранные в прошлом уроке.
-
Обучение без учителя (unsupervised learning) работает только с входными признаками без меток и ищет скрытую структуру данных: кластеризация, снижение размерности, поиск аномалий.
-
Полу-контролируемое обучение (semi-supervised learning) комбинирует небольшой размеченный набор с большим неразмеченным, извлекая пользу из обоих источников, когда получение полной разметки дорого или медленно.
-
Самообучение (self-supervised learning) автоматически конструирует обучающий сигнал из самих неразмеченных данных через pretext-задачу — не требуя ручной разметки человеком вообще.
-
Именно самообучение (предсказание следующего токена, маскированное языковое моделирование) лежит в основе предобучения современных больших языковых моделей на гигантских неразмеченных корпусах текста.
-
После self-supervised предобучения языковые модели обычно проходят supervised fine-tuning на размеченных примерах и часто ещё этап RLHF — обучения с подкреплением от обратной связи людей.
-
Обучение с подкреплением (reinforcement learning) отличается от остальных парадигм тем, что сигналом качества служит отложенная награда за последовательность действий, а не готовый правильный ответ для каждого отдельного примера.
-
Интерпретация результатов обучения без учителя (что означает конкретный кластер или найденная аномалия) всегда остаётся задачей человека — алгоритм находит структуру, но не придаёт ей смысла сам.
-
Реальные production-системы почти всегда комбинируют несколько парадигм на разных этапах пайплайна, а не выбирают ровно одну из них раз и навсегда.
Связь с темами курса
Этот урок продолжает и углубляет тему, начатую уроками 301 и 302: если урок 301 заложил самые общие основы понятия машинного обучения, а урок 302 обзорно разложил задачи ML по типам (классификация, регрессия, кластеризация, снижение размерности, обучение с подкреплением), то этот урок сфокусировался на главном критерии, определяющем выбор между этими типами на практике, — наличии и стоимости разметки данных, — и добавил к общей картине два дополнительных, крайне актуальных инструмента: полу-контролируемое обучение и самообучение, на котором сегодня строится предобучение практически всех крупных языковых моделей.
Следующий урок 304 переходит к теме переобучения и недообучения — тому, что происходит, когда модель обучения с учителем слишком сильно (или слишком слабо) подстраивается под конкретный обучающий набор данных. Это критически важное понятие применимо именно к обучению с учителем и к supervised fine-tuning той же self-supervised предобученной модели, а понимание того, откуда вообще берутся размеченные данные для обучения (тема этого урока), — необходимая предпосылка для разговора о том, как модель может неправильно ими воспользоваться.
Понимание типа обучения, подходящего для конкретной задачи, пригождается на практике постоянно: при столкновении с новой задачей специалист по данным первым делом задаёт себе именно те вопросы, что разобраны в разделе «как выбрать нужный тип обучения» этого урока, — прежде чем вообще открывать документацию по конкретному алгоритму.
Интересные факты
-
Метод главных компонент (PCA) — вероятно, самый ранний широко известный метод обучения без учителя — был предложен Карлом Пирсоном ещё в 1901 году, за полвека до появления самого термина «машинное обучение» и за десятилетия до появления электронных вычислительных машин, способных его автоматически применять к реальным данным.
-
Самообучение (self-supervised learning) как явление использовалось задолго до того, как получило это название: word2vec, модель 2013 года для представления слов, обучалась предсказывать соседние слова по контексту — задача, которую сегодня безоговорочно назвали бы self-supervised, хотя в момент публикации этот термин ещё не закрепился в текущем виде.
-
Название pretext-задачи (предлог, повод) для self-supervised обучения выбрано намеренно: предсказание следующего слова или восстановление маскированного фрагмента само по себе почти никогда не является конечной целью — это лишь «предлог», чтобы заставить модель выучить полезные общие представления данных, которые затем пригодятся для совсем другой, настоящей целевой задачи.
-
Термин «тёмная материя интеллекта» для self-supervised learning, предложенный Яном Лекуном, — отсылка к астрофизике: подобно тому как тёмная материя составляет большую часть массы Вселенной, но не наблюдается напрямую, огромный объём потенциального обучающего сигнала скрыт в неразмеченных данных и долгое время оставался практически неиспользованным именно из-за отсутствия методов, способных его извлечь.
-
Хотя GPT и BERT вышли в один и тот же 2018 год и обе модели используют self-supervised предобучение на тексте, их pretext-задачи принципиально разные: GPT предсказывает только следующее слово, опираясь исключительно на предыдущий текст (причинное моделирование), а BERT восстанавливает замаскированные слова, опираясь на контекст с обеих сторон (двунаправленное моделирование), — это различие напрямую определяет, для каких задач какая архитектура впоследствии оказалась более удобной.
Лайфхаки
-
Перед выбором алгоритма для новой задачи в первую очередь честно ответь на вопрос «есть ли у меня для каждого объекта известный правильный ответ, который я хочу предсказывать» — этот единственный вопрос сразу отсекает большую часть неподходящих методов и экономит время на изучении документации по неуместным для задачи алгоритмам.
-
Если размеченных данных мало, но есть большой неразмеченный массив того же типа данных, не спеши обучать модель только на размеченной части — сначала проверь, не даст ли self-supervised предобучение или полу-контролируемый self-training заметный прирост качества почти бесплатно.
-
Работая с языковыми моделями через API, помни, что параметр
temperatureуправляет остротой уже готового, дважды скорректированного распределения вероятностей (self-supervised предобучением и, как правило, последующим дообучением) — он не меняет знания модели, только степень случайности при выборе среди уже выученных вариантов продолжения текста. -
При оценке результатов кластеризации или другого unsupervised-метода всегда заранее планируй, кто и как будет интерпретировать найденную структуру, — алгоритм без учителя никогда сам не расскажет тебе, что означает конкретный кластер или направление наибольшей изменчивости данных, эта работа целиком ложится на человека.
-
Если стоит выбор между сбором дополнительной ручной разметки и self-supervised предобучением на уже имеющемся неразмеченном массиве, сначала прикинь стоимость и время каждого пути отдельно — во многих реальных задачах self-supervised предобучение на уже доступных данных обходится значительно дешевле, чем найм дополнительных разметчиков, при сопоставимом или лучшем итоговом качестве.
Ты только что прошёл путь от общего обзора типов задач машинного обучения к чёткому пониманию главного критерия, который на практике определяет весь дальнейший выбор инструментов, — наличия и стоимости разметки данных. Обучение с учителем и без учителя больше не абстрактные термины из прошлого урока, а конкретные, разобранные на примерах инструменты, каждый со своим формальным определением и понятной областью применения. Ты увидел, как полу-контролируемое обучение спасает положение, когда разметки мало, а данных много, и — что особенно важно — разобрался, как именно самообучение превратило неразмеченный текст всего интернета в топливо для современных языковых моделей, задав шаблон двухэтапного обучения, который сегодня лежит в основе практически любой крупной ML-системы, с которой тебе доведётся работать. В следующем уроке ты узнаешь, что происходит, когда модель обучения с учителем слишком сильно подстраивается под свои обучающие данные, — а понимание того, откуда вообще берутся эти данные и их разметка, разобранное сегодня, будет держать тебя на твёрдой почве на протяжении всего оставшегося курса.
Понял тему? Закрепи в боте! 🚀
Попрактикуйся на задачах и получи персональные рекомендации от AI
💪 Начать тренировку