Обсуждение участника:Imil Baltaniazov
Материал из MachineLearning.
```wikitext
| | Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:00, 10 июля 2026 (MSD) |
Контрастивное обучение (contrastive learning) — семейство методов самообучения (self-supervised learning), в которых модель обучается строить представления (embeddings) объектов исходя не из явных меток класса, а из отношений сходства между парами или наборами объектов. Основной принцип формулируется коротко: похожие объекты должны иметь близкие представления, непохожие — далёкие. Эта идея легла в основу современных методов предобучения в компьютерном зрении, обработке естественного языка и мультимодальном обучении, включая модели типа CLIP.
Введение
Идея обучения по парам «похоже/непохоже» восходит к работам по метрическому обучению начала 1990-х годов, где сиамские нейронные сети применялись для верификации подписей (Bromley et al., 1993). Формальный вид современного контрастивного лосса был предложен в работе Hadsell, Chopra и LeCun (2006) «Dimensionality Reduction by Learning an Invariant Mapping», где для задачи снижения размерности использовалась функция потерь, притягивающая пары точек с одинаковой меткой окрестности и отталкивающая пары с разными метками — с использованием отступа (margin), аналогично более поздним триплет-лоссам.
Второй важный этап — работа ван ден Оорда и соавторов (Oord et al., 2018) «Representation Learning with Contrastive Predictive Coding», введшая функцию потерь InfoNCE и связавшая контрастивное обучение с оценкой взаимной информации между связанными фрагментами данных (например, соседними отрезками аудиосигнала). Это дало теоретическое обоснование того, почему контрастивные цели вообще позволяют извлекать полезные представления без разметки.
Третий, решающий для практики этап — статья Chen et al. (2020) «A Simple Framework for Contrastive Learning of Visual Representations» (SimCLR), показавшая, что при достаточно сильных аугментациях, большом размере батча и добавлении небольшой проекционной головки простая контрастивная цель на изображениях позволяет получить представления, по качеству приближающиеся к представлениям, полученным при обучении с учителем на ImageNet. После этой работы контрастивное обучение стало одним из основных подходов к предобучению без разметки, породив линейку методов — MoCo, BYOL, SimSiam — и в дальнейшем — мультимодальные модели вроде CLIP.
Постановка задачи
Формально задача ставится так: имеется набор немаркированных данных (изображения, тексты, графы, аудиозаписи). Требуется найти функцию-энкодер
, отображающую объект в вектор фиксированной размерности так, чтобы это представление было полезно для широкого круга последующих задач (downstream tasks) — классификации, кластеризации, поиска ближайших соседей, дообучения (fine-tuning).
В отличие от обучения с учителем, где обучающий сигнал задаётся парами с истинной меткой
, в контрастивном обучении сигнал формируется искусственно, из самой структуры данных: каждому объекту сопоставляется один или несколько «позитивных» связанных объектов (например, другая аугментация той же картинки) и множество «негативных» — не связанных с ним объектов. Обучение сводится к минимизации функции потерь, зависящей только от взаимного расположения представлений в пространстве embedding, без обращения к внешней разметке.
Качество полученных представлений принято оценивать протоколом линейной оценки (linear evaluation protocol): веса энкодера замораживаются, поверх представления обучается только линейный классификатор с использованием размеченных данных, и измеряется точность этого классификатора. Такой протокол позволяет сравнивать разные методы предобучения независимо от архитектуры «головы» классификатора.
Интуитивная идея
Рассмотрим простой пример. Пусть есть фотография кота. Применим к ней случайный кроп, поворот, изменение цветового баланса — получим другую картинку, которая всё ещё, безусловно, изображает кота. Эти две аугментированные версии одного изображения образуют позитивную пару: сеть должна научиться отображать их в близкие точки пространства представлений, несмотря на то что попиксельно эти изображения могут сильно различаться.
Возьмём теперь произвольную другую фотографию из обучающей выборки — например, изображение автомобиля. Пара «кот — автомобиль» образует негативную пару: их представления должны быть далеки друг от друга.
Удобная механическая аналогия — пружины и резинки в пространстве представлений. Позитивные пары соединены резинкой, которая стягивает их друг к другу; негативные пары соединены пружиной, которая их расталкивает. В равновесии объекты, похожие по смыслу, образуют плотные кластеры, а разнородные объекты расходятся — при этом сети ни разу не сообщалось явно, что перед ней «кот» или «автомобиль»: вся структура выучена из самой геометрии притяжения и отталкивания.
Важно, что позитивные пары не обязаны получаться только аугментацией одного изображения. В видео позитивной парой могут быть соседние кадры; в тексте — соседние предложения или фрагменты одного документа; в мультимодальных данных — изображение и подписывающий его текст.
Математическая формализация
Пусть энкодер отображает объект
в представление
. Рассмотрим три исторически последовательных формулировки контрастивного лосса.
Triplet Loss. Функция была популяризирована в задачах метрического обучения, в частности в работе FaceNet (Schroff et al., 2015). Для тройки (якорь , позитив
, негатив
) и функции расстояния
лосс задаётся как:
где — гиперпараметр отступа (margin). Лосс штрафует ситуацию, когда позитив не отделён от негатива хотя бы на величину
; при выполнении неравенства с запасом градиент равен нулю. Существенный практический недостаток триплет-лосса — сильная зависимость от стратегии подбора триплетов (triplet mining): случайно выбранные тройки быстро становятся тривиальными (лосс равен нулю), и для эффективного обучения требуется добывать «трудные» негативы.
InfoNCE. Введена в работе Oord et al. (2018) в рамках метода Contrastive Predictive Coding. В отличие от триплет-лосса, сопоставляет один позитив сразу множеству негативов через softmax:
где — позитивный пример,
— негативные примеры,
— параметр температуры. Авторы показали, что минимизация этого выражения эквивалентна максимизации нижней оценки взаимной информации
между двумя связанными представлениями данных — отсюда название InfoNCE (information noise-contrastive estimation).
NT-Xent (SimCLR). В работе Chen et al. (2020) используется нормализованная температурная кросс-энтропия (normalized temperature-scaled cross entropy). Из батча размера с помощью двух независимых случайных аугментаций формируется
представлений; для каждой позитивной пары
, полученной из одного исходного изображения, лосс имеет вид:
где — косинусное сходство, а
— представление после проекционной головки. Итоговый лосс на батч — среднее
по всем
позитивным парам (в обе стороны). Все остальные
представления в батче выступают негативами для пары
— так называемые in-batch negatives.
Температура играет роль настройки «жёсткости» распределения softmax: малые значения
сильнее штрафуют близкие негативы (эффект, близкий к hard negative mining), но одновременно делают обучение более чувствительным к шуму и переобучению на конкретных негативах внутри батча.
Архитектурные решения
Сиамские сети (Siamese networks) — базовая архитектурная схема контрастивного обучения: два (или более) прохода одного и того же энкодера с общими весами применяются к разным входам (например, к двум аугментациям одного изображения), после чего представления сравниваются функцией расстояния или сходства. Название закрепилось за архитектурой ещё в работах по верификации подписей и лиц 1990–2000-х годов.
Проекционная головка. Ключевое наблюдение SimCLR состоит в том, что контрастивный лосс лучше вычислять не непосредственно на представлении , которое затем используется в последующих задачах, а на выходе дополнительной небольшой сети — проекционной головки
, обычно двухслойного MLP с нелинейностью ReLU:
. После предобучения головка
отбрасывается, для последующих задач используется
. Объяснение эффекта: контрастивная цель заставляет модель отбрасывать информацию, инвариантную относительно применённых аугментаций (например, цвет объекта, если применялось цветовое искажение) — такая информация может быть полезна для последующих задач, но вредна для контрастивной цели. Проекционная головка «принимает удар на себя», сохраняя более общее представление в
.
Симметричные и асимметричные архитектуры. В симметричной схеме (SimCLR) оба входа проходят через один и тот же энкодер с общими весами, и градиент течёт по обеим ветвям одинаково. В асимметричных схемах ветви различаются: например, в MoCo один энкодер (query encoder) обучается градиентным спуском, а второй (key encoder) обновляется через экспоненциальное скользящее среднее (momentum, EMA) весов первого энкодера и не получает градиента напрямую — это стабилизирует представления негативов, накапливаемых в очереди. В BYOL и SimSiam асимметрия усиливается ещё сильнее: на «онлайн»-ветви добавляется дополнительная сеть-предиктор, а на «целевой» ветви применяется остановка градиента (stop-gradient) — при этом негативные примеры вовсе не требуются.
Стратегии аугментации данных
Выбор аугментаций определяет, какие инварианты выучит модель, и является одним из решающих факторов качества контрастивного обучения.
Изображения. В экспериментах SimCLR показано, что сильнее всего на качество влияет комбинация случайного кропа с масштабированием (random resized crop) и цветовых искажений (color jitter, случайное преобразование яркости, контраста, насыщенности и оттенка). По отдельности ни один из этих видов аугментации не даёт сравнимого эффекта: случайный кроп без изменения цвета позволяет модели решать задачу по одним лишь статистикам цвета, не выучивая содержательных признаков формы и текстуры. Дополнительно применяются размытие по Гауссу, перевод в оттенки серого, горизонтальное отражение; в ряде более поздних методов (BYOL) добавляется соляризация.
Текст. Используются маскирование токенов, обратный перевод (back-translation), синонимическая замена слов, случайные удаление/вставка/перестановка слов (техника EDA), а также кроппинг фрагментов документа. Отдельный интересный приём — метод SimCSE, где две «разные» версии одного и того же предложения получаются простым повторным пропуском через энкодер с включённым dropout: разные случайные маски dropout дают немного разные представления одного и того же текста, которые и образуют позитивную пару.
Графы. В графовом контрастивном обучении (например, GraphCL) применяются случайное удаление рёбер и узлов, маскирование атрибутов узлов, сэмплирование подграфов и аугментации на основе диффузии графа или случайных блужданий — каждая операция должна сохранять содержательную структуру графа, не разрушая его смысловую связность.
Общий принцип: аугментация должна быть достаточно сильной, чтобы задача не решалась тривиальными «короткими путями» (shortcuts), но не настолько сильной, чтобы разрушить семантику, важную для последующих задач. Подбор набора аугментаций — во многом эмпирическая, специфичная для модальности процедура.
Проблема коллапса представлений
Коллапс представлений (representation collapse) — вырожденное решение, при котором энкодер отображает все входы в одну и ту же (или почти одну и ту же) точку пространства представлений. При таком решении расстояние между любыми позитивными парами тривиально минимально, однако представление не несёт никакой информации об исходных данных и бесполезно для последующих задач. Проблема возникает потому, что цель «сблизить позитивы» сама по себе не имеет механизма, препятствующего вырождению — константное отображение формально идеально решает эту часть задачи.
Основные способы борьбы с коллапсом:
- Явные негативные примеры. В InfoNCE-подобных лоссах наличие негативов создаёт отталкивающую силу: минимизация лосса требует не просто сближения позитива, а его отличимости от множества негативов через softmax, что делает константное решение невыгодным. Для устойчивой оценки такого softmax требуется достаточно большое число негативов — отсюда потребность SimCLR в больших батчах либо MoCo в очереди (queue) накопленных представлений.
- Остановка градиента (stop-gradient). В BYOL и особенно наглядно в SimSiam показано, что коллапса можно избежать вовсе без негативных примеров: достаточно асимметрии между двумя ветвями сети (дополнительный предиктор на одной ветви) и остановки градиента на другой ветви. Полного теоретического объяснения этому явлению до конца не дано, но эмпирически и по ряду теоретических аргументов (аналогия с EM-алгоритмом попеременной оптимизации) показано, что такая схема устойчиво избегает вырождения.
- Нормализация. L2-нормализация представлений (проекция на единичную гиперсферу) в сочетании с батч-нормализацией внутри проекционной головки и предиктора эмпирически связана со стабильностью обучения и, по ряду наблюдений, помогает избегать коллапса — хотя более поздние работы (в частности, эксперименты SimSiam) показывают, что одной нормализации без stop-gradient недостаточно.
- Явная регуляризация ковариации. Отдельное направление — методы Barlow Twins (Zbontar et al., 2021) и VICReg (Bardes et al., 2022), которые вместо контрастивного или предикторного лосса напрямую штрафуют вырождение: требуют, чтобы дисперсия каждой компоненты представления по батчу была не ниже порога, и одновременно минимизируют корреляцию между разными компонентами вектора представления.
Основные методы
| Метод | Год | Нужны негативные примеры | Momentum-энкодер | Механизм против коллапса | Требования к батчу |
|---|---|---|---|---|---|
| SimCLR | 2020 | Да (in-batch) | Нет | Негативные примеры + проекционная головка | Очень большой (2048–8192) |
| MoCo (v1/v2) | 2019/2020 | Да (очередь) | Да | Негативные примеры из очереди + momentum-энкодер | Умеренный (очередь заменяет большой батч) |
| BYOL | 2020 | Нет | Да | Асимметрия «онлайн/цель» + предиктор + stop-gradient | Умеренный |
| SimSiam | 2021 | Нет | Нет | Только предиктор + stop-gradient | Умеренный |
SimCLR (Chen et al., 2020) — симметричная сиамская схема с общей энкодер-проекцией на обеих ветвях, использующая NT-Xent-лосс с in-batch негативами; для достижения качественных представлений требует очень больших батчей, поскольку число негативов ограничено размером батча.
MoCo (He et al., 2019; версия v2 — Chen et al., 2020) решает проблему больших батчей за счёт отдельной очереди (dictionary) представлений-негативов, накапливаемых из предыдущих итераций, и momentum-энкодера — ключевой сети, чьи веса не обучаются градиентом напрямую, а обновляются как экспоненциальное скользящее среднее весов основной (query) сети. Это позволяет держать большое число негативов (десятки тысяч) при умеренном размере батча.
BYOL («Bootstrap Your Own Latent», Grill et al., 2020) полностью отказывается от негативных примеров: онлайн-сеть с дополнительным предиктором обучается предсказывать представление, выдаваемое целевой (target) сетью — копией с momentum-обновлением весов и остановленным градиентом — на другой аугментации того же изображения. Лосс — по существу регрессионный (нормализованная среднеквадратичная ошибка), а не классификационный.
SimSiam (Chen & He, 2021) показывает, что для избежания коллапса momentum-энкодер не обязателен: достаточно простой сиамской сети с общими весами, предиктора на одной ветви и остановки градиента на другой — без негативов, без очереди, без momentum-обновления.
Связь с CLIP и мультимодальными моделями
Контрастивный принцип естественно обобщается на пары объектов разной модальности. Модель CLIP (Radford et al., 2021, «Learning Transferable Visual Models From Natural Language Supervision») обучает одновременно энкодер изображений и энкодер текста на большом корпусе пар (изображение, подпись), используя, по существу, ту же схему, что и NT-Xent: внутри батча позитивной парой считается соответствующая друг другу пара «изображение — подпись», негативами — все остальные комбинации изображений и подписей внутри батча; лосс вычисляется симметрично — как по строкам, так и по столбцам матрицы косинусных сходств.
Результат такого предобучения — общее пространство представлений, в котором изображение и описывающий его текст оказываются близки. Это позволяет решать задачи zero-shot классификации: класс объекта определяется путём сравнения представления изображения с представлениями текстовых промптов вида «фотография {класс}» без какого-либо дообучения на целевом наборе данных. Подход CLIP послужил основой для последующих мультимодальных контрастивных моделей (например, ALIGN) и широко используется как источник эмбеддингов для задач мультимодального поиска и в качестве управляющего сигнала в генеративных моделях изображений.
Пример: обучение представлений на CIFAR-10 с SimCLR
Проиллюстрируем типичный пайплайн на примере CIFAR-10 (условные, ориентировочные цифры). В качестве энкодера берётся сеть уменьшенной глубины (например, ResNet-18, адаптированный под разрешение 32×32). Предобучение проводится без меток в течение порядка 200–500 эпох с батчем размера 256–512 (небольшое разрешение CIFAR-10 позволяет обойтись без экстремально больших батчей, характерных для ImageNet), с аугментациями: случайный кроп с изменением масштаба, горизонтальное отражение, цветовые искажения, перевод в оттенки серого. Используется проекционная головка — двухслойный MLP, лосс — NT-Xent с температурой порядка 0.5.
После предобучения энкодер замораживается, поверх представления обучается линейный классификатор на полном размеченном наборе CIFAR-10. Ориентировочно такой протокол позволяет получить точность в районе 90% и выше, при том что полностью контролируемое обучение сравнимой по размеру сети на CIFAR-10 обычно даёт порядка 93–95% — то есть контрастивное предобучение без единой метки позволяет приблизиться к качеству обучения с учителем.
На практике реализовывать подобный пайплайн с нуля не обязательно: библиотека PyTorch Lightning (в частности, надстройки вроде Lightning Bolts и сторонняя библиотека lightly) предоставляет готовые реализации SimCLR, MoCo, BYOL и SimSiam с настраиваемыми аугментациями и логированием; экосистема Hugging Face предоставляет предобученные контрастивные модели (в частности, чекпоинты CLIP) и библиотеку sentence-transformers для текстовых представлений, обучаемых по контрастивным и близким к ним схемам.
Достоинства и ограничения
Достоинства:
- не требует разметки данных, использует внутреннюю структуру самих данных;
- даёт универсальные представления, переносимые на разные последующие задачи — классификацию, детекцию, поиск, кластеризацию;
- хорошо масштабируется с ростом объёма непомеченных данных и вычислительных ресурсов;
- не зависит от качества и полноты человеческой разметки, а значит устойчиво к её отсутствию или неполноте;
- единый принцип «притяжение — отталкивание» переносится между модальностями — изображениями, текстом, графами, аудио, мультимодальными парами.
Ограничения:
- сильная чувствительность к выбору и силе аугментаций: неудачный набор либо тривиализирует задачу, либо разрушает полезную семантику;
- методам с явными негативами (SimCLR, MoCo) требуются большие батчи или банки памяти, что увеличивает вычислительные затраты;
- риск коллапса представлений, требующий дополнительных архитектурных приёмов (stop-gradient, momentum-энкодер, регуляризация ковариации);
- нет формальной гарантии, что инварианты, навязанные аугментациями, совпадают с инвариантами, нужными для конкретной целевой задачи;
- более низкая интерпретируемость по сравнению с обучением на явно размеченных признаках — сложно диагностировать, какая именно информация закодирована в представлении;
- обучение чувствительно к гиперпараметрам — температуре, составу аугментаций, длительности предобучения и размеру батча.
См. также
Литература
- Hadsell R., Chopra S., LeCun Y. Dimensionality Reduction by Learning an Invariant Mapping // CVPR. — 2006.
- Oord A. van den, Li Y., Vinyals O. Representation Learning with Contrastive Predictive Coding // arXiv:1807.03748. — 2018.
- Chen T., Kornblith S., Norouzi M., Hinton G. A Simple Framework for Contrastive Learning of Visual Representations // ICML. — 2020.
- He K., Fan H., Wu Y., Xie S., Girshick R. Momentum Contrast for Unsupervised Visual Representation Learning // CVPR. — 2020.
- Grill J.-B., Strub F., Altché F. et al. Bootstrap Your Own Latent: A New Approach to Self-Supervised Learning // NeurIPS. — 2020.
- Chen X., He K. Exploring Simple Siamese Representation Learning // CVPR. — 2021.
- Radford A., Kim J.W., Hallacy C. et al. Learning Transferable Visual Models From Natural Language Supervision // ICML. — 2021.
- Schroff F., Kalenichenko D., Philbin J. FaceNet: A Unified Embedding for Face Recognition and Clustering // CVPR. — 2015.
- Wu Z., Xiong Y., Yu S.X., Lin D. Unsupervised Feature Learning via Non-Parametric Instance Discrimination // CVPR. — 2018.
- Zbontar J., Jing L., Misra I., LeCun Y., Deny S. Barlow Twins: Self-Supervised Learning via Redundancy Reduction // ICML. — 2021.
```

