Как работают трансформеры: архитектура, изменившая AI
Разбираем архитектуру трансформеров: self-attention, encoder-decoder, позиционное кодирование. Как работает механизм внимания и почему трансформеры стали основой всех современных LLM.
В 2017 году восемь исследователей из Google опубликовали статью с провокационным названием «Attention Is All You Need» — отсылку к песне The Beatles «All You Need Is Love». Статья представила архитектуру трансформера — нейросеть на 100 миллионов параметров, которая обходилась без рекуррентных и свёрточных слоёв. Тогда это казалось смелым экспериментом. Сегодня каждая крупная языковая модель — GPT-5, Claude Opus, Gemini 3, Llama 4 — построена на этой архитектуре. Разберёмся, как она устроена и почему оказалась настолько мощной.
Что было до трансформеров
Прежде чем понять революцию трансформеров, нужно знать, от чего они отталкивались. До 2017 года задачи NLP решались рекуррентными нейросетями — RNN и их вариантом LSTM (Long Short-Term Memory).
| Характеристика | RNN / LSTM | Трансформер |
|---|---|---|
| Обработка последовательности | Последовательная (токен за токеном) | Параллельная (все токены сразу) |
| Длинные зависимости | Теряются на длинных текстах | Прямой доступ к любому токену |
| Скорость обучения | Медленная (нет параллелизма) | Быстрая (GPU-параллелизм) |
| Масштабируемость | Плохая | Отличная |
| Сложность по длине (n) | O(n) на шаг, но шагов n | O(n²) на слой, но параллельно |
Главная проблема RNN — последовательная обработка. Чтобы «увидеть» слово номер 500, сеть должна сначала обработать все 499 предыдущих. Информация о начале текста к этому моменту затухает. LSTM частично решал проблему, но не устранял фундаментальное ограничение: последовательность — это бутылочное горлышко.
Трансформер решил эту проблему радикально: он убрал последовательную обработку и позволил каждому слову «смотреть» на все остальные слова одновременно.
Архитектура трансформера: encoder-decoder
Оригинальный трансформер состоит из двух блоков: encoder (кодировщик) и decoder (декодировщик). Каждый блок — это стек из N = 6 одинаковых слоёв.
graph TB
INPUT["Входная последовательность"] --> EMB_E["Embedding + Positional Encoding"]
EMB_E --> E1["Encoder Layer 1"]
E1 --> E2["Encoder Layer 2"]
E2 --> E3["..."]
E3 --> E6["Encoder Layer 6"]
E6 --> ENC_OUT["Представление контекста"]
TARGET["Целевая последовательность (сдвинутая)"] --> EMB_D["Embedding + Positional Encoding"]
EMB_D --> D1["Decoder Layer 1"]
D1 --> D2["Decoder Layer 2"]
D2 --> D3["..."]
D3 --> D6["Decoder Layer 6"]
D6 --> LINEAR["Linear + Softmax"]
LINEAR --> OUTPUT["Выходные вероятности"]
ENC_OUT --> D1
ENC_OUT --> D2
ENC_OUT --> D3
ENC_OUT --> D6
Encoder принимает входную последовательность (например, предложение на английском) и превращает её в плотное векторное представление. Каждый слой encoder содержит два подслоя:
- Multi-Head Self-Attention — механизм внимания, о котором ниже.
- Feed-Forward Network — полносвязная сеть, одинаковая для каждой позиции.
Decoder генерирует выходную последовательность (перевод на русский) токен за токеном. Каждый слой decoder содержит три подслоя:
- Masked Multi-Head Self-Attention — внимание только к уже сгенерированным токенам.
- Cross-Attention — внимание к выходу encoder (связь «исходный текст → перевод»).
- Feed-Forward Network — аналогичный encoder.
Размерности оригинальной модели
В оригинальной статье ключевые параметры были такими:
- d_model = 512 — размерность всех внутренних представлений
- Число голов внимания: 8 (каждая работает с d_k = 64)
- Размер FFN: 2048 (внутренний слой feed-forward сети)
- Число слоёв: 6 (и в encoder, и в decoder)
- Dropout: 0.1 на каждом подслое
Итого: ~100 миллионов параметров. Для сравнения, GPT-5 содержит, по оценкам, более триллиона параметров — но базовые строительные блоки те же.
Self-Attention: ядро трансформера
Self-attention — это механизм, который позволяет каждому токену «обратить внимание» на все остальные токены в последовательности и определить, какие из них важны в текущем контексте.
Query, Key, Value
Каждый входной токен преобразуется в три вектора:
- Query (Q) — «что я ищу?»
- Key (K) — «что я содержу?»
- Value (V) — «что я передам, если на меня обратят внимание?»
Формула вычисления attention:
Attention(Q, K, V) = softmax(Q × Kᵀ / √d_k) × V
Разберём по шагам:
import numpy as np
# Допустим, у нас 4 токена с размерностью d_k = 64
Q = np.random.randn(4, 64) # Query для каждого токена
K = np.random.randn(4, 64) # Key для каждого токена
V = np.random.randn(4, 64) # Value для каждого токена
# Шаг 1: Скалярное произведение Q и K^T
scores = Q @ K.T # Матрица 4×4: «кто на кого смотрит»
# Шаг 2: Масштабирование (без него градиенты затухают)
d_k = 64
scores = scores / np.sqrt(d_k)
# Шаг 3: Softmax — превращаем в вероятности
def softmax(x):
exp_x = np.exp(x - np.max(x, axis=-1, keepdims=True))
return exp_x / exp_x.sum(axis=-1, keepdims=True)
attention_weights = softmax(scores) # 4×4, строки суммируются в 1
# Шаг 4: Взвешенная сумма Value
output = attention_weights @ V # 4×64: обновлённое представление
Рассмотрим предложение: «Кот сидел на коврике, потому что он устал».
Когда модель обрабатывает слово «он», механизм внимания должен определить, что «он» относится к «кот», а не к «коврику». Query слова «он» будет иметь высокое скалярное произведение с Key слова «кот» — и модель «обратит внимание» именно на него, получив нужный контекст.
Multi-Head Attention
Одна «голова» внимания может уловить один тип связи (например, синтаксическую). Но в языке связи многомерные: грамматика, семантика, кореференция, логика. Поэтому трансформер использует несколько голов параллельно — в оригинале 8.
Каждая голова имеет свои матрицы проекций W_Q, W_K, W_V и работает независимо. Результаты всех голов конкатенируются и проецируются обратно:
MultiHead(Q, K, V) = Concat(head_1, ..., head_8) × W_O
Это как смотреть на текст восемью парами глаз одновременно: одна голова следит за подлежащим и сказуемым, другая — за местоимениями и их антецедентами, третья — за временными маркерами.
Позиционное кодирование и другие компоненты
Зачем нужно позиционное кодирование
Self-attention обрабатывает все токены параллельно — у него нет встроенного понятия порядка. Предложения «кот съел рыбу» и «рыба съела кота» без дополнительной информации для attention неразличимы.
Решение — positional encoding: к каждому embedding токена прибавляется вектор, кодирующий его позицию. В оригинальной статье использовали синусоидальные функции:
PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
Современные модели чаще используют RoPE (Rotary Position Embedding) — они лучше масштабируются на длинные контексты. Именно благодаря RoPE модели вроде Llama 4 Scout работают с контекстом до 10 миллионов токенов.
Residual Connections и Layer Normalization
Каждый подслой трансформера обёрнут в два важных механизма:
- Residual connection (остаточная связь): выход подслоя складывается с его входом. Это позволяет градиентам свободно протекать через десятки слоёв.
- Layer normalization: нормализует значения, стабилизируя обучение.
Формула: LayerNorm(x + Sublayer(x))
Почему трансформеры победили: масштабирование
Трансформеры оказались не просто лучшей архитектурой — они оказались масштабируемой архитектурой. Три фактора сошлись:
1. Параллелизм. RNN обрабатывают токены последовательно — GPU простаивает. Трансформер обрабатывает все токены слоя одновременно — GPU загружен на 100%. Это превращает деньги на железо в качество модели.
2. Scaling laws. Исследования OpenAI и DeepMind показали: увеличение числа параметров и данных предсказуемо улучшает качество. Трансформер масштабируется «гладко» — нет порога, после которого добавление параметров перестаёт помогать.
3. Универсальность. Одна и та же архитектура работает для текста, кода, изображений (Vision Transformer), аудио, видео и мультимодальных задач. Llama 4 от Meta обучен совместно на текстах, изображениях и видео на 200+ языках.
| Модель | Год | Параметры | Контекст | Архитектура |
|---|---|---|---|---|
| Transformer (оригинал) | 2017 | 100M | ~512 токенов | Encoder-Decoder |
| GPT-2 | 2019 | 1.5B | 1024 токена | Decoder-only |
| GPT-3 | 2020 | 175B | 2048 токенов | Decoder-only |
| GPT-5 | 2025–2026 | >1T (оценка) | 1M+ токенов | Decoder-only |
| Claude Opus 4.6 | 2026 | не раскрыто | 1M токенов | Decoder-only |
| Llama 4 Scout | 2025 | 109B (17B акт.) | 10M токенов | MoE Decoder |
За 9 лет контекстное окно выросло с 512 токенов до 10 миллионов — в 20 000 раз. Параметры — с сотен миллионов до триллионов. Но базовый building block — слой self-attention — остался тем же.
Что дальше: эволюция архитектуры
Трансформеры доминируют, но их главное ограничение — квадратичная сложность self-attention: O(n²) по длине контекста. При 10 миллионах токенов это становится вычислительно тяжёлым.
Направления развития в 2025–2026:
FlashAttention — оптимизация на уровне GPU, которая ускоряет вычисление attention в 2–4 раза за счёт умной работы с памятью (SRAM вместо HBM). Не меняет архитектуру, но радикально ускоряет её.
Mixture of Experts (MoE) — вместо одной огромной FFN используется набор «экспертов», из которых активируется только часть. Llama 4 Scout: 109 миллиардов параметров, но только 17 миллиардов активны на каждом токене.
Гибридные архитектуры — Jamba (AI21) объединяет слои трансформера, Mamba (state-space model) и MoE в одной модели. Результат: контексты в 2–7 раз длиннее при меньшем числе параметров. NVIDIA Nemotron 3 также использует гибрид Mamba-Transformer-MoE.
State-Space Models (SSM) — альтернатива с линейной сложностью O(n). Mamba и его наследники обрабатывают последовательности без квадратичного раздувания. Пока не вытеснили трансформеры, но активно внедряются как компоненты гибридов.
Заключение
Трансформер — это не просто очередная нейросетевая архитектура. Это инфраструктурный прорыв, который сделал возможным масштабирование AI до уровня, который мы наблюдаем сегодня. Три ключевых инсайта:
- Self-attention заменил рекуррентность, дав моделям прямой доступ к любой части контекста и открыв путь к параллельным вычислениям на GPU.
- Масштабируемость архитектуры оказалась беспрецедентной — от 100 миллионов до триллионов параметров с предсказуемым ростом качества.
- Универсальность одной архитектуры для текста, кода, изображений, аудио и видео избавила индустрию от необходимости изобретать отдельные подходы для каждой модальности.
Понимание трансформеров — это не академическое упражнение. Это фундамент для осмысленной работы с любой современной AI-системой: от написания промптов до файн-тюнинга собственных моделей. Архитектура, придуманная для машинного перевода, стала основой технологии, которая меняет индустрию за индустрией.