Мы исследуем пределы того, что модели языка видения могут получить о языке, в нашем устном докладе на ICLR 2023.

Мультимодальный ИИ — это притча во всем городе. С недавним выпуском GPT-4 мы видим множество новых возможных приложений и технологий будущего, которые были немыслимы шесть месяцев назад. Действительно, модели языка видения в целом очень полезны для многих различных задач. Например, с помощью CLIP вы можете выполнять классификацию изображений с нулевым снимком на невидимых наборах данных, часто получая надежную производительность без необходимости чего-либо обучать.

В то же время модели зрительного языка также несовершенны. Здесь мы исследуем ограничения этих моделей, выделяя, где и почему они могут дать сбой. Этот пост в блоге представляет собой краткое/высокоуровневое описание нашей недавней статьи, которая будет представлена ​​в качестве устного выступления на ICLR 2023. Если вы хотите взглянуть на код, просто нажмите здесь.

Юксекгонул, М., Бьянки, Ф., Каллури, П., Джурафски, Д., и Зоу, Дж. (2023). Когда и почему модели языка видения ведут себя как мешки со словами, и что с этим делать? ICLR.

Введение

Что такое модель языка видения?

Модели Vision-Language произвели революцию в этой области, используя синергию между визуальными и лингвистическими данными для выполнения различных задач. Хотя в литературе было представлено множество моделей языка видения, CLIP является наиболее известной и широко распространенной моделью.

Благодаря встраиванию изображений и надписей в одно и то же векторное пространство CLIP позволяет выполнять межмодальные рассуждения, позволяя пользователям выполнять такие задачи, как классификация изображений с нулевым снимком и поиск текста в изображении с хорошей точностью. CLIP использует контрастный подход к обучению для изучения встраивания изображений и подписей.

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

Сравнительное обучение делает так, что CLIP может научиться связывать изображения с соответствующими подписями, минимизируя расстояние между ними в общем векторном пространстве. Этот подход оказался очень эффективным, о чем свидетельствуют впечатляющие результаты, достигнутые с помощью CLIP и других моделей на основе контрастов.

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

Пример возможного шага партии и обучения показан на изображении ниже:

  • Фиолетовые квадраты содержат вставки для всех подписей, а зеленые квадраты содержат вставки для всех изображений.
  • Квадраты матрицы содержат скалярное произведение (читается как «косинусное сходство», поскольку вложения нормализованы) всех вложений изображений в пакете и всех вложений текста.
  • Синие квадраты содержат скалярное произведение между парами, для которых модель должна максимизировать сходство, другие белые квадраты — это сходства, которые мы хотим минимизировать (поскольку каждый из этих квадратов содержит сходство несоответствующей пары изображение-текст, например, изображение кота и описание «мой винтажный стул»).

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

Модели визуального языка, такие как CLIP, стали мощными инструментами для решения сложных задач ИИ за счет интеграции визуальной и лингвистической информации. Их способность встраивать оба типа данных в общее векторное пространство обеспечивает беспрецедентный уровень точности и производительности в широком диапазоне приложений.

Понимают ли модели языка видения язык?

Наша работа пытается сделать несколько шагов вперед, чтобы ответить на этот вопрос. Ведутся серьезные споры о том, понимают ли глубокие модели язык и в какой степени. Здесь наша цель — исследовать модели языка видения и их композиционные способности. Сначала мы предлагаем новый набор данных, чтобы проверить понимание композиции; этот новый тест называется ARO (Атрибуция, отношения и порядок). Затем мы исследуем, почему контрастные потери могут быть ограничены в этом контексте. Наконец, мы предлагаем простое, но многообещающее решение этой проблемы.

Новый контрольный показатель: атрибуция, отношения и порядок

Насколько хорошо модели, подобные CLIP (и BLIP, более поздняя модель от Salesforce), справляются с пониманием языка?

Мы собираем набор композиционных подписей на основе атрибутов (например, «красная дверь и стоящий человек») и композиционных подписей на основе отношений (например, «лошадь ест траву») с соответствующими соответствующими изображениями. Затем мы генерируем альтернативные ложные подписи, такие как «трава ест лошадь». Могут ли модели найти правильный заголовок? Мы также исследуем эффект перетасовки слов: предпочитают ли модели подписи без перетасовки?

Четыре набора данных, которые мы создаем для атрибутов, отношений и порядка (ARO), показаны на следующем изображении (обратите внимание, что порядок содержит два набора данных):

  • Атрибуция проверяет понимание атрибутов: "асфальтированная дорога и белый дом" против "белый дорога и мощеный дом”.
  • Связь проверяет понимание отношений: «лошадьест траву»и «трава ест лошадь».
  • Наконец, Order проверяет устойчивость моделей к перетасовке порядков: мы случайным образом перемешиваем заголовки стандартных наборов данных (например, MSCOCO).

