Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Contrastive Learning

Контрастивное обучение сближает эмбеддинги совпадающих пар и разводит остальные примеры. Разбираем InfoNCE, SimCLR, MoCo, CLIP и код.

Контрастивное обучение учит модель создавать эмбеддинги, в которых совпадающие пары образцов, называемые положительными, располагаются близко друг к другу, а несовпадающие, называемые отрицательными, — далеко друг от друга. Пары могут формироваться из самих данных, например из двух аугментированных фрагментов одной фотографии, или из естественно связанных данных, например изображения и его подписи, поэтому для контрастивного обучения не нужны метки классов. Это один из основных семейств методов обучения с самоконтролем для изображений наряду с восстановлением маскированных данных и самодистилляцией. Обученные таким образом кодировщики создают признаки, которые переносятся на детекцию, классификацию и поиск; та же целевая функция обучает модели «зрение — язык», такие как CLIP, способные классифицировать изображения только по тексту с помощью обучения с нулевым числом примеров.

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

У контрастивного метода есть три составляющие: способ создавать положительные пары, кодировщик, преобразующий каждый образец в нормализованный эмбеддинг, и функция потерь, сравнивающая сходство. В SimCLR Тин Чен и его коллеги из Google создавали два представления каждого изображения с помощью случайного кадрирования, искажения цвета и размытия, кодировали их общим ResNet с небольшой проекционной головой и считали остальные изображения в пакете отрицательными примерами:

Аугментация данных определяет, чему модель учится не придавать значения. Поскольку два фрагмента одного изображения должны отображаться в близкие точки, кодировщик усваивает, что положение, масштаб и сдвиги цвета не меняют того, что изображено, и сохраняет признаки, отличающие одно изображение от всех остальных. С линейным классификатором, обученным на замороженных признаках SimCLR, ResNet-50, в четыре раза шире стандартного, достигла точности top-1 76.5% на ImageNet, сравнявшись с ResNet-50, обученной с учителем.

Функции потерь для контрастивного обучения#

  • Попарная контрастивная функция потерь: функция потерь 2006 года Райи Хадселла, Сумита Чопры и Яна ЛеКуна сближает каждую положительную пару и отдаляет каждую отрицательную, пока расстояние между элементами не станет как минимум равным отступу m.
  • Функция потерь на триплетах: сравнивает якорный пример с одним положительным и одним отрицательным и требует, чтобы положительный пример был ближе как минимум на величину отступа. В 2015 году Google обучила с ее помощью эмбеддинги лиц в FaceNet.
  • InfoNCE: одновременно сравнивает один положительный пример со множеством отрицательных. Если сходства s поделить на температуру τ, функция потерь для якорного примера будет равна −log[exp(s₊/τ) / Σⱼ exp(sⱼ/τ)], то есть перекрестной энтропии softmax, в которой положительный пример — правильный класс среди всех кандидатов. Аарон ван ден Оорд и его коллеги ввели это название в статье о контрастивном предиктивном кодировании в 2018 году; функции потерь NT-Xent в SimCLR и CLIP — ее варианты.
  • Сигмоидальная функция потерь: SigLIP оценивает каждую пару как независимое совпадение «да» или «нет» с помощью сигмоиды, поэтому для вычисления функции потерь не нужна нормализация по пакету.

В PyTorch InfoNCE сводится к перекрестной энтропии по матрице сходства, на диагонали которой находятся положительные примеры:

import torch
import torch.nn.functional as F

torch.manual_seed(0)
# Stand-in embeddings for 8 images, a second view of each (row i of both is a positive pair),
# and 8 unrelated images
view1 = F.normalize(torch.randn(8, 128), dim=1)
view2 = F.normalize(view1 + 0.1 * torch.randn(8, 128), dim=1)
unrelated = F.normalize(torch.randn(8, 128), dim=1)

# InfoNCE: cosine similarities divided by a temperature, then cross-entropy where
# each row's positive (the diagonal) is the correct class among all 8 candidates
temperature = 0.1
targets = torch.arange(8)
for name, keys in [("Augmented views", view2), ("Unrelated images", unrelated)]:
    logits = view1 @ keys.T / temperature
    print(f"{name}: loss {F.cross_entropy(logits, targets):.3f}")

