Контрастивное обучение

Материал из MachineLearning.

Версия от 12:38, 10 июля 2026; Daniil Nikolaev (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Статья написана с использованием LLM DeepSeek-V3 и проверена участником Д. Николаев 15:38, 10 июля 2026 (MSD)


Содержание

Контрастивное обучение (англ. contrastive learning) — раздел машинного обучения, а именно — подход к обучению представлений (англ. representation learning), в основе которого лежит сравнение пар объектов с целью выявления их сходства или различия. В процессе обучения модель стремится сблизить в пространстве признаков представления похожих объектов (положительные пары) и отдалить представления непохожих объектов (отрицательные пары). Такой подход позволяет извлекать содержательные признаки из данных без использования размеченных меток, что делает контрастивное обучение одним из ключевых методов самообучаемого обучения (англ. self-supervised learning).

История

Идея обучения путём сравнения объектов восходит к началу 1990-х годов. В 1992 году Сюзанна Беккер и Джеффри Хинтон предложили метод обучения инвариантных представлений путём максимизации взаимной информации между различными представлениями одной и той же сцены. В 1993 году Джейн Бромли с соавторами представили архитектуру сиамской нейронной сети (англ. Siamese neural network) — две идентичные сети с общими весами, предназначенные для метрического обучения.

Фундамент современного контрастивного обучения был заложен в 2005 году, когда Сумат Чопра, Рауль Хадселл и Ян Лекун предложили контрастивную парную функцию потерь (англ. contrastive pair loss) для дискриминативных моделей, решающих задачи распознавания и верификации. В 2012 году Михаэль Гутманн и Аапо Хювяринен представили оценку шумоконтрастирования (NCE, англ. Noise Contrastive Estimation) — метод оценки ненормированных статистических моделей путём сравнения распределения данных с распределением шума. Этот подход оказал значительное влияние на развитие контрастивного обучения в обработке естественного языка (NLP).

Важным этапом стало введение триплетной функции потерь (англ. triplet loss), которая использует тройки объектов: якорь (англ. anchor), положительный (англ. positive) и отрицательный (англ. negative) примеры. В 2018 году методы CPC (англ. Contrastive Predictive Coding) и DIM (англ. Deep InfoMax) установили связь между минимизацией контрастивной функции потерь и максимизацией нижней границы взаимной информации.

Современный этап развития контрастивного обучения связан с появлением таких архитектур, как SimCLR (2020) и MoCo (Моментум Контраст, англ. Momentum Contrast), которые продемонстрировали выдающиеся результаты в задачах компьютерного зрения, достигая качества, сопоставимого с обучением с учителем.

Математическая постановка

Пусть задано множество объектов \mathcal{X}. Цель контрастивного обучения — найти отображение f: \mathcal{X} \to \mathbb{R}^d, которое переводит каждый объект x \in \mathcal{X} в векторное представление z = f(x) в d-мерном евклидовом пространстве (латентном пространстве). Требуется, чтобы расстояние между представлениями похожих объектов было малым, а между представлениями непохожих — большим.

Для каждого обучающего примера x (якоря, англ. anchor) выбирается положительный пример x^+ (объект, семантически близкий к x) и один или несколько отрицательных примеров {x^-_i} (объекты, семантически далёкие от x). В самообучаемом обучении положительные примеры часто получают путём аугментации исходного объекта (например, случайное обрезание или изменение цвета изображения).

Обучение модели f осуществляется путём минимизации контрастивной функции потерь \mathcal{L}, которая штрафует модель за большое расстояние до положительных примеров и малое расстояние до отрицательных.

Контрастивная парная функция потерь

Классическая контрастивная парная функция потерь, предложенная Чопрой и соавторами, для пары объектов (x_i, x_j) с бинарной меткой y \in {0, 1} (где y = 0 означает сходство, а y = 1 — различие) определяется следующим образом:  \mathcal{L}_{\text{pair}} = (1 - y) \cdot \|z_i - z_j\|_2^2 + y \cdot \max\bigl(0, m - \|z_i - z_j\|_2^2\bigr)

где z_i = f(x_i), z_j = f(x_j), |\cdot|_2евклидова норма, а m > 0 — гиперпараметр (поля), задающий минимальное желаемое расстояние между представлениями различных объектов.

Триплетная функция потерь

Триплетная функция потерь оперирует тройкой объектов: якорь x, положительный пример x^+ и отрицательный пример x^-. Функция потерь имеет вид:  \mathcal{L}_{\text{triplet}} = \max\Bigl(0, \|z - z^+\|_2^2 - \|z - z^-\|_2^2 + m\Bigr)

где z = f(x), z^+ = f(x^+), z^- = f(x^-), а m > 0 — гиперпараметр, задающий минимальное превышение расстояния до отрицательного примера над расстоянием до положительного.

ИнфоNCE (InfoNCE)

В современных методах, таких как SimCLR и MoCo, широко используется функция потерь InfoNCE (англ. Information Noise-Contrastive Estimation), основанная на оценке шумоконтрастирования. Для якоря x, одного положительного примера x^+ и множества N отрицательных примеров \{x^-_i\}_{i=1}^{N} функция потерь определяется как:  \mathcal{L}_{\text{InfoNCE}} = -\log \frac{ \exp\bigl(\operatorname{sim}(z, z^+) / \tau\bigr) }{ \exp\bigl(\operatorname{sim}(z, z^+) / \tau\bigr) + \sum_{i=1}^{N} \exp\bigl(\operatorname{sim}(z, z^-_i) / \tau\bigr) }

где \operatorname{sim}(u, v) — функция косинусного сходства \operatorname{sim}(u, v) = u^\top v / (\|u\|_2 \|v\|_2), а \tau > 0 — гиперпараметр температуры, регулирующий остроту распределения.

ИнфоNCE имеет интерпретацию как кросс-энтропия для задачи классификации: для каждого якоря модель должна правильно идентифицировать положительный пример среди множества отрицательных. Минимизация ИнфоNCE эквивалентна максимизации нижней границы взаимной информации между представлениями объекта и его аугментированной версией.

Архитектуры и системные аспекты

Сиамские сети

Сиамская нейронная сеть (англ. Siamese neural network) — архитектура, состоящая из двух (или более) идентичных подсетей с общими весами, которые обрабатывают пару (или тройку) входных объектов и выдают их представления. Обучение сиамских сетей с использованием контрастивных функций потерь позволяет выучить метрику сходства в латентном пространстве.

SimCLR

SimCLR (англ. Simple Framework for Contrastive Learning of Visual Representations) — фреймворк для контрастивного обучения визуальных представлений, предложенный в 2020 году. Ключевые особенности SimCLR:

  • Использование больших размеров мини-пакетов (batch size) для обеспечения достаточного количества отрицательных примеров.

SimCLR продемонстрировал, что линейный классификатор, обученный на представлениях, полученных с помощью самообучаемого контрастивного обучения, достигает точности 76,5% на ImageNet, что сравнимо с полностью контролируемым ResNet-50.

MoCo

MoCo (Моментум Контраст, англ. Momentum Contrast) — фреймворк, предложенный Хэ Кайминем и соавторами. MoCo интерпретирует контрастивное обучение как задачу поиска в словаре (англ. dictionary look-up) и использует:

  • Очередь (англ. queue) для хранения представлений отрицательных примеров из предыдущих мини-пакетов, что позволяет использовать большое количество отрицательных примеров без увеличения размера текущего мини-пакета.

Системные аспекты масштабирования

Контрастивное обучение предъявляет высокие требования к вычислительным ресурсам и памяти. Эффективность методов сильно зависит от количества отрицательных примеров, что мотивирует использование больших мини-пакетов. Это создаёт следующие системные вызовы:

  • Память: вычисление контрастивной функции потерь для больших мини-пакетов требует хранения матрицы сходства размера B \times B, где B — размер мини-пакета, что может приводить к переполнению памяти на одном GPU.
  • Распределённые вычисления: для обработки больших мини-пакетов используются распределённые стратегии, такие как разбиение вычислений на блоки (англ. tile-based computation).
  • Федеративное обучение: контрастивное обучение может быть объединено с федеративным обучением (FCL, англ. Federated Contrastive Learning) для обучения на распределённых данных с сохранением конфиденциальности.

Применения

Контрастивное обучение нашло широкое применение в различных областях машинного обучения:

  • Компьютерное зрение: классификация изображений, обнаружение объектов, сегментация, видеоаналитика. Модели на основе контрастивного обучения, такие как SimCLR и MoCo, устанавливают рекорды в задачах самообучаемого обучения.
  • Аудио и речь: распознавание речи, классификация звуков.

Связь с другими концепциями

Контрастивное обучение тесно связано с:

  • Метрическое обучение (англ. metric learning) — контрастивные функции потерь являются одним из основных инструментов метрического обучения.

Современные направления исследований

Активные области исследований в контрастивном обучении включают:

  • Разработку теоретических основ, объясняющих успех контрастивного обучения.
  • Создание эффективных стратегий выбора положительных и отрицательных примеров.
  • Разработку методов для работы с несбалансированными и зашумленными данными.

См. также

Литература

  • Jaiswal, A., Babu, A. R., Zadeh, M. Z., Banerjee, D., & Makedon, F. A comprehensive survey on contrastive learning // Neurocomputing. — 2024. — Т. 610. — С. 128645.
  • Le-Khac, P. H., Healy, G., & Smeaton, A. F. Contrastive representation learning: A framework and review // IEEE Access. — 2020. — С. 1-28.
  • Gutmann, M., & Hyvärinen, A. Noise-contrastive estimation of unnormalized statistical models, with applications to natural image statistics // Journal of Machine Learning Research. — 2012. — Т. 13. — С. 307-361.
  • van den Oord, A., Li, Y., & Vinyals, O. Representation learning with contrastive predictive coding // arXiv:1807.03748 [cs.LG]. — 2018.
  • Becker, S., & Hinton, G. E. Self-organizing neural network that discovers surfaces in random-dot stereograms // Nature. — 1992. — Т. 355. — № 6356. — С. 161-163.
  • Hjelm, R. D., Fedorov, A., Lavoie-Marchildon, S., Grewal, K., Bachman, P., Trischler, A., & Bengio, Y. Learning deep representations by mutual information estimation and maximization // arXiv:1808.06670 [cs.LG]. — 2018.