Янник Кильхер проанализировал линейную архитектуру Fastformer

Yannic Kilcher 28,4 тыс. 35 мин 5 мин 26.08.2021
Главное

В новом видео на своем канале немецкий исследователь искусственного интеллекта Янник Кильхер (Yannic Kilcher) разобрал научную статью «Fastformer: Additive Attention Can Be All You Need». Авторы этой работы предлагают альтернативную архитектуру внимания, призванную решить главную проблему классических трансформеров — квадратичную вычислительную сложность от длины последовательности. Однако Янник Кильхер скептически отнесся к терминологии авторов и подробно объяснил, почему предложенное решение, по его мнению, корректнее называть динамическим полносвязным слоем, а не полноценным механизмом внимания.

📉 Квадратичное бутылочное горлышко классического внимания 5:03

Чтобы понять суть инновации и причины скепсиса ведущего, необходимо вспомнить, как работает классический механизм самовнимания (Self-Attention) в трансформерах. На вход слоя подается последовательность токенов (например, слов в предложении «My house is very green»). Задача трансформера — пошагово улучшать векторные представления (эмбеддинги) этих токенов от слоя к слою, чтобы в финале каждый токен «понимал» свой смысл в контексте всего текста.

Для этого из каждого токена с помощью линейных преобразований генерируются три вектора:

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

Именно этот шаг вычисления попарных взаимодействий создает квадратичную сложность $O(N^2)$ относительно длины последовательности $N$, что делает обработку длинных текстов крайне неэффективной.

🚀 Архитектура Fastformer: аддитивный подход вместо матричного умножения 9:33

Авторы Fastformer предлагают полностью отказаться от вычисления попарных взаимодействий между токенами. На вход модели точно так же подаются независимые токены, которые через стандартные линейные трансформации превращаются в индивидуальные векторы Query, Key и Value. Однако вместо того чтобы сопоставлять каждый запрос с каждым ключом, Fastformer агрегирует все индивидуальные запросы в один-единственный глобальный вектор запроса (Global Query Vector) для каждой головы внимания.

Процесс формирования этого глобального вектора устроен следующим образом:

  1. Каждый индивидуальный вектор запроса $q_i$ умножается на фиксированный, обучаемый в процессе бэкпропагейшна вектор параметров $W$.
  2. Полученные скалярные величины пропускаются через функцию Softmax для получения весов $\alpha_i$.
  3. Исходные векторы запросов суммируются с учетом весов $\alpha_i$, формируя единый глобальный запрос.

Янник Кильхер обращает внимание на то, что математически эта процедура (умножение на обучаемый вектор с последующим Softmax) эквивалентна логистической регрессии, где вектор $W$ выступает в роли разделяющей гиперплоскости. По мнению ведущего, вектор $W$ работает как статический классификатор признаков, который в процессе обучения настраивается на поиск конкретных элементов — например, ищет в предложении названия стран. Если токен содержит такой признак, его вес $\alpha$ будет высоким, и он внесет наибольший вклад в глобальный запрос.

🔍 Элементное умножение и линейная сложность 18:02

После создания глобального вектора запроса модель должна сопоставить его с ключами. Поскольку запрос всего один, классическое скалярное произведение выдало бы на выходе один вектор вместо последовательности. Чтобы сохранить размерность, авторы Fastformer используют покоординатное (элементное) умножение (Element-wise product) глобального запроса с каждым индивидуальным вектором ключа $k_i$.

В результате получаются промежуточные векторы $P_i$. Избавиться от квадратичной сложности удается благодаря сочетанию двух линейных операций. Из-за отсутствия промежуточного нелинейного Softmax между этапами агрегации запросов и ключей начинает работать сочетательное (ассоциативное) свойство умножения. Это позволяет сначала сложить векторы, а затем умножить их как единое целое, что снижает вычислительную сложность до линейной $O(N)$.

Похожий цикл повторяется на следующем этапе:

🤨 Критика Янника Кильхера: скрытые недостатки и «обманчивый» маркетинг 24:35

Несмотря на заявленную авторами высокую эффективность, Янник Кильхер детально критикует архитектурные решения Fastformer, ставя под сомнение их логику и честность терминологии.

Во-первых, ведущего откровенно удивляет финальный шаг алгоритма, где к полученным векторам контекста $R_i$ зачем-то обратно прибавляются исходные векторы индивидуальных запросов Query в качестве остаточного соединения (Residual Connection). По мнению Кильхера, концептуально вектор запроса по своей природе не должен содержать в себе содержательную информацию, которую нужно передавать дальше по сети. Он предполагает, что этот костыль был добавлен авторами экспериментально просто потому, что без него модель вообще отказывалась работать.

Во-вторых, Янник Кильхер указывает на избыточность средней колонки (колонки ключей) в архитектурной схеме. Математически операции в колонке запросов и в колонке ключей качественно ничем не отличаются. С таким же успехом можно было бы полностью избавиться от ключей и поэлементно умножать глобальный запрос сразу на векторы значений Value, либо, наоборот, вставить между ними еще 50 аналогичных промежуточных колонок.

Главная же претензия Кильхера заключается в том, является ли Fastformer трансформером в принципе:

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

📊 Эксперименты, результаты и вердикт 32:01

В практической части статьи авторы демонстрируют хорошие результаты тестирования Fastformer. Модель сравнивали с множеством базовых архитектур на задачах анализа тональности текста (Sentiment Classification) и классификации тем (Topic Classification). Fastformer действительно показывает высокую конкурентную точность, а при увеличении длины контекста его скорость работы растет линейно, оставляя классический трансформер далеко позади по потреблению памяти.

Тем не менее Янник Кильхер называет экспериментальную базу слабой. В статье полностью отсутствуют так называемые абляционные исследования (Ablation Studies). Авторы не проверили, что произойдет с моделью, если убрать странное остаточное соединение с вектором запросов или если сократить дублирующие колонки.

В качестве резюме ведущий отмечает, что Fastformer — это вполне удачная, быстрая и легковесная архитектура для специфического пула задач. Она отлично подойдет там, где исход General-задачи зависит от глобального контекста (как в классификации текстов). Однако попытка авторов продать этот алгоритм под соусом «более быстрого трансформера», по мнению Кильхера, выглядит манипуляцией терминами ради хайпа, поскольку фундаментальные принципы работы классического Transformer здесь были ликвидированы.

💬 Цитаты

«В реальности это кажется просто разновидностью полносвязного слоя, который они предлагают.»

Янник Кильхер 01:33

«Моя главная проблема здесь — это все эти формулировки в терминах внимания и попытка выдать это за более быстрый трансформер, коим он не является.»

Янник Кильхер 35:08
👥 Спикер
📖 Термины
Трансформер (Transformer)
Архитектура нейронных сетей, основанная на механизме самовнимания, совершившая революцию в обработке естественного языка.
Квадратичная сложность
Зависимость, при которой время вычислений растет пропорционально квадрату длины входных данных.
Абляция (Ablation Study)
Эксперимент в сфере ИИ, при котором из нейросети поочередно удаляют отдельные компоненты, чтобы проверить их реальное влияние на результат.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект Fastformer Янник Кильхер Трансформер Аддитивное внимание