Действительно ли Vision Transformers полезны?

Что такое трансформеры зрения?

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

Подождите… как можно использовать модель языкового перевода для классификации изображений? Хороший вопрос. Несмотря на то, что в этом посте будет подробно рассмотрена эта тема, основная идея заключается в следующем:

  1. Преобразование изображения в последовательность сглаженных фрагментов изображения
  2. Передайте последовательность патчей изображения через модель трансформатора
  3. Возьмите первый элемент выходной последовательности преобразователя и пропустите его через модуль классификации.

По сравнению с широко используемыми моделями сверточных нейронных сетей (CNN), в преобразователях изображений отсутствуют полезные индуктивные смещения (например, инвариантность перевода и локальность). Тем не менее, оказалось, что эти модели довольно хорошо работают по сравнению с популярными вариантами CNN в задачах классификации изображений, а последние достижения сделали их эффективность — как с точки зрения объема данных, так и требуемых вычислений — более разумной. Таким образом, преобразователи зрения теперь являются жизнеспособным и полезным инструментом для практиков глубокого обучения.

Фон

внимание к себе

Архитектура трансформатора состоит из двух основных компонентов: сетей прямой связи и самоконтроля. Хотя сети с прямой связью знакомы большинству, я обнаружил, что самовнимание зачастую понимается менее широко. В Интернете существует множество подробных описаний внимания к себе, но я приведу здесь краткий обзор концепции для полноты картины.

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

  • Сравнивает этот токен с любым другим токеном в последовательности
  • Вычисляет оценку внимания для каждой из этих пар
  • Устанавливает текущий токен равным средневзвешенному значению всех входных токенов, где веса задаются оценками внимания

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

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

откуда это взялось? Несмотря на использование внутреннего внимания в трансформерах, эта идея предшествует архитектуре трансформеров. Он активно использовался с архитектурами рекуррентных нейронных сетей (RNN) [6]. Однако в этих приложениях внутреннее внимание обычно использовалось для агрегирования скрытых состояний RNN вместо выполнения преобразования от последовательности к последовательности.

архитектура трансформатора

Архитектуры трансформаторов Vision очень похожи на исходную архитектуру трансформаторов, предложенную в [4]. Таким образом, базовое понимание архитектуры преобразователя, особенно компонента кодировщика, полезно для понимания преобразователей машинного зрения. В этом разделе я опишу основные компоненты трансформатора, показанные на рисунке ниже. Хотя это описание предполагает использование текстовых данных, также могут использоваться различные способы ввода (например, сглаженные участки изображения, как в преобразователях зрения).

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

Как правило, вся мини-партия размером (B x N x d), где B — размер партии, сразу передается на трансформатор. Чтобы избежать проблем с разными последовательностями, имеющими разную длину, все последовательности дополняются (т. е. с использованием нулевых или случайных значений), чтобы иметь одинаковую длину N. Заполненные области игнорируются внутренним вниманием.

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

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

  • Многоголовое внимание к себе
  • Нейронная сеть с прямой связью

За каждым из этих модулей следуют нормализация слоя и остаточное соединение. При передаче входной последовательности через эти слои представление каждого токена преобразуется с использованием:

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

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

декодер. Декодеры не имеют отношения к преобразователям изображений, архитектура которых состоит только из кодировщика. Тем не менее, мы кратко рассмотрим здесь архитектуру декодера для полноты картины. Как и кодировщик, декодер преобразователя содержит несколько слоев, каждый со следующими модулями:

  • Многоголовое внимание в маске
  • Многоголовочный энкодер-декодер Внимание!
  • Нейронная сеть с прямой связью

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

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

самостоятельная предварительная подготовка

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

Задачи с самостоятельным наблюдением (например, предсказание замаскированных слов; см. рисунок выше) могут быть созданы для обучения преобразователей на необработанных, неразмеченных текстовых данных. Поскольку такие данные широко доступны, преобразователи могут быть предварительно обучены на большом количестве текстовых данных, прежде чем их можно будет точно настроить для контролируемых задач. Такая идея была популяризирована BERT [7], который добился потрясающих улучшений в понимании естественного языка. Однако этот подход был принят во многих более поздних применениях трансформаторов (например, GPT-3 [9]).

Интересно, что, несмотря на огромное влияние самоконтролируемого обучения в приложениях на естественном языке, этот подход не был столь успешным в преобразователях зрения, хотя во многих работах предпринимались попытки применить эту идею [11, 12].

некоторые революционные применения трансформаторов…

Имея базовое представление об архитектуре трансформатора, полезно представить в перспективе резкое влияние, которое эта архитектура оказала на исследования глубокого обучения. Первоначально архитектура трансформатора была популяризирована благодаря успеху в языковом переводе [4]. Однако эта архитектура продолжает революционизировать многочисленные области исследований глубокого обучения. Несколько известных применений трансформаторов (в хронологическом порядке) перечислены ниже:

  • BERT использует предварительное обучение с самоконтролем для изучения высококачественных языковых представлений [бумага][код]
  • GPT-2/3 использует архитектуру преобразователя только для декодера, чтобы произвести революцию в генеративном языковом моделировании [блог][бумага]
  • AlphaFold2 использует архитектуру преобразователя для решения давней проблемы сворачивания белка [бумага][код].
  • DALLE-2 использует латентные (и распространение) CLIP для достижения шокирующих результатов в мультимодальной генерации [блог][бумага]

Хотя области применения трансформеров обширны, главный вывод, который я хочу подчеркнуть, прост: трансформеры чрезвычайно эффективны при решении самых разных задач.

Публикации

Изображение стоит 16x16 слов: трансформеры для распознавания изображений в масштабе [1]

Хотя архитектура преобразователя оказала огромное влияние на область обработки естественного языка, расширение этой архитектуры на компьютерное зрение потребовало времени. Первоначальные попытки объединить популярные архитектуры CNN с модулями самоконтроля для создания гибридного подхода, но эти методы уступили архитектурам CNN на основе ResNet.

Помимо интеграции компонентов, подобных преобразователям, в архитектуры CNN, в [1] была предложена модель классификации изображений, которая непосредственно использует архитектуру преобразователя. Модель Vision Transformer (ViT) делит базовое изображение на набор участков, каждый из которых выравнивается и проецируется (линейно) на фиксированное измерение. Затем к каждому патчу изображения добавляется встраивание положения, указывающее местоположение каждого патча в изображении. Подобно любой другой архитектуре преобразователя, вход модели — это просто последовательность векторов; см. ниже.

Авторы принимают базовую и большую BERT [7] (т. е. архитектуру преобразователя только для кодировщика) для своей архитектуры, которая затем обучается путем присоединения головы контролируемой классификации к первому токену в выходных данных модели. Для обучения следует двухэтапная процедура предварительной подготовки и тонкой настройки. Для контролируемого предварительного обучения используется набор данных JFT-300M (очень большой), ImageNet-21K (большой) или ImageNet-1K (средний). Затем модель настраивается на некотором целевом наборе данных (например, Oxford Flowers или CIFAR-100), после чего измеряется окончательная производительность.

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

Обучение преобразованию изображений с эффективным использованием данных и дистилляция с помощью внимания [2]

Хотя в предыдущей работе было продемонстрировано, что преобразователи зрения эффективны для классификации изображений, такие результаты основывались на тщательном предварительном обучении на внешних наборах данных. Например, лучшие модели ViT выполняли предварительное обучение на наборе данных JFT-300M, содержащем 300 миллионов изображений, перед тонкой настройкой и оценкой модели на последующих задачах.

Хотя в предыдущей работе утверждалось, что необходимы обширные процедуры предварительного обучения, авторы в [3] предложили альтернативное предложение, названное Data-efficient Image Transformer (DeiT), которое использует кураторскую процедуру дистилляции знаний для обучения трансформеров зрения высокой эффективности. -1 точность без каких-либо внешних данных или предварительной подготовки. Фактически весь учебный процесс можно пройти за три дня на одном компьютере.

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

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

Во время тестирования вывод токена для класса и токены дистилляции объединяются и используются для прогнозирования окончательного вывода сети. Модель DeiT превосходит несколько предыдущих вариантов ViT, предварительно обученных на больших внешних наборах данных. DeiT достигает конкурентоспособной производительности при предварительном обучении в ImageNet и точной настройке для последующих задач. Другими словами, он обеспечивает впечатляющую производительность без использования внешних обучающих данных.

Помимо своей впечатляющей точности, модифицированная стратегия обучения в DeiT также весьма эффективна. Принимая во внимание пропускную способность (то есть количество изображений, обрабатываемых моделью в секунду) различных моделей классификации изображений, DeiT достигает баланса между пропускной способностью и точностью, который аналогичен широко используемой модели EfficientNet [4]; см. рисунок ниже.

Изучение переносимых визуальных моделей из наблюдения за естественным языком [3]

Сравнительная модель предварительного обучения язык-изображение (CLIP) — недавно вновь ставшая популярной благодаря ее использованию в DALLE-2 — была первой, которая показала, что большое количество зашумленных пар изображение-заголовок можно использовать для изучения высококачественных представлений изображения и текст. Предыдущая работа изо всех сил пыталась правильно использовать такие слабо контролируемые данные из-за использования плохо продуманных задач перед обучением; например, прямое предсказание каждого слова подписи с использованием языковой модели. CLIP представляет более простую задачу перед обучением — сопоставление изображений с правильной подписью в группе потенциальных подписей. Эта упрощенная задача обеспечивает лучший обучающий сигнал для модели, что позволяет изучать высококачественные изображения и текстовые представления во время предварительного обучения.

Модель, используемая в CLIP, состоит из двух основных компонентов: кодировщик изображения и кодировщик текста; см. рисунок выше. Кодер изображения реализуется либо как CNN, либо как модель преобразователя зрения. Однако авторы обнаруживают, что вариант CLIP с преобразователем зрения обеспечивает повышенную вычислительную эффективность во время предварительной подготовки. Текстовый кодировщик представляет собой простую архитектуру преобразователя, состоящую только из декодера, что означает, что в слоях преобразователя используется замаскированное внутреннее внимание. Авторы решили использовать маскированное самовнимание, чтобы в будущем текстовый компонент CLIP можно было расширить для приложений языкового моделирования.

Используя эту модель, задача предварительного обучения реализуется путем раздельного кодирования изображений и подписей, а затем применения нормализованной кросс-энтропийной потери в температурном масштабе для сопоставления представлений изображений с соответствующими представлениями подписей. Полученная в результате модель CLIP произвела революцию в производительности нулевого выстрела для классификации изображений, повысив точность теста нулевого выстрела в ImageNet с 11,5% до 76,2%. Для выполнения нулевой классификации авторы просто:

  • Закодируйте имя каждого класса с помощью текстового кодировщика.
  • Кодировать изображение с помощью кодировщика изображений
  • Выберите класс, который максимизирует косинусное сходство с кодировкой изображения.

Такая процедура изображена на рисунке выше. Подробнее о CLIP читайте в моем предыдущем обзоре модели.

ViTs работают… но практичны ли они?

Лично я изначально довольно скептически относился к использованию преобразователей зрения, несмотря на то, что знал об их впечатляющих характеристиках. Процесс обучения казался слишком затратным в вычислительном отношении. Однако большая часть вычислительных затрат на обучение преобразователей зрения связана с предварительным обучением. В [2] авторы устранили необходимость обширного предварительного обучения и прямо продемонстрировали, что пропускная способность обучения преобразователей зрения сравнима с высокоэффективными архитектурами CNN, такими как EfficientNet. Таким образом, преобразователи зрения являются жизнеспособным и практичным инструментом глубокого обучения, поскольку их накладные расходы незначительно превосходят обычные CNN.

Выводы

Хотя трансформеры широко используются в обработке естественного языка, этот обзор должен (надеюсь) показать тот факт, что они также полезны для задач компьютерного зрения. CNNS трудно превзойти, поскольку они достигают впечатляющих уровней производительности эффективным образом — как с точки зрения данных, так и с точки зрения вычислений. Однако недавние модификации архитектуры преобразователя зрения, описанные в [2], ясно показали, что преобразователи зрения лучше работают по сравнению с CNN и на самом деле довольно эффективны.

Преобразователи видения в коде. Тем, кто заинтересован во внедрении и/или экспериментировании с архитектурами преобразования зрения, я бы порекомендовал начать здесь. Это руководство позволяет вам (i) загрузить предварительно обученные параметры ViT и (ii) точно настроить эти параметры для последующих задач машинного зрения. Я нахожу код в этом руководстве довольно простым для понимания. Этот код можно легко распространить на другие приложения или даже реализовать некоторые из более сложных процедур обучения, описанных в [2] или другой работе.

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

  • Pyramid Vision Transformer: универсальная основа для плотного предсказания без сверток [бумага]
  • Tokens-to-Token ViT: обучение трансформеров видения с нуля на ImageNet [бумага]
  • MLP-микшер: архитектура, полностью состоящая из млп для зрения [бумага]

Заключение

Большое спасибо за чтение этой статьи. Если вам понравилось, подпишитесь на мой информационный бюллетень Deep (Learning) Focus, где я выбираю одну двухнедельную тему в исследованиях глубокого обучения, предоставляю понимание соответствующей справочной информации, а затем делаю обзор нескольких популярных статей по этой теме. . Я Кэмерон Р. Вульф, научный сотрудник Алегион и аспирант Университета Райса, изучающий эмпирические и теоретические основы глубокого обучения. Вы также можете ознакомиться с моими другими работами на Medium!

Библиография

[1] Досовицкий, Алексей и др. «Изображение стоит 16x16 слов: трансформеры для распознавания изображений в масштабе». препринт arXiv arXiv:2010.11929 (2020 г.).

[2] Туврон, Хьюго и др. «Обучение преобразователям изображений и дистилляции с эффективным использованием данных с помощью внимания». Международная конференция по машинному обучению. ПМЛР, 2021.

[3] Рэдфорд, Алек и др. «Изучение переносимых визуальных моделей под контролем естественного языка». Международная конференция по машинному обучению. ПМЛР, 2021.

[4] Васвани, Ашиш и др. «Внимание — это все, что вам нужно». Достижения в области нейронных систем обработки информации 30 (2017 г.).

[5] Тан, Минсин и Куок Ле. «Efficientnet: переосмысление масштабирования модели для сверточных нейронных сетей». Международная конференция по машинному обучению. ПМЛР, 2019.

[6] Лин, Чжоухан и др. «Структурированное самовнимательное встраивание предложений». препринт arXiv arXiv:1703.03130 (2017 г.).

[7] Девлин, Джейкоб и др. «Берт: предварительная подготовка глубоких двунаправленных преобразователей для понимания языка». препринт arXiv arXiv:1810.04805 (2018 г.).

[8] Рэдфорд, Алек и др. «Языковые модели — это неконтролируемые многозадачные учащиеся». Блог OpenAI 1.8 (2019): 9.

[9] Браун, Том и др. «Языковые модели — это малоэффективные ученики». Достижения в области нейронных систем обработки информации 33 (2020): 1877–1901.

[10] Рамеш, Адитья и др. «Генерация иерархического текстового условного изображения с скрытыми клипами». препринт arXiv arXiv:2204.06125 (2022).

[11] Чен, Синьлей, Сайнин Се и Каймин Хэ. «Эмпирическое исследование обучения преобразователей зрения с самоконтролем». Материалы Международной конференции IEEE/CVF по компьютерному зрению. 2021.

[12] Карон, Матильда и др. «Новые свойства преобразователей зрения с самоконтролем». Материалы Международной конференции IEEE/CVF по компьютерному зрению. 2021.