Механизм внимания

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(глубина, формулы, связность, второй промпт)
 
Строка 75: Строка 75:
Разные головы могут фокусироваться на синтаксисе, пунктуации, кореференции, позиционных шаблонах. На практике специализация нечёткая и зависит от слоя: нижние слои ближе к локальным паттернам, верхние — к семантике. В LLM для ускорения инференса часто уменьшают число KV-голов (см. GQA ниже), сохраняя число query-голов.
Разные головы могут фокусироваться на синтаксисе, пунктуации, кореференции, позиционных шаблонах. На практике специализация нечёткая и зависит от слоя: нижние слои ближе к локальным паттернам, верхние — к семантике. В LLM для ускорения инференса часто уменьшают число KV-голов (см. GQA ниже), сохраняя число query-голов.
-
При авторегрессионной генерации ключи и значения прошлых токенов кэшируют ('''KV-cache'''): на шаге <tex>t</tex> считают только новый query и дописывают одну строку в K/V. Объём кэша растёт как <tex>O(\text{слои} \cdot n \cdot d)</tex> и часто доминирует в стоимости обслуживания длинного диалога — ещё один стимул к GQA, квантизации кэша и скользящему окну.
+
При авторегрессионной генерации ключи и значения прошлых токенов кэшируют ('''KV-cache'''): на шаге <tex>t</tex> считают только новый query и дописывают одну строку в K/V. Объём кэша растёт как <tex>O(L \cdot n \cdot d)</tex>, где <tex>L</tex> — число слоёв и часто доминирует в стоимости обслуживания длинного диалога — ещё один стимул к GQA, квантизации кэша и скользящему окну.
== Эффективные варианты ==
== Эффективные варианты ==

Текущая версия

Статья написана с использованием LLM Claude Sonnet 4 и проверена участником Emil Petrov 20:00, 14 июля 2026 (MSD)

Промпт приводится полностью в Обсуждение:Механизм внимания


Содержание

Механи́зм внима́ния (англ. attention mechanism) — семейство операций в нейронных сетях, позволяющих модели динамически взвешивать части входа при построении каждого элемента выхода. Впервые в современном виде предложен Bahdanau, Cho и Bengio (2014) для нейронного машинного перевода[1] и стал центральным блоком трансформера и больших языковых моделей.

Аналогия: переводчик, который при каждом новом слове заново пробегает глазами исходный текст и выделяет релевантные фрагменты, а не пытается удержать весь абзац в одной «коробочке» памяти. Внимание формализует этот просмотр как мягкое (дифференцируемое) распределение весов.

Мотивировка: узкое горлышко seq2seq

В классических энкодер-декодерных RNN вся входная последовательность сжимается в один вектор фиксированной длины — контекст c. Декодер порождает перевод, опираясь только на c и собственную историю. Для коротких предложений это работает; для длинных — качество падает: ранние слова «вытесняются», а модель не может явно вернуться к нужному фрагменту входа.

Bahdanau et al. разрешили декодеру на каждом шаге t строить свой контекст c_t как взвешенную сумму всех скрытых состояний энкодера. Так появилось обучаемое мягкое выравнивание (soft alignment) между словами перевода и оригинала — без жёсткого алгоритма выравнивания вроде IBM Models.

Базовый механизм Bahdanau

Пусть h_1, \ldots, h_T — состояния энкодера, s_{t-1} — состояние декодера на предыдущем шаге. Энергия (оценка релевантности) пары (t, i):

e_{t,i} = a(s_{t-1}, h_i) = v_a^\top \tanh\!\left(W_a s_{t-1} + U_a h_i\right),

где a(\cdot) — небольшая сеть с параметрами v_a, W_a, U_a. Нормировка softmax:

\alpha_{t,i} = \frac{\exp(e_{t,i})}{\sum_{j=1}^{T} \exp(e_{t,j})}.

Контекст для шага t:

c_t = \sum_{i=1}^{T} \alpha_{t,i}\, h_i.

Коэффициенты \alpha_{t,i} удобно визуализировать как тепловую карту «какое входное слово важно для текущего выходного». Luong et al. (2015) предложили упрощённые скоринги — скалярное произведение s^\top h и общее s^\top W h — ближе к тому, что позже закрепилось в трансформере.

