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

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

(Различия между версиями)
Перейти к: навигация, поиск
(Новая статья: механизм внимания в нейронных сетях, Claude Sonnet 4)
(Исправлены формулы LaTeX (String.raw), убрано дублирование имени)
 
Строка 1: Строка 1:
-
{{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] [[Участник:Emil Petrov|Emil Petrov]] 14:45, 16 июня 2026 (MSD)
+
{{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] 14:59, 16 июня 2026 (MSD)
Промпт приводится полностью в [[Обсуждение:Механизм внимания]]
Промпт приводится полностью в [[Обсуждение:Механизм внимания]]
}}
}}
Строка 8: Строка 8:
== Мотивировка ==
== Мотивировка ==
-
В классических энкодер-декодерных архитектурах на основе [[Рекуррентная нейронная сеть|рекуррентных нейронных сетей]] вся информация о входной последовательности сжимается в единственный вектор фиксированной длины — так называемый «контекстный вектор». При генерации длинных последовательностей это узкое место приводит к деградации качества: декодер не может напрямую «посмотреть» на нужный фрагмент входа. Механизм внимания устраняет это ограничение, позволяя декодеру на каждом шаге генерации формировать взвешенную сумму всех скрытых состояний энкодера.
+
В классических энкодер-декодерных архитектурах на основе [[Рекуррентная нейронная сеть|рекуррентных нейронных сетей]] вся информация о входной последовательности сжимается в единственный вектор фиксированной длины — «контекстный вектор». При генерации длинных последовательностей это узкое место приводит к деградации качества: декодер не может напрямую «посмотреть» на нужный фрагмент входа. Механизм внимания устраняет это ограничение, позволяя декодеру на каждом шаге формировать взвешенную сумму всех скрытых состояний энкодера.
== Базовый механизм внимания Bahdanau ==
== Базовый механизм внимания Bahdanau ==
-
Пусть <tex>h_1, ldots, h_T</tex> — скрытые состояния энкодера, <tex>s_{t-1}</tex> — скрытое состояние декодера на предыдущем шаге. Оценка релевантности (энергия) <tex>i</tex>-го токена входа для генерации токена <tex>t</tex> вычисляется нейронной сетью:
+
Пусть <tex>h_1, \ldots, h_T</tex> — скрытые состояния энкодера, <tex>s_{t-1}</tex> — скрытое состояние декодера на предыдущем шаге. Оценка релевантности (энергия) <tex>i</tex>-го токена входа для генерации токена <tex>t</tex>:
:<tex>e_{t,i} = a(s_{t-1}, h_i),</tex>
:<tex>e_{t,i} = a(s_{t-1}, h_i),</tex>
-
где <tex>a(cdot)</tex> — обычно небольшая полносвязная сеть. Затем оценки нормируются функцией softmax:
+
где <tex>a(\cdot)</tex> — небольшая полносвязная сеть. Оценки нормируются функцией softmax:
-
:<tex>alpha_{t,i} = �rac{exp(e_{t,i})}{sum_{j=1}^{T} exp(e_{t,j})}.</tex>
+
:<tex>\alpha_{t,i} = \frac{\exp(e_{t,i})}{\sum_{j=1}^{T} \exp(e_{t,j})}.</tex>
Контекстный вектор для шага <tex>t</tex> формируется как взвешенная сумма:
Контекстный вектор для шага <tex>t</tex> формируется как взвешенная сумма:
-
:<tex>c_t = sum_{i=1}^{T} alpha_{t,i}, h_i.</tex>
+
:<tex>c_t = \sum_{i=1}^{T} \alpha_{t,i}\, h_i.</tex>
-
Коэффициенты <tex>alpha_{t,i}</tex> интерпретируются как «мягкое выравнивание» (soft alignment) — вероятности того, что <tex>i</tex>-й входной токен важен при генерации <tex>t</tex>-го выходного.
+
Коэффициенты <tex>\alpha_{t,i}</tex> интерпретируются как «мягкое выравнивание» (soft alignment) — вероятности того, что <tex>i</tex>-й входной токен важен при генерации <tex>t</tex>-го выходного.
== Scaled Dot-Product Attention ==
== Scaled Dot-Product Attention ==
-
В трансформере Vaswani et al. (2017) предложили более эффективную формуляцию через матричные операции. Входы — матрицы запросов <tex>Q in mathbb{R}^{n imes d_k}</tex>, ключей <tex>K in mathbb{R}^{m imes d_k}</tex> и значений <tex>V in mathbb{R}^{m imes d_v}</tex>:
+
В трансформере Vaswani et al. (2017) предложили более эффективную формуляцию через матричные операции. Входы — матрицы запросов <tex>Q \in \mathbb{R}^{n \times d_k}</tex>, ключей <tex>K \in \mathbb{R}^{m \times d_k}</tex> и значений <tex>V \in \mathbb{R}^{m \times d_v}</tex>:
-
:<tex> ext{Attention}(Q, K, V) = ext{softmax}!left(�rac{QK^ op}{sqrt{d_k}}
+
:<tex>\text{Attention}(Q, K, V) = \text{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right) V.</tex>
-
ight) V.</tex>
+
-
Деление на <tex>sqrt{d_k}</tex> предотвращает попадание в области с малым градиентом функции softmax при больших значениях скалярных произведений. Вычислительная сложность — <tex>O(n cdot m cdot d_k)</tex>.
+
Деление на <tex>\sqrt{d_k}</tex> предотвращает попадание в области с малым градиентом функции softmax при больших значениях скалярных произведений.
=== Типы внимания в трансформере ===
=== Типы внимания в трансформере ===
-
* '''Self-attention (само-внимание)''' — <tex>Q = K = V</tex> (все три формируются из одного и того же входа). Каждый токен «смотрит» на все остальные токены той же последовательности. Это позволяет модели захватывать зависимости между любыми парами токенов вне зависимости от расстояния.
+
* '''Self-attention (само-внимание)''' — <tex>Q = K = V</tex> формируются из одного входа. Каждый токен «смотрит» на все остальные токены той же последовательности, захватывая зависимости вне зависимости от расстояния между ними.
-
* '''Cross-attention (кросс-внимание)''' — запросы <tex>Q</tex> поступают из одной последовательности (декодер), а ключи <tex>K</tex> и значения <tex>V</tex> — из другой (выходы энкодера). Используется в энкодер-декодерных трансформерах для установления связи между входом и выходом.
+
* '''Cross-attention (кросс-внимание)''' — запросы <tex>Q</tex> поступают из декодера, а ключи <tex>K</tex> и значения <tex>V</tex> — из энкодера. Используется для установления связи между входной и выходной последовательностями.
-
* '''Маскированное внимание (masked attention)''' — матрица оценок маскируется: позиции, на которые нельзя смотреть (будущие токены при авторегрессии), получают <tex>-infty</tex> перед softmax, что эффективно обнуляет соответствующие веса внимания.
+
* '''Маскированное внимание (masked attention)''' — позиции, на которые нельзя смотреть (будущие токены при авторегрессии), получают <tex>-\infty</tex> перед softmax, что обнуляет соответствующие веса внимания.
== Многоголовое внимание ==
== Многоголовое внимание ==
-
Многоголовое внимание (multi-head attention) запускает <tex>h</tex> независимых операций внимания с разными линейными проекциями, позволяя одновременно фокусироваться на разных аспектах входа:
+
Многоголовое внимание (multi-head attention) запускает <tex>h</tex> независимых операций внимания с разными линейными проекциями:
-
:<tex> ext{MultiHead}(Q, K, V) = ext{Concat}( ext{head}_1, ldots, ext{head}_h), W^O,</tex>
+
:<tex>\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)\, W^O,</tex>
-
:<tex> ext{head}_i = ext{Attention}(QW_i^Q,; KW_i^K,; VW_i^V),</tex>
+
:<tex>\text{head}_i = \text{Attention}(QW_i^Q,\; KW_i^K,\; VW_i^V),</tex>
-
где <tex>W_i^Q in mathbb{R}^{d_{model} imes d_k}</tex>, <tex>W_i^K in mathbb{R}^{d_{model} imes d_k}</tex>, <tex>W_i^V in mathbb{R}^{d_{model} imes d_v}</tex>, <tex>W^O in mathbb{R}^{h d_v imes d_{model}}</tex> — обучаемые матрицы.
+
где <tex>W_i^Q \in \mathbb{R}^{d_{\text{model}} \times d_k}</tex>, <tex>W_i^K \in \mathbb{R}^{d_{\text{model}} \times d_k}</tex>, <tex>W_i^V \in \mathbb{R}^{d_{\text{model}} \times d_v}</tex>, <tex>W^O \in \mathbb{R}^{h d_v \times d_{\text{model}}}</tex> — обучаемые матрицы.
-
Интерпретация: разные головы специализируются на синтаксических связях (согласование, управление), семантических отношениях, кореференции, позиционных паттернах и т.д.
+
Разные головы специализируются на синтаксических связях, семантических отношениях, кореференции, позиционных паттернах и т.д.
-
 
+
-
== Интерпретируемость и визуализация ==
+
-
 
+
-
Матрицы весов внимания <tex>A = (alpha_{t,i})</tex> допускают непосредственную визуализацию и часто используются для интерпретации работы трансформера. Инструменты наподобие BertViz позволяют видеть, какие токены «смотрят» друг на друга в каждой голове и на каждом слое.
+
-
 
+
-
Однако исследования показывают, что веса внимания не всегда соответствуют «важности» токена для предсказания: градиентные методы интерпретации часто дают иные ответы, чем простая визуализация внимания.
+
== Эффективные варианты ==
== Эффективные варианты ==
Строка 64: Строка 57:
Квадратичная сложность <tex>O(n^2)</tex> стандартного внимания ограничивает применение к длинным последовательностям. Предложены альтернативы:
Квадратичная сложность <tex>O(n^2)</tex> стандартного внимания ограничивает применение к длинным последовательностям. Предложены альтернативы:
-
* '''Sparse Attention''' (Longformer, BigBird) — каждый токен посещает локальное окно и набор глобальных токенов, снижая сложность до <tex>O(n log n)</tex> или <tex>O(n)</tex>.
+
* '''Sparse Attention''' (Longformer, BigBird) — каждый токен посещает локальное окно и набор глобальных токенов, снижая сложность до <tex>O(n \log n)</tex> или <tex>O(n)</tex>.
-
* '''Linear Attention''' (Performer, Random Feature Attention) — аппроксимация ядра softmax случайными признаками, линейная сложность <tex>O(n)</tex>.
+
* '''Linear Attention''' (Performer) — аппроксимация ядра softmax случайными признаками, линейная сложность <tex>O(n)</tex>.
-
* '''FlashAttention''' — алгоритм точного вычисления внимания с IO-aware оптимизацией: блочная обработка данных в SRAM GPU, без материализации матрицы <tex>n imes n</tex> в DRAM. Ускоряет вычисления в 2–4× при той же точности.
+
* '''FlashAttention''' — IO-aware алгоритм точного вычисления внимания с блочной обработкой в SRAM GPU без материализации матрицы <tex>n \times n</tex>. Ускоряет вычисления в 2–4× при той же точности.
-
* '''Multi-Query Attention''' и '''Grouped Query Attention''' (GQA) — уменьшение числа голов для ключей и значений при сохранении числа голов для запросов; ускоряет инференс.
+
* '''Grouped Query Attention''' (GQA) — уменьшение числа голов для ключей и значений при сохранении голов для запросов; ускоряет инференс.
== Применения вне NLP ==
== Применения вне NLP ==
Строка 75: Строка 68:
* '''Компьютерное зрение''' — Vision Transformer (ViT) применяет self-attention к патчам изображений.
* '''Компьютерное зрение''' — Vision Transformer (ViT) применяет self-attention к патчам изображений.
* '''Рекомендательные системы''' — модели внимания над историей взаимодействий пользователя.
* '''Рекомендательные системы''' — модели внимания над историей взаимодействий пользователя.
 +