Могут ли модели языка зрения найти правильную подпись, соответствующую изображению? Задача кажется простой, мы ожидаем, что модель поймет разницу между «лошадь ест траву» и «трава ест лошадь», верно? Я имею в виду, кто хоть раз видел, чтобы трава что-то ела?

Ну, наверное, BLIP, так как он не способен понять разницу между «лошадь ест траву» и «трава ест лошадь»:

Давайте теперь посмотрим некоторые результаты. Немногие модели выходят за рамки случайности в понимании отношений (например, в еде). CLIP чуть выше случайности в атрибуции и связи. Это на самом деле говорит о том, что существует проблема с моделями языка видения.

Критика извлечения и потери контраста

Один из основных результатов этой работы заключается в том, что, вероятно, для изучения языка нам нужно нечто большее, чем стандартная контрастивная потеря; но почему?

Начнем с самого начала: модели языка видения часто оцениваются в задачах поиска: возьмите подпись и найдите изображение, с которым она связана. Если вы посмотрите на наборы данных, используемые для оценки этих моделей (например, MSCOCO, Flickr30K), вы увидите, что они обычно содержат изображения, которые описываются подписями, для понимания которых требуются композиционные способности (например, «оранжевый кот на красном фоне»). стол"). Так почему же модели не учатся композиционному пониманию, если подписи сложные?

Спойлер: вам не обязательно разбираться в композиции, чтобы выполнять поиск в этих наборах данных.

Мы попытались лучше понять проблему и протестировали производительность моделей при поиске, когда мы перемешиваем порядок слов в подписи. Можем ли мы найти правильное изображение подписи «книги, на которых смотрят люди»? Если ответ положительный, это означает, что информация о заказе не требуется для поиска правильного изображения.

Мы протестировали различные процедуры перетасовки, и ответ положительный: даже при использовании различных методов перетасовки производительность поиска в значительной степени не снижается.

Скажем еще раз: модели языка видения обеспечивают высокую производительность при поиске — в этих наборах данных — даже когда информация о заказе недоступна. Эти модели могут вести себя как мешок слов, где порядок не имеет значения: если моделям не нужно понимать слова порядок, чтобы хорошо выполнять поиск, что мы на самом деле из себя представляем? измерение с поиском?

Что с этим делать?

Что ж, теперь, когда мы знаем, что есть проблема, мы можем захотеть найти решение. Самый простой из них следующий: заставить CLIP понять, что «кот на столе» отличается от «стол на коте».

Действительно, одна вещь, которую мы предлагаем, — это улучшить обучение CLIP, добавив жесткие негативы, специально предназначенные для решения этой проблемы. Это очень простое и эффективное решение: оно требует очень незначительного редактирования исходных потерь CLIP, которое не ставит под угрозу общую производительность (с некоторыми предостережениями, которые вы можете прочитать в статье). Мы назвали эту версию CLIP NegCLIP.

По сути, мы просим NegCLIP поместить изображение черного кота рядом с предложением «черный кот сидит на столе», но далеко от предложения «черный стол сидит на коте». Последний генерируется автоматически с помощью тегов POS.

Эффект от этого исправления заключается в том, что оно может фактически повысить производительность в тесте ARO без ущерба для производительности поиска или производительности по сравнению с последующими задачами, такими как поиск и классификация. На следующем рисунке показаны результаты различных тестов (подробности в статье).

Вы можете видеть значительное улучшение по сравнению с эталонными тестами ARO и незначительное улучшение или аналогичную производительность в других последующих задачах.

Код!

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

Пара строк Python — это все, что вам нужно, чтобы загрузить наборы данных и начать работать!

import clip
from dataset_zoo import VG_Relation, VG_Attribution

model, image_preprocess = clip.load("ViT-B/32", device="cuda")

root_dir="/path/to/aro/datasets"
# Setting download=True will download the dataset to `root_dir` if it's not already there. 
# For VG-R and VG-A, this is a 1GB zip file that is a subset of GQA.

vgr_dataset = VG_Relation(image_preprocess=preprocess, 
                download=True, root_dir=root_dir)
vga_dataset = VG_Attribution(image_preprocess=preprocess, 
                download=True, root_dir=root_dir)

# Do anything with the dataset. Each item will look like this : 
# item = {"image_options": [image], "caption_options": [false_caption, true_caption]}

Мы также выпускаем реализацию NegCLIP (которая на самом деле является ответвлением OpenCLIP). См. код здесь.

Прощание

Спасибо за прочтение! Надеюсь, это было интересно. Модели Vision-Language уже могут многое, и нам не терпится увидеть, на что способны будущие модели, такие как GPT4!

Благодарности

Спасибо Мерт за все предложения!

Связанные вещи

Если вы хотите узнать больше о CLIP, я написал сообщение в блоге, в котором рассказывается немного подробнее.



Я также настроил CLIP на данные о моде. Вот запись в блоге, которая может вас заинтересовать!