Открыть сервис

SimCLR

SimCLR — это фреймворк для контрастивного обучения представлений (self-supervised learning), разработанный исследователями из Google Research. Он позволяет нейронным сетям обучаться эффективным визуальным представлениям без использования размеченных данных, используя только сами изображения. Основная идея SimCLR заключается в том, чтобы максимизировать сходство между разными «представлениями» (augmentations) одного и того же изображения и минимизировать сходство между представлениями разных изображений.

История и контекст

SimCLR был представлен в 2020 году в статье «A Simple Framework for Contrastive Learning of Visual Representations» (авторы: Ting Chen, Simon Kornblith, Mohammad Norouzi, Geoffrey Hinton). Работа стала значительным шагом вперёд в области самоконтролируемого обучения, предложив простую, но эффективную архитектуру, которая по качеству получаемых представлений приблизилась к методам обучения с учителем на крупных наборах данных, таких как ImageNet.

До появления SimCLR контрастивное обучение уже применялось (например, в методах CPC, MoCo, CMC), но SimCLR систематически исследовал влияние ключевых компонентов: размера батча, силы аугментаций, структуры проекционной головы (projection head) и функции потерь. Работа показала, что при правильном выборе гиперпараметров простая архитектура может превзойти более сложные предшественники.

Архитектура и принцип работы

SimCLR состоит из трёх основных компонентов:

  1. Стохастический модуль аугментации данных (Data Augmentation Module). Для каждого изображения из батча случайным образом генерируются два различных «представления» (augmented views). Используются следующие аугментации:
  • Случайное кадрирование (random crop) и изменение размера.
  • Случайное изменение цвета (color distortion): сдвиг оттенка, насыщенности, яркости, контраста.
  • Случайное размытие по Гауссу (Gaussian blur).
  • Случайное поворот (rotation) — в некоторых вариантах.
  • Случайное отражение (horizontal flip).

Важно, что комбинация кадрирования и изменения цвета является критически важной для избежания «тривиального» решения (когда сеть учится различать изображения только по цветовой гистограмме).

  1. Базовая нейронная сеть-энкодер (Base Encoder Network). Обычно это архитектура на основе свёрточных нейронных сетей (например, ResNet-50). Энкодер преобразует каждое аугментированное изображение в вектор признаков (embedding) фиксированной размерности. Оба представления одного исходного изображения проходят через один и тот же энкодер с общими весами.
  1. Проекционная голова (Projection Head). Небольшая многослойная нейронная сеть (обычно MLP с одним скрытым слоем), которая отображает вектор признаков из энкодера в пространство меньшей размерности, где вычисляется контрастивная функция потерь. Использование проекционной головы значительно улучшает качество обучения, так как она позволяет энкодеру сохранять более общие признаки, а не подстраиваться под конкретные аугментации.

Функция потерь (NT-Xent Loss)

SimCLR использует нормализованную температуру-масштабированную кросс-энтропийную потерю (Normalized Temperature-Scaled Cross-Entropy Loss, NT-Xent). Для каждого батча из N изображений генерируется 2N аугментированных представлений. Для каждого представления (например, i) выбирается его «положительная пара» — другое представление того же исходного изображения (j). Остальные 2N-2 представления считаются «отрицательными» примерами (от других изображений).

Функция потерь для пары (i, j) вычисляется как:

\[ L_{i,j} = -\log \frac{\exp(sim(z_i, z_j) / \tau)}{\sum_{k=1}^{2N} \mathbb{1}_{[k \neq i]} \exp(sim(z_i, z_k) / \tau)} \]

где:

  • \(z_i\) и \(z_j\) — нормализованные (L2-норма) векторы из проекционной головы.
  • \(sim(z_i, z_j)\) — косинусное сходство между векторами.
  • \(\tau\) — температурный параметр (temperature), управляющий «жёсткостью» распределения вероятностей.
  • \(\mathbb{1}_{[k \neq i]}\) — индикаторная функция, исключающая сам вектор из знаменателя.

