Модель основы CLIP
CLIP base model
Сводка статьи — Обучение переносимым визуальным моделям с помощью натурального языка
В этой статье мы рассмотрим статью по CLIP (Контрастное предварительное обучение язык-изображение). Мы извлечем ключевые концепции и разберем их для лучшего понимания. Кроме того, изображения и графики данных будут аннотированы для устранения сомнений.
![Источник изображения](https://miro.medium.com/v2/resize:fit:640/format:webp/1*RqgSr9GG1b1x6y6m38qpKA.png)
Статья: Обучение переносимым визуальным моделям с помощью натурального языка
Код: https://github.com/OpenAI/CLIP
Первая публикация: 26 февраля 2021 г.
- Оценка потенциала осознания в искусственном интеллекте научное исследование свойств показателей на основе нейронаучных теорий
- Битва за открытое искусственное интеллекта в свете генеративного искусственного интеллекта
- Динамическое ценообразование с обучением с подкреплением с нуля Q-обучение
Авторы: Алек Рэдфорд, Джон Ук Ким, Крис Хэллэси, Адитя Рамеш, Габриэль Гох, Сандхини Агарвал, Гириш Састр, Аманда Аскелл, Памела Мишкин, Джек Кларк, Гретчен Крюгер, Илья Сутскевер
Категория: мультимодальное глубинное обучение, компьютерное зрение, обработка естественного языка, основные модели, обучение представлений
Содержание
- Контекст и предыстория
- Метод
- Эксперименты
- Дополнительные материалы и ресурсы
Контекст и предыстория
CLIP (Контрастное предварительное обучение язык-изображение) — это мультимодель, которая учится находить соответствие между естественным языком и изображениями. Она обучается на 400 миллионах пар текст-изображение, собранных из интернета. Как мы узнаем позже в этой статье, CLIP обладает сильной производительностью в режиме нулевого обучения, что означает, что она хорошо справляется с задачами, отличными от тех, на которых она обучалась, без проведения какой-либо донастройки.
CLIP стремится:
- Применить успех крупномасштабных техник предварительного обучения, известных из обработки естественного языка (например, семейство GPT, T5 и BERT), к компьютерному зрению.
- Обеспечить гибкие возможности нулевого обучения, используя естественный язык вместо фиксированного набора классов.
Почему это так важно, вы можете спросить? Во-первых, многие модели компьютерного зрения обучаются на наборах данных с метками, собранных из массового участия. Эти наборы данных часто содержат сотни тысяч образцов. Некоторые исключения находятся в диапазоне нескольких миллионов образцов. Как вы можете себе представить, это очень трудоемкий и дорогостоящий процесс. Наборы данных для моделей естественного языка, с другой стороны, обычно имеют гораздо больший объем и собираются с Интернета. Во-вторых, если модель обнаружения объектов обучена на определенных классах и вы хотите добавить дополнительный класс, вам нужно будет пометить этот новый класс в ваших данных и переобучить модель.
Способность CLIP объединять естественный язык и изображения в сочетании с ее производительностью в режиме нулевого обучения привела к широкому применению во многих других популярных основных моделях, таких как UnCLIP, EVA, SAM, Stable Diffusion, GLIDE или VQGAN-CLIP, чтобы назвать некоторые.
Метод
Теперь давайте погрузимся в метод CLIP. Изображение, изображенное на рис. 1, показывает архитектуру CLIP и процесс его обучения
![Рис. 1 — Архитектура CLIP и процесс обучения. Источник изображения + аннотации автора](https://miro.medium.com/v2/resize:fit:640/format:webp/1*rOkSWndeyQdEyCVkIjlSQg.png)
Архитектура модели состоит из двух моделей-кодировщиков, одной для каждой модальности. Для кодировщика текста используется трансформатор, в то время как кодировщик изображений использует версию ResNet или ViT (Vision Transformer). Обученное линейное преобразование, по одному для каждой модальности, преобразует признаки в эмбеддинги одного размера. Наконец, вычисляется косинусная схожесть между каждым из эмбеддингов противоположной модальности и масштабируется с помощью обученного скаляра температуры. Во время обучения максимизируется косинусная схожесть между соответствующими парами, а для неправильных пар она минимизируется, отсюда и термин “контрастный” в названии фреймворка.
Есть несколько тонкостей, которые являются ключевыми для успеха, помимо большого набора данных, конечно. Во-первых, подход контрастного обучения сильно зависит от размера пакета N. Чем больше отрицательных примеров предоставляется вместе с правильными, тем сильнее сигнал обучения. CLIP был обучен на пакете размером 32 768, что довольно большой размер. Во-вторых, CLIP не обучается на точное совпадение слов, а на более простую задачу, чтобы выучить текст в целом, также называемую мешок слов (BoW).
Интересный факт: Версия CLIP, использующая модель ResNet50x64 в качестве кодировщика изображений, была обучена в течение 18 дней на 592 V100 GPUS, а версия с моделью ViT была обучена в течение 12 дней на 256 V100 GPUS. Другими словами, более 29 лет и более 8 лет соответственно на одном GPU (игнорируя тот факт, что использовался бы другой размер пакета).
После обучения модель можно использовать для классификации объектов на изображениях. Вопрос в том, как осуществлять классификацию с использованием модели, которая не была обучена классифицировать изображения, и не имеет входных меток классов, а только текстовые подсказки? На рис. 2 показано, как это делается:
![Рис. 2 - Архитектура CLIP для классификации изображений. Источник изображения + аннотации от автора](https://miro.medium.com/v2/resize:fit:640/format:webp/1*G0valEdo2WAqFPXCeUrzNA.png)
Метка класса может быть представлена в виде текстовой подсказки, состоящей из одного слова. Чтобы сообщить модели, какие классы доступны для задачи классификации, в модель вводится набор из N классов. Это огромное преимущество по сравнению с моделями классификации, обученными на фиксированном наборе меток. Теперь мы можем вводить 3 или 100 классов; это наш выбор. Как мы увидим позже, для повышения производительности CLIP метка класса преобразуется в подсказку, чтобы предоставить модели дополнительный контекст. Затем каждая подсказка передается в кодировщик текста и преобразуется в вектор вложения.
Исходное изображение передается в кодировщик изображений для получения вектора вложения.
Затем вычисляется косинусное сходство для каждой пары текстовых и изображений вложений. На полученных значениях сходства применяется функция Softmax, чтобы получить распределение вероятностей. Наконец, выбирается значение с наибольшей вероятностью в качестве окончательного прогноза.
Эксперименты и абляции
В статье о CLIP представлено большое количество экспериментов и абляций. Здесь мы рассмотрим пять из них, которые, по моему мнению, важны для понимания успеха CLIP. Вначале приведены основные выводы (как сформулировано авторами CLIP), а затем мы подробно рассмотрим детали:
- Эффективность обучения: CLIP намного эффективнее в передаче без обучения, чем наш базовый алгоритм описания изображения
- Формат текстового ввода: Проектирование и ансамблирование подсказок улучшают производительность без обучения
- Производительность без обучения: CLIP без обучения конкурентоспособен с полностью надзираемой базовой моделью
- Производительность при небольшом количестве образцов: CLIP без обучения превосходит линейные зонды при небольшом количестве образцов
- Сдвиг распределения: CLIP без обучения намного устойчивее к сдвигу распределения, чем стандартные модели ImageNet
Эффективность обучения
Во время обучения кодировщик изображений и кодировщик текста обучаются совместно, то есть с одной целью обучения и одновременно. CLIP не только выполняет контрастное обучение, но и сравнивает текстовые подсказки в целом с данным изображением, поэтому порядок слов не имеет значения. Это просто «мешок слов». Фраза «мое имя Саша» приводит к тому же вложению, что и «Саша имя мое».
Предсказание мешка слов вместо правильных слов и их позиции в фразе является гораздо более простой прокси-задачей. На рис. 3 показана точность без обучения на ImageNet в зависимости от количества образцов обучения начальной модели трансформера, обученной предсказывать точные слова, начальной модели трансформера, обученной предсказывать мешок слов, и модели CLIP, выполняющей контрастное обучение с использованием мешка слов.
«CLIP намного эффективнее в передаче без обучения, чем наш базовый алгоритм описания изображения» – Авторы CLIP
![Рис. 3 — Эффективность без обучения. Источник изображения + аннотации от автора](https://miro.medium.com/v2/resize:fit:640/format:webp/1*Q3Uwhf8zh7gAx38_QPoJkQ.png)
Формат ввода текста
Как мы видели на рис. 2, для выполнения классификации объектов метка класса была преобразована в текстовую подсказку. Конечно, это не было случайностью, потому что CLIP вполне удовлетворялся бы одним словом. Это было сделано для использования описательности языка и предоставления контекста для разрешения возможных неоднозначностей. Давайте возьмем слово “боксер” в качестве примера. Это может быть тип собаки или тип спортсмена. Авторы CLIP показали, что формат текстовой подсказки имеет большое значение и может повысить производительность и эффективность.
“Инженерия подсказок и ансамблирование улучшают нулевую производительность” — Авторы CLIP
![Рис. 4 — Инженерия подсказок и ансамблирование против классов без контекста. Источник изображения + аннотации от автора](https://miro.medium.com/v2/resize:fit:640/format:webp/1*uUEhQLb9mCizkhvDhppcOQ.png)
Производительность без обучения
В другом эксперименте авторы сравнили производительность нулевой классификации изображений CLIP с моделью, которая была обучена специально на сравниваемом наборе данных.
“CLIP без обучения конкурентоспособен с полностью супервизируемой базовой моделью” — Авторы CLIP
![Рис. 5 — CLIP без обучения против полностью супервизируемой базовой модели. Источник изображения + аннотации от автора](https://miro.medium.com/v2/resize:fit:640/format:webp/1*ENm3bFVSKrrawYlUiQeiLQ.png)
Производительность с небольшим количеством обучающих образцов
В то время как предсказатели без обучения не донастраиваются для последующей задачи, детекторы с небольшим количеством обучающих образцов делают это. Авторы провели эксперименты с несколькими общедоступными предварительно обученными моделями и сравнили их производительность с небольшим количеством образцов на 20 разных наборах данных с нулевым и небольшим количеством образцов CLIP. Модели с небольшим количеством образцов были донастроены на 1, 2, 4, 8 и 16 примеров на класс.
Интересно, что CLIP без обучения показывает примерно такую же хорошую производительность, как CLIP с 4 образцами.
При сравнении CLIP с другими моделями следует учитывать, что общедоступные модели, с которыми проводится сравнение (такие как BiT, SimCLR и ResNet), были предварительно обучены на разных и меньших наборах данных по сравнению с моделью CLIP.
“CLIP без обучения превосходит линейные зонды с небольшим количеством образцов” — Авторы CLIP
![Рис. 6 — Производительность с небольшим количеством образцов. Источник изображения + аннотации от автора](https://miro.medium.com/v2/resize:fit:640/format:webp/1*pgkxQJy3G5-luPC1LUX7uQ.png)
Сдвиг распределения
В общем случае, устойчивость модели к сдвигу распределения относится к ее способности работать так же хорошо на данных другого распределения, как на данных, на которых она была обучена. В идеале, она должна работать одинаково хорошо. На практике, ее производительность снижается.
Сравнивали устойчивость CLIP без обучения с моделью ResNet101 ImageNet. Обе модели оцениваются на естественных сдвигах распределения ImageNet, как показано на рис. 7.
“CLIP без обучения намного устойчивее к сдвигу распределения, чем стандартные модели ImageNet” — Авторы CLIP
![Рис. 7 — Сдвиг распределения. Источник изображения + аннотации от автора](https://miro.medium.com/v2/resize:fit:640/format:webp/1*rVbAJ6u9Qe2MnLF0wkMJXQ.png)
Дополнительные материалы и ресурсы
Как уже упоминалось в начале этой статьи, CLIP широко принят большим количеством проектов.
Следующий список статей, использующих CLIP:
- [UnCLIP] Иерархическая генерация текста-условий с использованием CLIP-латентных векторов
- [EVA] Исследование пределов обучения маскированных визуальных представлений в масштабе
- [SAM] Сегментация всего
- [Stable Diffusion] Синтез изображений высокого разрешения с использованием моделей латентной диффузии
- [GLIDE] Приближение к фотореалистичной генерации и редактированию изображений с помощью моделей диффузии, управляемых текстом
- [VQGAN-CLIP] Генерация и редактирование изображений в открытой области с помощью естественного языкового руководства
И список репозиториев, если вы хотите погрузиться в реализацию и протестировать ее самостоятельно:
- Официальный репозиторий OpenAI
- Python Notebook для экспериментов с CLIP
- OpenCLIP: Открытая реализация CLIP