* '''Предсказание структуры белков''' — AlphaFold2 использует multi-head attention в блоках Evoformer.
 +
* '''Генерация изображений''' — [[Диффузионная модель|диффузионные модели]] применяют кросс-внимание между текстовым условием и картой признаков изображения.
* '''Обработка графов''' — Graph Attention Networks (GAT).
* '''Обработка графов''' — Graph Attention Networks (GAT).
-
* '''Предсказание структуры белков''' — AlphaFold2 использует multi-head attention в своих Evoformer-блоках.
 
-
* '''Генерация изображений''' — [[Диффузионная модель|диффузионные модели]] применяют кросс-внимание между текстовым условием и картой признаков изображения.
 
== См. также ==
== См. также ==

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

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

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


Содержание

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

Мотивировка

В классических энкодер-декодерных архитектурах на основе рекуррентных нейронных сетей вся информация о входной последовательности сжимается в единственный вектор фиксированной длины — «контекстный вектор». При генерации длинных последовательностей это узкое место приводит к деградации качества: декодер не может напрямую «посмотреть» на нужный фрагмент входа. Механизм внимания устраняет это ограничение, позволяя декодеру на каждом шаге формировать взвешенную сумму всех скрытых состояний энкодера.

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

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

e_{t,i} = a(s_{t-1}, h_i),