Она выводит Augmented views: loss 0.016 и Unrelated images: loss 2.505. Когда положительный ключ в каждой строке явно наиболее схожий, значение функции потерь стремится к нулю. Для несвязанных ключей оно превышает ln 8 ≈ 2.08 — значение для равномерного случайного выбора среди восьми кандидатов, поскольку деление на температуру 0.1 превращает случайное сходство в уверенно ошибочное предсказание. Более низкая температура делает softmax более резким и сосредоточивает функцию потерь на самых сложных отрицательных примерах. В MoCo используется τ = 0.07, и CLIP инициализирует обучаемую температуру тем же значением.

Отрицательные примеры, размер пакета и варианты метода#

InfoNCE эффективнее при большем числе отрицательных примеров, поэтому их количество становится важным фактором затрат. SimCLR использовал очень большие пакеты. MoCo, разработанный Каймином Хе и его коллегами из Facebook AI Research, хранил очередь из 65,536 эмбеддингов недавних пакетов как отрицательные примеры и кодировал их медленно обновляемой копией кодировщика с импульсным обновлением; это позволяло не связывать число отрицательных примеров с размером пакета. Случайные отрицательные примеры могут оказаться ложными, например другой фотографией той же породы собак, а очень простые отрицательные примеры дают мало пользы. Поэтому поиск сложных отрицательных примеров позволяет находить образцы, которые легко перепутать. Контрастивное обучение с учителем (SupCon) использует метки, чтобы считать положительными все образцы одного класса. Методы без контрастивного обучения, например BYOL, SimSiam и DINO, полностью обходятся без отрицательных примеров и предотвращают сведение всех входных данных к одному эмбеддингу с помощью асимметричных сетей, остановки градиента или центрирования.

  • Обучение метрики: более широкая задача обучения функции расстояния, к которой относятся контрастивные функции потерь и функции потерь на триплетах. Сейчас под «контрастивным обучением» обычно подразумевают вариант самообучения с множеством отрицательных примеров, популяризированный SimCLR и MoCo.
  • Автокодировщики: обучаются восстановлению входных данных, поэтому их признаки должны сохранять детали на уровне пикселей. Контрастивные признаки сохраняют только то, что отличает один образец от остальных.
  • JEPA: предсказывает эмбеддинги скрытых областей изображения по видимым областям, обучаясь в пространстве эмбеддингов без отрицательных пар.
  • Обучение с учителем: обучает модель предсказывать фиксированный набор назначенных людьми классов, тогда как для контрастивного предварительного обучения нужно лишь правило, определяющее, какие образцы совпадают.

Применение#

  • Визуально-языковые модели: CLIP обучила кодировщики изображений и текста на 400 миллионах пар «изображение — подпись» с пакетами по 32,768 образцов, чтобы текстовые запросы могли классифицировать изображения и искать их. Модели Ultralytics YOLOE-26 кодируют названия классов с помощью текстового кодировщика Apple MobileCLIP2, обученного с контрастивной целевой функцией в стиле CLIP, а затем в контрастивной голове оценивают каждую область-кандидат относительно этих текстовых эмбеддингов, поэтому set_classes(["forklift", "pallet"]) позволяет использовать те же веса для обнаружения новых категорий.
  • Семантический поиск: эмбеддинги изображений и текста, обученные контрастивным методом, хранятся в векторной базе данных и ищутся по сходству.
  • Предварительное обучение с небольшим числом меток: в таких областях, как анализ медицинских изображений, где меток, созданных экспертами, мало, контрастивное предварительное обучение на неразмеченных снимках формирует базовую сеть, которую затем можно дообучить на небольшом размеченном наборе.
  • Распознавание лиц и повторная идентификация: контрастивные функции потерь и функции потерь на триплетах обучают эмбеддинги, в которых фотографии одного и того же человека или объекта располагаются близко друг к другу. Эмбеддинги FaceNet размерностью 128 достигли точности 99.63% на бенчмарке Labeled Faces in the Wild.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения