Механизм внимания
Материал из MachineLearning.
(глубина, формулы, связность, второй промпт) |
|||
| Строка 75: | Строка 75: | ||
Разные головы могут фокусироваться на синтаксисе, пунктуации, кореференции, позиционных шаблонах. На практике специализация нечёткая и зависит от слоя: нижние слои ближе к локальным паттернам, верхние — к семантике. В LLM для ускорения инференса часто уменьшают число KV-голов (см. GQA ниже), сохраняя число query-голов. | Разные головы могут фокусироваться на синтаксисе, пунктуации, кореференции, позиционных шаблонах. На практике специализация нечёткая и зависит от слоя: нижние слои ближе к локальным паттернам, верхние — к семантике. В LLM для ускорения инференса часто уменьшают число KV-голов (см. GQA ниже), сохраняя число query-голов. | ||
| - | При авторегрессионной генерации ключи и значения прошлых токенов кэшируют ('''KV-cache'''): на шаге <tex>t</tex> считают только новый query и дописывают одну строку в K/V. Объём кэша растёт как <tex>O( | + | При авторегрессионной генерации ключи и значения прошлых токенов кэшируют ('''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 вся входная последовательность сжимается в один вектор фиксированной длины — контекст . Декодер порождает перевод, опираясь только на
и собственную историю. Для коротких предложений это работает; для длинных — качество падает: ранние слова «вытесняются», а модель не может явно вернуться к нужному фрагменту входа.
Bahdanau et al. разрешили декодеру на каждом шаге строить свой контекст
как взвешенную сумму всех скрытых состояний энкодера. Так появилось обучаемое мягкое выравнивание (soft alignment) между словами перевода и оригинала — без жёсткого алгоритма выравнивания вроде IBM Models.
Базовый механизм Bahdanau
Пусть — состояния энкодера,
— состояние декодера на предыдущем шаге. Энергия (оценка релевантности) пары
:
где — небольшая сеть с параметрами
. Нормировка softmax:
Контекст для шага :
Коэффициенты удобно визуализировать как тепловую карту «какое входное слово важно для текущего выходного». Luong et al. (2015) предложили упрощённые скоринги — скалярное произведение
и общее
— ближе к тому, что позже закрепилось в трансформере.
Мягкое 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. Входы: запросы , ключи
, значения
:
Зачем делить на ? Если компоненты
и
независимы со средним 0 и дисперсией 1, то
. Без масштабирования при большом
аргументы softmax уходят в насыщение, градиенты становятся малыми, обучение замедляется. Масштаб возвращает дисперсию к порядку 1.
Интерпретация «библиотеки»: запрос — формулировка вопроса читателя; ключ — каталожная карточка; значение — содержимое книги. Softmax по строке даёт, какую долю внимания отдать каждой книге; выход — взвешенная сумма содержаний.
Self-, cross- и masked-attention
- Self-attention —
из одной последовательности. Каждый токен взаимодействует со всеми остальными за
«прыжков» по графу зависимостей (против
в RNN). Сложность по времени и памяти —
при длине
и ширине
.
- Cross-attention — запросы из одной модальности/последовательности (например, декодер или карта изображения), ключи и значения из другой (энкодер, текстовые эмбеддинги). Связывает перевод с оригиналом, изображение с подписью, ответ с документом в RAG.
- Masked (causal) attention — перед softmax в запрещённые позиции пишут
, обнуляя веса. Нужно для авторегрессии в GPT-подобных моделях: позиция
не видит будущее. В энкодере BERT маски нет (двунаправленный контекст); при MLM маскируются сами входные токены, а не граф внимания.
Сравнение с RNN по сложности
| Self-attention | RNN/LSTM | Свёртка (ядро | |
|---|---|---|---|
| Сложность на слой | | | |
| Длина пути между позициями | | | |
| Параллелизм по последовательности | Полный | Нет | Полный |
| Память активаций | | | |
Для коротких и средних квадрат внимания дешевле «дорогой» RNN с большим
; для очень длинных контекстов память становится узким местом — отсюда FlashAttention, sparse/GQA и исследования SSM.
Многоголовое внимание
где , аналогично
, и
. Обычно
, так что суммарная стоимость сравнима с одной «широкой» головой.
Разные головы могут фокусироваться на синтаксисе, пунктуации, кореференции, позиционных шаблонах. На практике специализация нечёткая и зависит от слоя: нижние слои ближе к локальным паттернам, верхние — к семантике. В LLM для ускорения инференса часто уменьшают число KV-голов (см. GQA ниже), сохраняя число query-голов.
При авторегрессионной генерации ключи и значения прошлых токенов кэшируют (KV-cache): на шаге считают только новый query и дописывают одну строку в K/V. Объём кэша растёт как
, где
— число слоёв и часто доминирует в стоимости обслуживания длинного диалога — ещё один стимул к GQA, квантизации кэша и скользящему окну.
Эффективные варианты
Квадратичность ограничивает длинный контекст. Основные линии атак:
- Sparse attention (Longformer, BigBird) — локальное окно плюс глобальные токены / случайные связи; сложность
или
. Хорошо для документов, хуже улавливает произвольные дальние пары без глобальных узлов.
- Kernel / linear attention (Performer, Linear Transformer) — аппроксимация softmax через признаки ядра:
, сложность
. Точность зависит от аппроксимации; на коротких последовательностях выигрыш невелик.
- FlashAttention[1] — точный Softmax-attention, но без материализации полной матрицы
в 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 мерами важности признаков слаба. Последующие работы уточняют: в некоторых задачах и слоях внимание более интерпретируемо, особенно при анализе синтаксических голов, но нельзя отождествлять с «причиной», по которой модель выдала класс или токен.
Практический вывод: тепловые карты внимания — полезный диагностический инструмент и источник гипотез, но для ответственности (medicine, law, credit) нужны дополнительные методы — integrated gradients, probing, causal interventions, human eval — а не только визуализация Softmax. Wiegreffe и Pinter (2019) возражают, что при дополнительных проверках (adversarial attention) часть карт всё же несёт сигнал; консенсус сообщества — осторожная интерпретация, а не полный отказ от анализа внимания.
Связь с выравниванием моделей: при RLHF и предпочтениях меняется поведение генерации, но механизм внимания остаётся тем же вычислительным примитивом — меняются веса, а не сама операция Softmax-attention. Промпт же влияет на то, какие токены окажутся в контексте и, следовательно, между какими парами возникнут большие веса.
См. также
- Трансформер (модель)
- Большая языковая модель
- Нейросетевое встраивание
- Промпт-инжиниринг
- Диффузионная модель
- Обучение с подкреплением из обратной связи человека (RLHF)
- Рекуррентная нейронная сеть
Примечания
Литература
- 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.

