Adaptive Attention Span in Transformers

Sainbayar Sukhbaatar, Edouard Grave, Piotr Bojanowski, Armand Joulin

Статья: https://arxiv.org/abs/1905.07799

Бенчмарки: https://paperswithcode.com/paper/adaptive-attention-span-in-transformers



Работа идейно близкая к ACT: давайте теперь сделаем адаптивным attention span трансформера.



Проблема обычного трансформера в том, что размер контекста, по которому считается self-attention, фиксирован и кроме того не может быть большим, потому что вычисления и память растут квадратично. Для увеличения контекста недавно уже было несколько решений, например, Transformer XL или Sparse Transformer. В первом из них ввели нечто вроде рекуррентности по времени, а во втором сильно облегчили матрицу внимания за счёт факторизации. Здесь же авторы (все из FB) вводят адаптивность, слой сам определяет необходимый ему размер контекста, так что это сокращает вычислительную сложность трансформера и позволяет, где надо, иметь большой контекст.



Кроме адаптивности в обычный трансформер вводятся две модификации.



1) Относительные позиционные ембеддинги (из работы Shaw et.al, https://arxiv.org/abs/1803.02155)

2) Механизм кеширования (из работы Dai про Transformer XL, https://arxiv.org/abs/1901.02860)



Далее размер контекста (attention span) каждой головы self-attention’а выучивается независимо от других (это называется adaptive attention span) путём добавления кусочно-линейной невозрастающей функции, маскирующей attention span. Функция состоит из двух кусков: константная единица от нуля до z (выучиваемый параметр) и спадающий до нуля кусок от z до z+R (гиперпараметр).



Усовершенствованным вариантом является dynamic attention span, динамически изменяющий attention span в зависимости от текущего входа. Здесь параметр z является функцией от входа (соответствует одному полносвязному слою с сигмоидальной активацией).



Проверяли на датасетах text8 и enwiki8, пробовали модели двух размеров (маленькая: 12 слоёв и размер внутреннего эмбеддинга 512; и большая: 24 слоя и эмбеддинг 768; везде 8 голов attention’а).



Сравнивались с Transformer XL и с глубоким (64 слоя) символьным трансформером Al-Rfou (https://arxiv.org/abs/1808.04444). Большие модели получили SotA на обоих датасетах с меньшим числом параметров и с меньшими FLOPS’ами.



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



В общем прикольно, работает. В целом это довольно прямолинейный перенос идеи ACT.



Всё ещё кипятите? Тогда мы идём к вам. Что там ещё у нас в сетках зашито и не является адаптивным?