Итоговая функция потерь для батча — сумма по всем положительным парам, делённая на 2N.

Ключевые особенности и результаты

  • Размер батча: SimCLR требует большого размера батча (например, 4096 или 8192) для эффективного обучения, так как в контрастивной потере используется много отрицательных примеров. Для этого используется распределённое обучение на нескольких GPU/TPU.
  • Аугментации: Работа показала, что комбинация случайного кадрирования и изменения цвета является наиболее важной для достижения высокого качества. Без изменения цвета модель может научиться различать изображения только по цветовым гистограммам, что даёт плохое обобщение.
  • Проекционная голова: Использование MLP после энкодера значительно улучшает качество представлений, так как позволяет энкодеру сохранять инвариантность к аугментациям, а проекционной голове — адаптироваться к контрастивной задаче.
  • Производительность: На наборе данных ImageNet (без использования меток) SimCLR с ResNet-50 достиг точности top-1 около 76.5% при линейной оценке (linear evaluation) — когда обученный энкодер используется для извлечения признаков, а затем на них обучается линейный классификатор с метками. При дообучении (fine-tuning) с небольшим количеством меток (например, 1% или 10% от ImageNet) точность также была высокой.

Применение

SimCLR используется в задачах, где доступно большое количество неразмеченных данных, а разметка дорога или невозможна:

  • Классификация изображений — обучение представлений для последующей классификации с малым количеством меток.
  • Детекция объектов — предобучение энкодера для детекторов (например, Faster R-CNN, YOLO).
  • Сегментация изображений — получение признаков для семантической или инстанс-сегментации.
  • Обработка видео — адаптация контрастивного обучения для видеоданных (например, SimCLR для видео).
  • Медицинская визуализация — обучение на больших наборах медицинских снимков без разметки.
  • Робототехника — обучение визуальных представлений для управления роботами.

Критика и ограничения

  • Зависимость от размера батча: SimCLR требует очень больших батчей, что ограничивает его применение на оборудовании с ограниченной памятью. Последующие работы (например, MoCo v2, BYOL, SimSiam) предложили методы, работающие с меньшими батчами.
  • Чувствительность к аугментациям: Выбор аугментаций сильно влияет на качество. Неудачный набор может привести к «тривиальному» решению или плохому обобщению.
  • Вычислительные затраты: Обучение требует значительных вычислительных ресурсов (несколько дней на TPU-кластерах).
  • Отсутствие гарантий обобщения: Хотя представления, полученные контрастивным обучением, часто хорошо переносятся на другие задачи, нет строгих теоретических гарантий, что они будут оптимальны для всех downstream-задач.

Интересные факты

  • Название SimCLR расшифровывается как «Simple Contrastive Learning of Representations» — подчёркивая простоту подхода по сравнению с более сложными архитектурами того времени.
  • В работе SimCLR впервые было показано, что использование проекционной головы (MLP) значительно улучшает качество представлений по сравнению с прямым использованием выхода энкодера.
  • SimCLR стал одним из первых методов самоконтролируемого обучения, который по качеству приблизился к обучению с учителем на ImageNet, что привлекло широкое внимание сообщества.
  • Метод лёг в основу многих последующих работ, включая SimCLR v2, который добавил дистилляцию знаний и более глубокие проекционные головы.

Источники

  • Chen, T., Kornblith, S., Norouzi, M., & Hinton, G. (2020). A Simple Framework for Contrastive Learning of Visual Representations. Proceedings of the 37th International Conference on Machine Learning (ICML).
  • Chen, T., Kornblith, S., Swersky, K., Norouzi, M., & Hinton, G. (2020). Big Self-Supervised Models are Strong Semi-Supervised Learners. Advances in Neural Information Processing Systems (NeurIPS).
  • Официальная реализация SimCLR на GitHub (Google Research).
  • Документация TensorFlow и PyTorch по контрастивному обучению.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →