2020: Экспансия Трансформеров в Компьютерном Зрении. Модель DeiT

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


В предыдущие годы трансформеры очень хорошо показали себя в области NLP. Они значительно улучшили качество языковых моделей, а их влияние сегодня сравнимо с тем, что происходило в области обработки изображений, с момента появления на сцене свёрточных нейронных сетей в 2012 году. В конце 2020 года мы наблюдали как CV модели, основанные на трансформерах, входят в топы хорошо-известных бенчмарков, таких как классификация изображений на ImageNet и детекция объектов на датасете COCO.

Продолжая тему предыдущего поста про модели DETR и Sparse R-CNN, основанные на трансформере, в этой статье мы рассмотрим недавно опубликованное совместное исследование Facebook AI и университета Сорбонны “Training data-efficient image transformers & distillation through attention”. В этой статье рассмотрим модель DeiT и поймём, какие научные достижения предвосхитили эту работу.

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

Обзор

Многие улучшения сверточных нейронных сетей для классификации изображений, вдохновлены трансформерами. Например, Squeeze and Excitation, Selective Kernel и Split-Attention Networks используют self-attention mechanism сродни тому, как это происходит в трансформерах.

Представленная в 2017 году статья “Attention Is All You Need” для машинного перевода, сегодня является эталонной моделью для всех задач обработки естественного языка. Такие задачи лежат в основе становящихся всё более распространнёнными домашних помощников и чат-ботов в колл-центрах. Трансформер обладает способностью выучивать зависимости в последовательных данных произвольной длины, значительно не усложняя модель при обработке более длинных последовательностй. Отсюда вытекает его высокая эффективность на задачах sequence to sequence, таких как перевод предложений с одного языка на другой или генерация ответа в зависимости от вопроса.

До трансформеров в этой области применялись рекуррентные нейронные сети. Далее мы рассмотрим, какие недостатки есть у RNN по сравнению с трансформерами. Взглянем на слайд ниже, который взят из лекции Pascal Plupart в университете Waterloo.

Сравнение особенностей RNN и трансформера

Выделяются следующие особенности:

  1. Чтобы работать с длинными последовательностями и для того, чтобы находить зависимости в таких данных, нужно использовать LSTM или GRU с высокой степенью рекурсии, что на практике означает, что нужно обучать очень глубокую нейронную сеть. С другой стороны, трансфермер может не быть соизмеримо глубоким, чтобы улавливать зависимости в данных на больших расстояниях.
  2. У трансформеров нет присущей рекуррентным сетям проблемы взрывающихся и затухающих градиентов, поскольку вместо того, чтобы выполнять вычисления линейно (шаг за шагом) для последовательности, трансформер обрабатывает всю последовательность за один проход. А также, потому что трансформер в общем случае менее глубокая сеть, чем RNN.
  3. Благодаря своей архитектуре, трансформер требует меньше шагов обучения, чем RNN, и отсутствие рекурсии позволяет распараллеливать вычисления. Трансформер может обрабатывать батчи последовательностей.

Структура

Крупным планом трансформер имеет структуру кодирофщика-декодировщика.

Он получает токены на вход энкодера и отдаёт токены из декодера. Обе его половины содержат составные блоки, которые немного отличаются в кодировщике и декодировщике.

Первым элементом блока является self-attention слой, он призван помочь блоку закодировать часть входных данных, учитывая остальные части данных во входе и их позиции. Например, слово внутри одного предложения. Выход из self-attention попадает в feed forward слой, который путём линейных преобразований и функций активации, создает новое представление данных. Блок декодера имеет дополнительный маскирующий слой, который скрывает из видимости self-attention, следующие за сгенерированным токеном элементы последовательности. Декодер принимает не только данные из энкодера, но и также эмбеддинги токенов, которые уже были сгенерированны на предыдущем этапе.

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

Self-attention

Этот слой очень важен в архитектуре трансформера и модель DeiT также полагается на него.

Крайне упрощенно, можно рассматривать механизм внимания или attention как извлечение значения (value) из некоторой базы, хранящей значения по ключу, т.е. состоящей из пар (key, value), с помощью запроса (query). Возвращаемое значение будет взвешенной суммой значений, где весами выступают меры схожести между данными query и всеми ключами из базы.

Более точно, механизм внимания основан на обучаемой ассоциативной памяти с векторными парами (key, value). Вектор запроса query сопоставляется с набором k ключевых векторов (образующих вместе в матрицу K) с помощью скалярных произведений. Эти произведения, затем масштабируется и нормируются функцией Softmax, чтобы получить k весов. Выходная взвешенная сумма может быть записана в следующем виде:

где Softmax применяется построчно к входной матрице и d — размерность векторов; делим на корень из d в целях нормализации.

