Что такое архитектура CLIP?
Что проверяют
Понимаете ли вы идею контрастного обучения на парах и умеете ли объяснить, откуда берётся работа без дообучения. Для инженера по данным это ещё и практический вопрос: такая модель чаще всего приходит в проект как готовый энкодер под поиск и разметку, и от вас ждут понимания её границ.
Как отвечать
CLIP это два энкодера и одно общее пространство. Картинка идёт через визуальный энкодер (ViT или свёрточная сеть), текст через трансформер, оба выхода линейно проецируются в вектор одной размерности и нормируются по длине.
Обучение контрастное. В батче из N пар считается матрица косинусных близостей N на N: правильные пары стоят на диагонали, все остальные сочетания внутри батча служат негативами. Дальше симметричная кросс-энтропия по строкам и по столбцам с обучаемой температурой. Отсюда требование к большому батчу: негативы берутся из него же.
Режим без дообучения получается почти бесплатно. Имена классов подставляются в шаблон вида a photo of a, прогоняются через текстовый энкодер, и полученные векторы работают как веса линейного классификатора: считаем близость картинки к каждому и берём максимум.
Практика: эмбеддинги кладут в векторный индекс для поиска картинок текстом и наоборот, используют как признаки под линейный пробинг, для фильтрации и дедупликации датасетов, как условие для генеративных моделей.
Где спотыкаются
Называют модель генеративной и обещают описание картинки. Она ничего не порождает, а только оценивает, насколько текст и изображение соответствуют друг другу; подпись выдаёт другая архитектура.
Сводят обучение к сближению правильных пар и забывают про негативы и температуру. Без негативов задача вырождается: сеть научится выдавать один и тот же вектор на всё. Температура задаёт резкость распределения, и её обучаемость часть конструкции, а не деталь реализации.
Ждут точности там, где её нет. Счёт объектов, мелкий текст, пространственные отношения и привязка признака к нужному объекту даются плохо, а результат заметно зависит от формулировки запроса. Отсюда правило: сравнивать классы на одинаковых шаблонах и на нормированных векторах.