где a(\cdot) — небольшая полносвязная сеть. Оценки нормируются функцией 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} интерпретируются как «мягкое выравнивание» (soft alignment) — вероятности того, что i-й входной токен важен при генерации t-го выходного.

Scaled Dot-Product Attention

В трансформере Vaswani et al. (2017) предложили более эффективную формуляцию через матричные операции. Входы — матрицы запросов 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} предотвращает попадание в области с малым градиентом функции softmax при больших значениях скалярных произведений.

Типы внимания в трансформере

  • Self-attention (само-внимание)Q = K = V формируются из одного входа. Каждый токен «смотрит» на все остальные токены той же последовательности, захватывая зависимости вне зависимости от расстояния между ними.
  • Cross-attention (кросс-внимание) — запросы Q поступают из декодера, а ключи K и значения V — из энкодера. Используется для установления связи между входной и выходной последовательностями.
  • Маскированное внимание (masked attention) — позиции, на которые нельзя смотреть (будущие токены при авторегрессии), получают -\infty перед softmax, что обнуляет соответствующие веса внимания.

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

Многоголовое внимание (multi-head attention) запускает h независимых операций внимания с разными линейными проекциями:

\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 \in \mathbb{R}^{d_{\text{model}} \times d_k}, W_i^V \in \mathbb{R}^{d_{\text{model}} \times d_v}, W^O \in \mathbb{R}^{h d_v \times d_{\text{model}}} — обучаемые матрицы.

Разные головы специализируются на синтаксических связях, семантических отношениях, кореференции, позиционных паттернах и т.д.

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

Квадратичная сложность O(n^2) стандартного внимания ограничивает применение к длинным последовательностям. Предложены альтернативы:

  • Sparse Attention (Longformer, BigBird) — каждый токен посещает локальное окно и набор глобальных токенов, снижая сложность до O(n \log n) или O(n).
  • Linear Attention (Performer) — аппроксимация ядра softmax случайными признаками, линейная сложность O(n).
  • FlashAttention — IO-aware алгоритм точного вычисления внимания с блочной обработкой в SRAM GPU без материализации матрицы n \times n. Ускоряет вычисления в 2–4× при той же точности.
  • Grouped Query Attention (GQA) — уменьшение числа голов для ключей и значений при сохранении голов для запросов; ускоряет инференс.

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

Механизм внимания проник во многие области машинного обучения:

  • Компьютерное зрение — Vision Transformer (ViT) применяет self-attention к патчам изображений.
  • Рекомендательные системы — модели внимания над историей взаимодействий пользователя.
  • Предсказание структуры белков — AlphaFold2 использует multi-head attention в блоках Evoformer.
  • Генерация изображенийдиффузионные модели применяют кросс-внимание между текстовым условием и картой признаков изображения.
  • Обработка графов — Graph Attention Networks (GAT).

См. также

Примечания

Литература

  • Bahdanau D., Cho K., Bengio Y. Neural Machine Translation by Jointly Learning to Align and Translate // ICLR. — 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.
  • Jain S., Wallace B. C. Attention is not Explanation // NAACL-HLT. — 2019.