Архитектура DeiT

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

  1. Авторы нашли способ обучать visual transformer эффективно без огромного количества размеченных данных, в то время как авторы ViT утверждают обратное.
  2. В данной статье осуществляются различные эксперименты с тем, как делать дистилляцию на основе знаний из сверточной сети - учителя, поскольку архитектуры сверточных сетей хранят в себе десятилетие тюнинга и оптимизаций.
  3. И они показывают, что их модель, обученная с дистилляцией, работает лучше в терминах баланса между точностью и количеством обрабатываемых картинок в секунду.

На графике вы можете видеть сравнение по качеству и скорости на ImageNet между вариациями предложенной модели, вариациями ViT и EfficientNet (свёрточная сеть)

Источник https://ai.facebook.com/blog/data-efficient-image-transformers-a-promising-new-technique-for-image-classification

Visual Transformer

Visual transformer имеет простую и элегантную архитектуру, которая рассматривает изображение как последовательность из N патчей фиксированного размера 16 на 16 пикселей. Каждый такой патч обрабатывается полносвязным слоем, который принимает на вход вектор размера 3 ? 16 ? 16 = 768 (где 3 это количество каналов изображения).

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

ViT использует токен класса, аналог лейбла при обучении сверточной сети. Такой способ был предложен для классификации текстов в работе BERT.

Авторы DeiT предлагают три версии их модели. Характеристики указаны в таблице ниже:

DeiT-B это ровно такой же ViT, но обученный по-новой схеме. DeiT-Ti и DeiT-S — это просто уменьшенные версии: единственное отличие в них от Deit-B заключается в размере эмбеддингов и количестве голов у multi-head self-attention. Более маленькие модели имеют меньшее число параметров и обрабатывают картинки быстрее. Скорость обработки измерял на картинках размера 224 на 224.

Файн-тюнинг на увеличенном разрешении

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

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

Дистилляция

В дополнение к жесткой аугментации и файн-тюнингу на больших разрешениях, авторы предлагают использовать технику, которая заметно улучшает качество DeiT по сравнению с ViT. Они применяют knowledge distillation из сверточных сетей при обучении DeiT и выдвигают предположение, что так сеть выучивает inductive bias (индуктивное смещение) — феномен описанный в этой статье.

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

  1. Авторы предлагают использовать дистилляционный токен, он имеет такую же природу как и классификационный токен и используется на равне с ним для дачи финального предсказания моделью. Этот токен является эмбеддингом: он подается на вход нейронной сети так же, как и классификационный, взаимодействуя с другими вводными данными (патчами изображения) через self-attention. Разница между токеном класса и дистилляционным токеном заключается в том, что последний получен из предсказания сверточной нейронной сети, а не из ground truth.
  2. Наряду с токеном дистилляции, авторы пробуют два способа дистилляции с лейблом: soft distillation и hard distillation. Коротко об этих двух подходах: soft distillation стремится минимизировать дивергенцию Кульбака — Лейблера между выходными распределеними учителя и ученика, в то время как hard distillation корректирует лосс ученика таким образом, что ответы учителя трактуются как “true labels”. Авторы показывают, что hard distillation на лейблах плюс токен дистилляции у них работают лучше, чем другие комбинации методов.

Из экспериментов статьи видно, что используя сверточную сеть как учителя, DeiT-B достигает качества выше, чем сам учитель. Например, RegNetY-8.0GF показывает качество на два пункта хуже, чем ее ученик (качество модели в данной статье немногим выше, чем в оригинальной статье, поскольку здесь использовалась другая техника аугментации)

В таблице выше видно, как точность DeiT-B изменяется при переходе от претрейна к файн-тюнингу (3й и 4й столбцы), в зависимости от того, какой алгоритм используется в качестве учителя (варианты учителей расположены по строкам). Точность предобученного учителя указана во втором столбце.

Show me the code!

В этой финальной секции вы можете найти ссылку на код к этой статье. Инженеры из Facebook AI подготовили скрипты с описанием всех трёх DeiT моделей, но к сожалению пока там нельзя найти предлагаемую процедуру дистилляции. Как описано в одном из issue репозитория, этот код должен скоро быть добавлен.

Статья подготовлена и выпущена при участии LabelMe. Мы делаем качественные датасеты в сжатые сроки. Никакой возни с шаблонами. Поручи сбор датасета опытной команде , где есть жесткие критерии качества. Ты можешь сам убедиться в этом, получив бесплатную тестовую разметку уже через 3 часа после оформления заявки на нашем сайте. Или свяжись напрямую с CEO LabelMe Георгием Каспарьянцем: +7 (926)345 53 82.

Источник: m.vk.com

Комментарии: