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

Продолжая тему предыдущего поста о DETR на основе трансформаторов и Sparse R-CNN, в этой статье мы рассмотрим недавнее совместное исследование Facebook AI и Университета Сорбонны Обучение эффективных преобразователей изображений и дистилляции посредством внимания. их модель DeiT и какие научные достижения предвосхитили эту работу.

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

Обзор

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

Представленная в 2017 году бумага Внимание - все, что вам нужно для машинного перевода в настоящее время является эталонной моделью для всех задач обработки естественного языка. Такие задачи лежат в основе все более распространенных домашних AI-помощников и чат-ботов call-центров. Трансформатор имеет возможность находить зависимости в последовательных данных произвольной длины без значительного усложнения модели. Из этого вытекает его отличная производительность при последовательном выполнении таких задач, как перевод текста с одного языка на другой или создание ответа на вопрос.

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

Здесь мы видим следующую специфику:

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

Состав

Трансформатор имеет структуру кодировщика-декодера.

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

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

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

Самовнимание

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

Упрощая, можно рассматривать внимание как получение значения из хранилища (ключа, значения) с помощью запроса. Где результирующее значение представляет собой взвешенную сумму значений на основе ‹запроса, ключа› сходства.

Авторы статьи определяют это более точно.

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

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

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

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

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

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

Визуальный трансформер

Визуальный преобразователь имеет простую и элегантную архитектуру, которая обрабатывает входное изображение как последовательность N фрагментов изображения фиксированного пространственного размера 16 × 16 пикселей. Каждый фрагмент проецируется с линейным слоем, который сохраняет его общий размер 3 × 16 × 16 = 768.

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

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

Есть три варианта DeiT. Их производительность представлена ​​в таблице ниже.

DeiT-B - это та же модель, что и ViT, то есть она имеет ту же архитектуру, но обучается по-разному. DeiT-Ti и DeiT-S - меньшего размера, только параметры, которые различаются в зависимости от модели, - это размер встраивания и количество голов в самовнимании с несколькими головками. Меньшие модели имеют меньшее количество параметров и более высокую пропускную способность. Пропускная способность измеряется для изображений с разрешением 224 × 224.

Точная настройка при разном разрешении

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

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

Дистилляция

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

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

  1. Авторы предложили маркер дистилляции, он имеет ту же природу, что и маркер класса, и используется для прогнозирования метки наравне с маркером классификации. Токен дистилляции - это вложение, он подается в сеть как токен класса и взаимодействует с другими входами посредством самовнимания. Разница между токеном класса и дистилляцией в том, что он получается из предсказаний сверточной сети, а не из наземных меток истинности.
  2. С токеном перегонки авторы пробовали как мягкую перегонку, так и жесткую перегонку. Вкратце, мягкая дистилляция пытается минимизировать расхождение Кульбака-Лейблера между softmax учителя и softmax модели ученика, в то время как жесткая дистилляция подразумевает корректировку учеников функция потерь, рассматривающая жесткое решение учителя как верный ярлык. В исследовании абляции они показывают, что жесткая дистилляция на этикетках и жетоны дистилляции работают лучше, чем другие комбинации.

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

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

Покажи мне код!

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

использованная литература

[1] Обучение преобразователей изображений и дистилляции с эффективным использованием данных посредством внимания https://arxiv.org/abs/2012.12877

[2] CS480 / 680 Лекция 19: Внимание и сети-трансформаторы https://www.youtube.com/watch?v=OyFJWRnt_AY

[3] Иллюстрированный трансформер http://jalammar.github.io/illustrated-transformer/