2020: Экспансия Трансформеров в Компьютерном Зрении. Модель DeiT |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2021-01-04 20:10 В предыдущие годы трансформеры очень хорошо показали себя в области 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. Выделяются следующие особенности:
Структура Крупным планом трансформер имеет структуру кодирофщика-декодировщика. Он получает токены на вход энкодера и отдаёт токены из декодера. Обе его половины содержат составные блоки, которые немного отличаются в кодировщике и декодировщике. Первым элементом блока является 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) — модели предложенной в этой статье. Новизна в обозреваемой сегодня статье по существу заключается в следующих трех аспектах:
На графике вы можете видеть сравнение по качеству и скорости на ImageNet между вариациями предложенной модели, вариациями ViT и EfficientNet (свёрточная сеть) 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 (индуктивное смещение) — феномен описанный в этой статье. Перед тем, как перейти к сравнительным таблицам, перечислю несколько инсайтов, которые я извлек из статьи:
Из экспериментов статьи видно, что используя сверточную сеть как учителя, 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 Комментарии: |
|