40 CLIP
Контекст
Классификаторы зрения учились на фиксированном наборе классов с дорогой ручной разметкой и не переносились на новые. OpenAI связывает зрение и язык.
Идея и механизм
Два энкодера — для изображения и для текста — учатся СОВМЕСТНО на 400 млн веб-пар (картинка, подпись) контрастивно: в батче максимизируем сходство правильных пар и минимизируем для всех неправильных. Формируется общее эмбеддинг-пространство, где близки семантически соответствующие картинки и тексты.
теория вероятностей Контрастивный лосс (InfoNCE) и zero-shot
В батче из N пар энкодеры дают эмбеддинги картинок Ii и текстов Tj (L2-нормированные). Матрица сходств Sij = Ii·Tj/τ. Симметричный контрастивный лосс делает диагональ (правильные пары) большой, а вне диагонали — малой:
где метки — это тождество (i-я картинка соответствует i-му тексту). Каждая правильная пара притягивается, N−1 неправильных в той же строке/столбце отталкиваются.
Zero-shot. Чтобы классифицировать картинку, сравниваем её эмбеддинг с эмбеддингами текстов «a photo of a {class}» и берём ближайший — никакого дообучения на этих классах. Так фиксированный набор меток заменяется любым текстовым описанием.
PyTorch Контрастивный лосс CLIP
import torch, torch.nn.functional as F
def clip_loss(img_emb, txt_emb, tau=0.07):
I = F.normalize(img_emb, dim=-1)
T = F.normalize(txt_emb, dim=-1)
logits = I @ T.T / tau # (N, N) сходства
labels = torch.arange(len(I)) # диагональ = правильные пары
return (F.cross_entropy(logits, labels) +
F.cross_entropy(logits.T, labels)) / 2
Почему это важно
Естественный язык как гибкий супервизор вместо фиксированных меток; CLIP сравнялся с ResNet-50 на ImageNet zero-shot. CLIP-энкодеры легли в основу text-to-image (DALL·E 2, conditioning Stable Diffusion) и мультимодальных систем.
Связи
Текстовый энкодер CLIP — наследник трансформерного предобучения языка. Идея «представить текст вектором, кодирующим смысл» (BERT/word2vec) — необходимая половина, которую CLIP связывает с визуальной.
Та же ставка на масштаб данных, но следующий уровень: вместо 14M вручную размеченных картинок — 400M веб-пар, где разметка это естественный язык. Эволюция «данные-как-двигатель»: от кураторской разметки к веб-масштабу.
Общее текст-картиночное пространство CLIP — это механизм, которым text-to-image понимает запрос: conditioning в Stable Diffusion опирается на текстовые эмбеддинги CLIP-типа. Без связи язык↔зрение генерация «по описанию» была бы невозможна.
Вопросы пытливого ума
Почему контрастивное обучение масштабируется лучше, чем предсказание подписей?
Генерировать точную подпись — задача на много порядков сложнее, чем отличить правильную пару от неправильных. Контрастив требует лишь сопоставления, а не порождения текста, поэтому учится эффективнее на шумных веб-данных. CLIP специально сравнивал оба подхода и выбрал контрастивный за скорость обучения — меньше требований, тот же сигнал.
Zero-shot чувствителен к формулировке промпта («a photo of a …») — это надёжно?
Не очень. Качество заметно зависит от шаблона: «a photo of a {class}» работает лучше голого слова, а ансамбль из многих шаблонов ещё лучше. Это тот же prompt engineering, что и в LLM. CLIP мощен, но его zero-shot — хрупкий интерфейс, требующий подбора формулировок.
400M веб-пар — что с предвзятостью и шумом?
Серьёзная проблема. Веб-подписи шумны и тенденциозны; CLIP наследует социальные стереотипы и плохо работает на редких/неевропейских концептах. Известны тревожные провалы классификации людей. Поэтому состав и происхождение данных CLIP — предмет критики, а сам он — пример того, как масштаб даёт мощь, но и тиражирует предубеждения интернета.
Что читать в оригинале
Читать ключевое — контрастивная схема и zero-shot prompt; огромный eval-свип пролистать.