Attention Is All You Need
на русском
Перевод landmark-paper Google (2017): Transformer, self-attention, multi-head attention — архитектурный фундамент современных LLM.
Оригинал: Vaswani et al., «Attention Is All You Need», NeurIPS 2017 · arXiv:1706.03762 · Google Brain / Google Research. Ниже — русский перевод ключевых разделов paper; формулы и терминология сохранены максимально близко к оригиналу.
Аннотация
Доминирующие модели sequence transduction — трансформеры с рекуррентными или свёрточными слоями — строятся вокруг сложных рекуррентных или свёрточных нейронных сетей, включающих encoder и decoder. Лучшие модели подключают механизм attention между encoder и decoder. Мы предлагаем новую простую архитектуру — Transformer, основанную исключительно на механизмах attention, без рекуррентности и свёрток. Эксперименты на двух задачах машинного перевода показывают, что такие модели качественнее, параллелизуются лучше и требуют существенно меньше времени на обучение. Наша модель на WMT 2014 English-to-German достигает BLEU 28.4, улучшая существующие SOTA более чем на 2 BLEU. На English-to-French — 41.8 BLEU, превосходя все опубликованные модели при доле стоимости обучения.
1. Введение
Рекуррентные нейронные сети (RNN, LSTM, GRU) были de facto стандартом для моделирования последовательностей: языковое моделирование, распознавание речи, машинный перевод. Рекуррентные модели обрабатывают токены по одному, скрытое состояние h_t зависит от предыдущего — это создаёт последовательную природу вычислений: позиция t не может быть посчитана, пока не завершена t−1. На длинных последовательностях это ограничивает параллелизм на GPU и затрудняет обучение длинным зависимостям.
Attention-механизмы (Bahdanau et al., 2015; Luong et al., 2015) ослабляют это: decoder на каждом шаге «смотрит» на все позиции encoder. Но рекуррентность в encoder/decoder остаётся узким местом.
Мы предлагаем Transformer — архитектуру, полностью отказавшуюся от рекуррентности. Вместо этого используется multi-head self-attention: каждая позиция последовательности напрямую взаимодействует со всеми остальными. Это даёт:
- Максимальный параллелизм — все позиции encoder считаются одновременно;
- Константный путь между любыми двумя позициями — O(1) операций против O(n) у RNN;
- Интерпретируемость — веса attention показывают, на какие токены модель «смотрит».
2. Background
Reduced attention (Lin et al.) и ConvS2S (Gehring et al.) использовали CNN вместо RNN — параллелизм выше, но путь между позициями растёт с расстоянием или требует много слоёв. Self-attention (Parikh et al., «Decomposable Attention») уже применялся к задачам сопоставления предложений, но не как единственный строительный блок seq2seq.
Transformer объединяет идеи: self-attention как основной слой + position-wise feed-forward + residual connections + layer normalization (как в ResNet и post-LN transformer blocks).
3. Архитектура модели
Transformer следует классической схеме encoder–decoder для transduction: входная последовательность → выходная. Encoder отображает вход в непрерывное представление; decoder авторегрессивно генерирует выход, на каждом шаге attending к encoder и к уже сгенерированным токенам.
3.1 Стеки encoder и decoder
Encoder — стек из N=6 идентичных слоёв. Каждый слой:
- multi-head self-attention;
- position-wise fully connected feed-forward network (FFN);
- residual connection вокруг каждого подслоя + layer normalization.
Decoder — тоже N=6 слоёв, но с тремя подслоями:
- masked multi-head self-attention (маска не даёт смотреть «в будущее»);
- multi-head attention over encoder output;
- FFN + residual + layer norm.
3.2 Attention
Функция attention отображает query и набор пар key–value в output. Output — взвешенная сумма values, веса задаются совместимостью query с keys.
3.2.1 Scaled Dot-Product Attention
Мы используем scaled dot-product attention:
Attention(Q, K, V) = softmax(QK^T / √d_k) · V
где Q (queries), K (keys), V (values) — матрицы. Деление на √d_k предотвращает слишком малые градиенты при большой размерности d_k. Для decoder добавляется маска: позиции могут attend только к позициям ≤ текущей (causal / look-ahead mask).
3.2.2 Multi-Head Attention
Вместо одного attention с d_model-мерными Q, K, V — h параллельных «голов» (в базовой модели h=8, d_k = d_v = 64 при d_model=512). Каждая голова учится смотреть на разные типы зависимостей (синтаксис, coreference, длинный контекст). Выходы конкатенируются и проецируются:
MultiHead(Q,K,V) = Concat(head_1, …, head_h) W^O head_i = Attention(Q W_i^Q, K W_i^K, V W_i^V)
В Transformer multi-head attention используется в трёх местах:
- Encoder self-attention — все позиции входа взаимодействуют друг с другом;
- Decoder self-attention — с causal mask;
- Encoder–decoder attention — queries из decoder, keys/values из encoder (классический «cross-attention»).
3.3 Position-wise Feed-Forward Networks
После attention — два линейных слоя с ReLU, применённые независимо к каждой позиции:
FFN(x) = max(0, x W_1 + b_1) W_2 + b_2
В базовой модели: d_model=512, внутренняя размерность 2048. Это «локальная» нелинейность после «глобального» mixing через attention.
3.4 Embeddings и Softmax
Токены → векторы размерности d_model. Стандартный learned embedding, умноженный на √d_model. Выход decoder → logits через linear + softmax. Веса embedding и pre-softmax linear shared (weight tying) — уменьшает параметры и улучшает BLEU.
3.5 Positional Encoding
Без рекуррентности или свёрток модель не знает порядок токенов. Добавляем positional encoding к embeddings:
PE_(pos, 2i) = sin(pos / 10000^(2i/d_model)) PE_(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
pos — позиция, i — измерение. Синусоиды позволяют модели экстраполировать на длины, не встречавшиеся при обучении. Альтернатива — learned positional embeddings (с comparable results).
4. Почему self-attention
| Слой | Сложность на шаг | Параллелизм | Макс. путь |
|---|---|---|---|
| Self-Attention | O(n²·d) | O(1) между позициями | O(1) |
| RNN | O(n·d²) | O(n) sequential | O(n) |
| Conv (kernel k) | O(k·n·d²) | O(1) | O(n/k) layers |
Self-attention выигрывает, когда n (длина последовательности) умеренна, а нужен короткий путь между distant tokens. Для очень длинных n появляются sparse / linear attention (Longformer, Performer — уже после этой статьи).
5. Обучение
Данные: WMT 2014 English–German (~4.5M пар), English–French (36M пар с back-translation). BPE tokenization: ~37K (DE) и 32K (EN–FR) subword units.
Base model: N=6, d_model=512, d_ff=2048, h=8, P_drop=0.1. Big model: d_model=1024, d_ff=4096, h=16, h=16, dropout 0.3 на EN–DE.
Optimizer: Adam, β1=0.9, β2=0.98, ε=10⁻⁹. Learning rate schedule с warmup: lr растёт linearly первые 4000 steps, затем ∝ 1/√step. Label smoothing ε_ls=0.1.
Hardware: base — 12 hours на 8× P100; big EN–DE — 3.5 days. Против state-of-the-art RNN/CNN — порядок ускорения.
6. Результаты
| Модель | EN→DE BLEU | EN→FR BLEU | Params |
|---|---|---|---|
| ByteNet / ConvS2S (prev SOTA) | 24.6 / 25.2 | 40.9 / 41.4 | — |
| Transformer (base) | 27.3 | 38.1 | 65M |
| Transformer (big) | 28.4 | 41.8 | 213M |
На English constituency parsing (WSJ, semi-supervised) Transformer generalizes за пределы MT — 92.7 F1 при обучении только на 40K предложениях.
Attention visualization: головы encoder layer 5 показывают long-distance dependencies (согласование глаголов, anaphora). Decoder heads часто выделяют синтаксически связанные слова при генерации.
7. Заключение
Transformer — первая transduction-модель, полностью основанная на attention, без recurrence. Она быстрее обучается, лучше масштабируется и даёт SOTA на MT. Мы ожидаем применения к другим модальностям — и последующие годы это подтвердили: GPT (decoder-only), BERT (encoder-only), T5 (encoder–decoder), Vision Transformer, diffusion U-Net с attention — всё наследует эту work.
Коротко
Attention Is All You Need (2017) ввёл Transformer: self-attention + FFN + positional encoding вместо RNN. Простыми словами: как работает трансформер · дальше: BERT (2018) · хронология: История LLM.