Мягкое vs жёсткое внимание. Описанное выше — soft attention: веса дифференцируемы, обучение end-to-end через обратное распространение. Hard attention выбирает одну позицию (или дискретное подмножество) и требует REINFORCE/вариационных оценок; в NLP почти вытеснено soft-вариантом, но идея «выбрать фрагмент» жива в retrieval и tool-use у LLM.

Scaled Dot-Product Attention

Vaswani et al. (2017)[1] сформулировали внимание как пакет матричных операций, удобный для GPU. Входы: запросы Q \in \mathbb{R}^{n \times d_k}, ключи K \in \mathbb{R}^{m \times d_k}, значения V \in \mathbb{R}^{m \times d_v}:

\text{Attention}(Q, K, V) = \text{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right) V.

Зачем делить на \sqrt{d_k}? Если компоненты q и k независимы со средним 0 и дисперсией 1, то \mathrm{Var}(q^\top k) = d_k. Без масштабирования при большом d_k аргументы softmax уходят в насыщение, градиенты становятся малыми, обучение замедляется. Масштаб возвращает дисперсию к порядку 1.

Интерпретация «библиотеки»: запрос — формулировка вопроса читателя; ключ — каталожная карточка; значение — содержимое книги. Softmax по строке даёт, какую долю внимания отдать каждой книге; выход — взвешенная сумма содержаний.

Self-, cross- и masked-attention

  • Self-attentionQ, K, V из одной последовательности. Каждый токен взаимодействует со всеми остальными за O(1) «прыжков» по графу зависимостей (против O(n) в RNN). Сложность по времени и памяти — O(n^2 d) при длине n и ширине d.
  • Cross-attention — запросы из одной модальности/последовательности (например, декодер или карта изображения), ключи и значения из другой (энкодер, текстовые эмбеддинги). Связывает перевод с оригиналом, изображение с подписью, ответ с документом в RAG.
  • Masked (causal) attention — перед softmax в запрещённые позиции пишут -\infty, обнуляя веса. Нужно для авторегрессии в GPT-подобных моделях: позиция t не видит будущее. В энкодере BERT маски нет (двунаправленный контекст); при MLM маскируются сами входные токены, а не граф внимания.

Сравнение с RNN по сложности

Self-attention RNN/LSTM Свёртка (ядро k)
Сложность на слой O(n^2 d) O(n d^2) O(k n d^2)
Длина пути между позициями O(1) O(n) O(n/k)
Параллелизм по последовательности Полный Нет Полный
Память активаций O(n^2) (без Flash) O(n) O(n)

Для коротких и средних n квадрат внимания дешевле «дорогой» RNN с большим d; для очень длинных контекстов память становится узким местом — отсюда FlashAttention, sparse/GQA и исследования SSM.

Многоголовое внимание

\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)\, W^O,
\text{head}_i = \text{Attention}(QW_i^Q,\; KW_i^K,\; VW_i^V),

где W_i^Q \in \mathbb{R}^{d_{\text{model}} \times d_k}, аналогично W_i^K, W_i^V, и W^O \in \mathbb{R}^{h d_v \times d_{\text{model}}}. Обычно d_k = d_v = d_{\text{model}} / h, так что суммарная стоимость сравнима с одной «широкой» головой.

Разные головы могут фокусироваться на синтаксисе, пунктуации, кореференции, позиционных шаблонах. На практике специализация нечёткая и зависит от слоя: нижние слои ближе к локальным паттернам, верхние — к семантике. В LLM для ускорения инференса часто уменьшают число KV-голов (см. GQA ниже), сохраняя число query-голов.

При авторегрессионной генерации ключи и значения прошлых токенов кэшируют (KV-cache): на шаге t считают только новый query и дописывают одну строку в K/V. Объём кэша растёт как O(L \cdot n \cdot d), где L — число слоёв и часто доминирует в стоимости обслуживания длинного диалога — ещё один стимул к GQA, квантизации кэша и скользящему окну.

Эффективные варианты

Квадратичность O(n^2) ограничивает длинный контекст. Основные линии атак:

  • Sparse attention (Longformer, BigBird) — локальное окно плюс глобальные токены / случайные связи; сложность O(n \log n) или O(n). Хорошо для документов, хуже улавливает произвольные дальние пары без глобальных узлов.
  • Kernel / linear attention (Performer, Linear Transformer) — аппроксимация softmax через признаки ядра: \mathrm{softmax}(QK^\top)V \approx \phi(Q)\,(\phi(K)^\top V), сложность O(n d^2). Точность зависит от аппроксимации; на коротких последовательностях выигрыш невелик.
  • FlashAttention[1]точный Softmax-attention, но без материализации полной матрицы n \times n в HBM: блоки крутятся в SRAM, используются online-softmax и recomputation на backward. Ускорение 2–4× и существенная экономия памяти; FlashAttention-2/3 усиливают параллелизм и учёт тензорных ядер.
  • Grouped Query Attention (GQA) и Multi-Query Attention (MQA) — несколько query-голов делят общие K/V. Меньше KV-кэш при генерации → выше throughput у LLM без сильной потери качества относительно полного MHA.
  • Скользящее окно и гибриды (Mistral, Gemma-подобные схемы) — локальное внимание в части слоёв плюс редкие глобальные/полносвязные слои.

Отдельно стоят альтернативы attenton-слою целиком (SSM, Mamba): они претендуют на почти линейную сложность, но экосистема LLM по-прежнему опирается на оптимизированный Softmax-attention.

Применения вне NLP

  • Компьютерное зрение — ViT применяет self-attention к патчам; DETR — к объектным запросам; в диффузии кросс-внимание связывает текст и латент изображения.
  • Рекомендательные системы — внимание по истории кликов/просмотров вместо фиксированного пулинга.
  • Биология — AlphaFold2 (Evoformer): attention по множественному выравниванию и парам остатков.
  • Графы — Graph Attention Networks (GAT): веса рёбер обучаются через attention вместо фиксированной нормировки Лапласиана.
  • Речь и аудио — Conformer и Whisper сочетают свёртки с self-attention по времени.
  • Промпт и RAG — качество ответа LLM зависит от того, какие фрагменты контекста «подсветит» внимание; отсюда важность промпт-инжиниринга и отбора документов.

Attention is not Explanation

Для специалистов важно разделение: внимание — механизм маршрутизации информации, а не автоматически достоверное объяснение решения. Jain и Wallace (2019)[1] показали, что альтернативные распределения внимания часто дают почти тот же выход, а корреляция между весами внимания и градиентными/leave-one-out мерами важности признаков слаба. Последующие работы уточняют: в некоторых задачах и слоях внимание более интерпретируемо, особенно при анализе синтаксических голов, но нельзя отождествлять \alpha_{t,i} с «причиной», по которой модель выдала класс или токен.

Практический вывод: тепловые карты внимания — полезный диагностический инструмент и источник гипотез, но для ответственности (medicine, law, credit) нужны дополнительные методы — integrated gradients, probing, causal interventions, human eval — а не только визуализация Softmax. Wiegreffe и Pinter (2019) возражают, что при дополнительных проверках (adversarial attention) часть карт всё же несёт сигнал; консенсус сообщества — осторожная интерпретация, а не полный отказ от анализа внимания.

Связь с выравниванием моделей: при RLHF и предпочтениях меняется поведение генерации, но механизм внимания остаётся тем же вычислительным примитивом — меняются веса, а не сама операция Softmax-attention. Промпт же влияет на то, какие токены окажутся в контексте и, следовательно, между какими парами возникнут большие веса.

См. также

Примечания

Литература

  • Bahdanau D., Cho K., Bengio Y. Neural Machine Translation by Jointly Learning to Align and Translate // ICLR. — 2015.
  • Luong M.-T., Pham H., Manning C. D. Effective Approaches to Attention-based Neural Machine Translation // EMNLP. — 2015.
  • Vaswani A. et al. Attention Is All You Need // NeurIPS. — 2017.
  • Dao T., Fu D. Y., Ermon S., Rudra A., Ré C. FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness // NeurIPS. — 2022.
  • Ainslie J. et al. GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints // EMNLP. — 2023.
  • Jain S., Wallace B. C. Attention is not Explanation // NAACL-HLT. — 2019.
  • Wiegreffe S., Pinter Y. Attention is not not Explanation // EMNLP. — 2019.
Личные инструменты