Глубокое обучение

Transformers

2017. Google Brain. 8 инженеров написали статью за 6 месяцев. 9 страниц. Название - "Attention is All You Need". За один год она уничтожила 30 лет LSTM-доминирования. Через 2 года - GPT-2. Через 4 - ChatGPT. Через 6 - модели, которые проходят собеседования в Google. Эти 9 страниц изменили индустрию сильнее, чем любой другой paper в истории ML.

  • **GPT-4, Claude, Gemini** - все построены на Transformer. Один forward pass GPT-4 обрабатывает до 128K токенов параллельно - то, что LSTM делал бы последовательно за секунды
  • **GitHub Copilot** использует Transformer для code completion: каждое нажатие Tab - это decoder-only inference, attention по всему открытому файлу
  • **Google Translate** переключился с LSTM seq2seq на Transformer в 2017 и получил +5 BLEU. Encoder-decoder архитектура работает в продакшне для 100+ языков
  • **AlphaFold 2** применил Transformer к предсказанию структуры белков - задача, которую биологи не могли решить 50 лет. Attention здесь работает между аминокислотами, а не словами

Предварительные знания

  • Как RNN/LSTM обрабатывают последовательности и почему они принципиально последовательны
  • Проблема vanishing gradient и ограничения на длинные зависимости
  • Матричное умножение, softmax и скалярное произведение
  • RNN, LSTM, GRU
  • CNN: свёрточные сети

Attention Is All You Need

В 2017 году команда Google под руководством Ашиша Васвани опубликовала статью «Attention Is All You Need» и представила Transformer. Дерзкое заявление в названии было буквальным: полностью отказаться от рекуррентности и свёрток и опираться только на self-attention. Поскольку attention сравнивает каждый токен со всеми остальными сразу, вся последовательность обучается параллельно, а не шаг за шагом, и это позволило моделям масштабироваться далеко за пределы возможностей LSTM. Уже через несколько лет на той же архитектуре выросли BERT, семейство GPT и вся последующая волна больших языковых моделей.

Self-Attention: когда каждое слово смотрит на всех

**2017. Google Brain. 8 инженеров, 6 месяцев работы, 9 страниц текста - и 30 лет LSTM-доминирования закончились.** Статья называлась "Attention is All You Need". Через 2 года появился GPT-2. Через 4 - ChatGPT. Через 6 - модели, которые пишут код лучше большинства разработчиков. Все они стоят на одном механизме: self-attention.

Проблема LSTM была в бутылочном горлышке: как бы длинна ни была последовательность, вся история сжималась в один вектор фиксированного размера. Предложение из 100 слов - один вектор на 512 чисел. Переводчик должен был упаковать весь смысл в 512 чисел и передать декодеру. Когда предложение длинное - информация неизбежно терялась.

Self-attention решает это радикально: **каждый токен одновременно смотрит на каждый другой токен в последовательности**. Не через цепочку шагов - сразу, параллельно. Слово "кот" из начала предложения и слово "рыжий" из конца - они видят друг друга напрямую, без передачи сообщения через 10 промежуточных состояний.

Деление на $\sqrt{d_k}$ - не украшение формулы. При больших значениях $d_k$ скалярные произведения растут, softmax уходит в насыщение (градиент почти 0), обучение замедляется. Деление нормализует масштаб. GPT-4 использует $d_k = 128$ на голову - 128 = магическое число, которое балансирует размер и скорость.

**Аналогия с поиском**: Query - это поисковый запрос. Key - заголовки документов. Value - содержимое документов. Attention вычисляет мягкое (soft) взвешенное извлечение: не один документ, а взвешенная смесь всех. Именно так работает Retrieval в RAG - только там используются отдельные эмбеддинги, а не внутренние Q/K/V одной сети.

Зачем в формуле Attention делить на sqrt(d_k)?

Multi-Head Attention и позиционное кодирование

Одна голова attention видит один тип зависимостей. Это как читать текст одновременно анализируя только синтаксис - но пропускать семантику, кореференцию и прагматику. Multi-head attention запускает несколько независимых механизмов attention параллельно, каждый со своими матрицами $W_Q, W_K, W_V$. Результаты конкатенируются и проецируются.

GPT-4 использует 96 голов. Каждая специализируется автоматически - никто не задаёт явно, что голова 7 должна отслеживать синтаксис, а голова 23 - кореференцию. Это возникает само в процессе обучения. Исследователи Anthropic (2024) интерпретировали отдельные головы GPT-2 и нашли, что разные головы реально специализируются на разных лингвистических функциях.

Но у self-attention есть слепое пятно: он не видит порядок. Матрица scores зависит только от попарных скалярных произведений токенов - перемешай токены в произвольном порядке, и результат не изменится. Для языка это катастрофа: "кот съел рыбу" и "рыба съела кота" дадут одинаковые attention-веса.

**Positional Encoding** добавляет к эмбеддингу каждого токена вектор, уникальный для его позиции. В оригинальной статье - синусы и косинусы разных частот. В BERT - обучаемые векторы. В RoPE (Rotary Position Embedding, используется в LLaMA, GPT-4) - умножение комплексных чисел. Разные подходы, одна цель: дать модели информацию о том, токен 1 это или токен 100.

**KV-cache** - прямое следствие архитектуры. При генерации новый токен добавляет только одну строку в K и V матрицы. Все предыдущие K, V уже посчитаны и закешированы. GPT-4o при длинном контексте держит в памяти десятки гигабайт KV-cache - это основная причина высокой стоимости длинных запросов.

Зачем нужно позиционное кодирование в Transformer?

Encoder-only, Decoder-only, Encoder-Decoder

Оригинальный Transformer 2017 года - это encoder + decoder. Encoder читает входную последовательность (например, английское предложение), создаёт контекстные представления всех токенов. Decoder генерирует выходную последовательность (перевод) токен за токеном, используя cross-attention к выходу encoder. Эта архитектура царствовала в машинном переводе.

Но задачи разные - и архитектуры разошлись. BERT (2018, Devlin et al.) взял только encoder. Без decoder, без авторегрессии. Обучение через masked language modeling: 15% токенов маскируются, модель восстанавливает. Двунаправленное внимание - каждый токен видит всех слева и справа. Результат: мощные контекстные представления для классификации, NER, question answering. Encoder-only - главный инструмент для понимания текста.

GPT путь - decoder-only - оказался победителем в эпоху масштабирования. Причина простая: авторегрессивное обучение (предсказать следующий токен) - это бесконечный датасет. Весь интернет - обучающие данные. Encoder-only требует специально сконструированных задач. Decoder-only учится на сыром тексте. Когда данных триллионы токенов - decoder-only выигрывает.

Стандартный Transformer block (используется в любой вариации): **LayerNorm -> MHA -> residual -> LayerNorm -> FFN -> residual**. FFN (Feed-Forward Network) - два линейных слоя с активацией между ними. В GPT-3 FFN имеет размерность 4 * d_model = 49152. Это больше, чем attention. 2/3 параметров модели живут в FFN. Исследование Geva et al. (2021) показало, что FFN работает как "фактическая память" - хранит конкретные факты, тогда как attention управляет потоком информации.

**Pre-norm vs Post-norm**: оригинальная статья применяла Layer Norm после residual (post-norm). GPT-2 переключился на pre-norm (до MHA и FFN). Pre-norm стабилизирует обучение больших моделей - градиенты не взрываются. Почти все современные LLM используют pre-norm, часто с RMSNorm вместо стандартного Layer Norm (LLaMA, Mistral) - RMSNorm быстрее, не хуже по качеству.

Attention "понимает" слова - это что-то похожее на человеческое понимание

Attention вычисляет взвешенную сумму векторов на основе скалярных произведений - чистая линейная алгебра

Интерпретируемые паттерны (голова отслеживает синтаксис и т.д.) возникают как побочный эффект оптимизации, а не закладываются целенаправленно. Модель минимизирует cross-entropy loss - всё остальное эмергентно.

Почему GPT (decoder-only) доминирует в современных LLM, а не encoder-decoder?

Ключевые идеи

  • **Self-attention** - каждый токен смотрит на всех через Q/K/V механизм. Attention(Q,K,V) = softmax(QK^T / sqrt(d_k))V. Деление на sqrt(d_k) предотвращает насыщение softmax
  • **Multi-head attention** - несколько параллельных голов, каждая специализируется автоматически. GPT-4: 96 голов, d_k=128. KV-cache позволяет не пересчитывать прошлые K,V при генерации
  • **Positional encoding** - без него attention не видит порядок. Sinusoidal (оригинал), learned (BERT), RoPE (LLaMA/GPT-4) - разные подходы к одной проблеме
  • **Три архитектуры**: encoder-only (BERT - понимание), decoder-only (GPT - генерация), encoder-decoder (T5 - seq2seq). Decoder-only победил в эпоху масштабирования благодаря self-supervised обучению на сыром тексте

Связанные темы

Transformer - точка, откуда расходятся десятки направлений:

  • Vision Transformer (ViT) — Применение той же архитектуры к патчам изображений вместо токенов
  • Transfer Learning и Fine-Tuning — Pre-trained Transformer как база для downstream задач (BERT, GPT fine-tuning)
  • LLM Fundamentals — Практическая сторона Transformer: tokenization, inference, API
  • RNN, LSTM, GRU — Предшественники, чьи ограничения Transformer решил

Вопросы для размышления

  • Self-attention имеет сложность O(n^2) по длине последовательности. Как это ограничивает применение к очень длинным контекстам и какие решения существуют (Sparse Attention, Flash Attention, sliding window)?
  • Decoder-only модели используют causal masking - токен не видит будущего. Как это влияет на задачи, где нужен весь контекст (например, суммаризация длинного документа)?
  • FFN в Transformer хранит "фактические знания", attention управляет потоком. Что происходит при fine-tuning - меняются факты в FFN или меняются паттерны внимания?

Связанные уроки

  • dl-05 — LSTM - предшественник; Transformer решает его главные ограничения
  • dl-07 — ViT - прямое применение Transformer к изображениям
  • dl-11 — Transfer learning на базе pre-trained Transformer (BERT, GPT)
  • aie-03-llm-fundamentals — LLM fundamentals - практическая сторона Transformer в продакшне
  • aie-04-tokens-context-window — KV-cache и context window - прямые следствия архитектуры Transformer
  • dl-09 — AdamW - стандартный оптимизатор при обучении Transformer
  • la-04-matrix-ops
Transformers

0

1

Войти