2022-02-07 13:41:58
ShiftViT: Visual Transformer без Attention (ну, почти visual transformer =) )
И снова исследователи стараются нам показать, что Attention — не панацея. Ученые из Microsoft Research взяли классическую архитектуру ViT (ну, почти классическую) и заменили в ней все слои Attention на слои Shift. В итоге получили сеть с меньшим количеством параметров и сравнимыми с ViT результатами на ImageNet.
Вот как работает ShiftViT:
Архитектура ShiftViT состоит из блоков (stages на первой картинке к посту). Как и в классическом ViT, входное изображение сначала разбивается на патчи и подается на вход первому блоку. Каждый из блоков далее состоит из двух частей: embedding generator и shift block. Embedding generator принимает на вход выход предыдущего блока и генерирует трехмерный тензор-ембеддинг размера (height, width, channels) для подачи на вход shift block. Shift block содержит три слоя: shift operation, layer norm и MLP.
Shift operation устроен очень просто: он берет на вход трехмерный тензор и "сдвигает" в нем несколько каналов вдоль разных осей на небольшое количество пикселей. Иллюстрация процедуры — на второй картинке к посту. Слой Shift не имеет обучаемых параметров: то, каким образом будут сдвигаться каналы входного тезнзора, полностью определяется гиперпараметрами. Из-за этого модель ShiftViT того же размера, что и классический ViT, имеет на ~33% меньше параметров, чем оригинальный ViT.
У ShiftViT, однако, есть еще одно небольшое отличие от ViT: во всех блоках, начиная со второго, авторы ShiftViT используют 2х2 convolution в качестве embedding generator. Еще одно доказательство, что свертки не канули в небытие, хехе.
Идея операции Shift понятна: с помощью сдвига каналов во входном тензоре и последующего применения MLP+свертки авторы добиваются обмена информации между разными частями исходного изображения. Такой суперупрощенный Attention получается.
Из-за того, что ShiftViT имеет меньше параметров, чем ViT, он должен работать быстрее. Учитывая, что ShiftViT получает сравнимые с ViT результаты на разных бенчмарках для задач классификации, детекции и сегментации, подход выглядит интересным. Однако грустно, что авторы сравнивали ShiftViT и ViT на ImageNet, но не на JFT-300M: известно, что главная фишка Трансформеров — хорошие результаты при обучении на огромном количестве данных. Интересно было бы посмотреть на результаты ShiftViT на JFT-300M: покажет ли он настолько же хорошую генерализацию.
P.S. Это не первая работа, где ученые пытаются выкинуть Attention из ViT и заменить чем-то попроще. Вот пример статьи, где Attention заменяли на обычный pooling и тоже получали хорошие результаты.
Статья
2.4K viewsedited 10:41