Генеративный AI
Языковые модели: от n-gram до GPT
Цели урока
- Объяснять марковское допущение n-gram и его ограничения по длине контекста
- Понимать механику LSTM: как cell state решает проблему vanishing gradient
- Описывать self-attention: Q, K, V векторы и формулу Attention(Q,K,V)
- Интерпретировать scaling laws и вывод Chinchilla об оптимальном соотношении параметров и данных
Предварительные знания
Ian Goodfellow и рождение современного генеративного AI
2014 год. Конференция NIPS. Ian Goodfellow публикует статью «Generative Adversarial Nets» - GANs. Два нейрона: генератор создаёт изображения, дискриминатор пытается отличить реальные от сгенерированных. Они обучаются противостоять друг другу. За ночь после дискуссии в баре Монреаля Goodfellow написал первый рабочий код. Это был первый практический прорыв в генеративном AI - предшественник Stable Diffusion, DALL-E, Midjourney. GANs открыли путь к синтетическим данным, аугментации и deep fakes.
2022 год. Stable Diffusion открытый код. 4 октября - 100 тысяч скачиваний за сутки. Midjourney в марте 2023: более 1 млн платных подписчиков. DALL-E 3, GPT-4V, Sora - generative AI из исследовательского проекта стал индустрией за 18 месяцев. В основе - та же идея: предсказание следующего токена. Клавиатура смартфона и GPT-4 - одна математика, разный масштаб.
- **Автодополнение на клавиатуре смартфона** - n-gram модель в реальном времени, обученная на личных сообщениях
- **GPT-4 API (OpenAI)** - обрабатывает более 10 млн запросов в день, ценообразование от 2.5 USD за 1M токенов
- **GitHub Copilot** - code-specific LLM, более 1.3 млн платных подписчиков, экономит ~55% времени на написание кода
- **Claude (Anthropic)** - 200K контекстное окно, decoder-only Transformer с Constitutional AI
- **Scaling laws** предсказали возможности GPT-4 ещё до его создания - по кривой масштабирования предыдущих моделей
N-gram модели: предсказание по контексту
Клавиатура смартфона предсказывает следующее слово. ChatGPT предсказывает следующий токен. Разница: клавиатура смотрит на 2-3 предыдущих слова, GPT-4 - на 128 000 токенов. Между ними - 60 лет эволюции. **Языковая модель** - это P(w_n | w_1, w_2, ..., w_{n-1}). Вероятность следующего слова при заданном контексте. **N-gram**: марковское допущение - смотреть только на последние n-1 слов.
Если словарь содержит 50 000 слов, количество возможных последовательностей из 10 слов - это 50 000^10. Хранить всё невозможно. Решение **n-gram модели**: следующее слово зависит только от последних n-1 слов, а не от всей истории. Bigram видит 1 слово, trigram - 2. Быстро, просто, не требует GPU.
**Проблема разреженности (sparsity).** Если в корпусе нет фразы «кот лежит на кровати», то P(кровати | на) = 0. Модель считает это невозможным. Решения: **Laplace smoothing** (добавить 1 к каждому счётчику), **Kneser-Ney smoothing** (перераспределить вероятность от частых к редким), **backoff** (нет trigram - откат к bigram).
**Главное ограничение n-gram:** контекст фиксирован и мал. Bigram видит 1 слово, trigram - 2. Предложение «Программист, который вчера написал сложный алгоритм, пошёл домой» требует связать «программист» и «пошёл» через 6 слов - n-gram не справится.
**N-gram модели до сих пор используются.** Быстрые, интерпретируемые, не требуют GPU. Google Search использует n-gram для автодополнения, клавиатуры смартфонов - для предсказания слов, speech recognition - как Language Model для ре-ранкинга гипотез.
Trigram-модель обучена на корпусе новостей. При генерации встречает контекст «президент подписал», которого нет в обучающих данных. Что произойдёт без smoothing?
RNN Language Models: память в нейронах
N-gram видит 2-3 слова. Язык устроен иначе: подлежащее может быть за 20 слов до сказуемого. В 2010-х эту задачу взяли **Recurrent Neural Networks (RNN)** - нейросети с циклическими связями, где скрытое состояние (hidden state) передаётся от шага к шагу. Теоретически: контекст не ограничен. На практике: gradient vanishing убивал память на длинных последовательностях.
На каждом шаге RNN: **h_t = tanh(W_h * h_{t-1} + W_x * x_t + b)**. Hidden state h_t - вектор фиксированного размера (256-1024), в который сжимается вся предыдущая история. **Проблема vanishing gradient**: в 1997 году Зепп Хохрайтер и Юрген Шмидхубер предложили **LSTM** - архитектуру с воротами (gates), которая явно решает, что запомнить, что забыть.
**GRU (2014)** - упрощённая версия LSTM с двумя воротами (reset gate, update gate). Работает сравнимо с LSTM при меньшем количестве параметров. Но и LSTM, и GRU имеют общую проблему: **последовательная обработка**. Каждый шаг зависит от предыдущего - параллелизация невозможна. На длинных текстах это критически медленно.
LSTM решает проблему vanishing gradient в vanilla RNN. Какой механизм является ключевым?
Transformer: attention - это всё, что нужно
2017 год. Google Brain. Vaswani et al. публикуют «Attention Is All You Need». Главный вопрос: а что если вообще отказаться от рекуррентности? Обработать всю последовательность **параллельно**? **Self-attention** позволяет каждому токену смотреть на все остальные напрямую. Не через цепочку hidden states - напрямую. RNN с LSTM устарели за один год.
«Животное не перешло улицу, потому что **оно** было слишком уставшим». Чтобы понять, что «оно» = «животное», нужно связать слова через 5 позиций. В RNN: связь через 5 hidden states, может затухнуть. В Transformer: «оно» напрямую смотрит на «животное» через attention, получает высокий вес. Расстояние не имеет значения.
**Математика self-attention.** Каждый токен -> три вектора: **Query (Q)** - «что ищу?», **Key (K)** - «что предлагаю?», **Value (V)** - «что содержу?». Attention score = скалярное произведение Q и K. Формула: **Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) * V**. Деление на sqrt(d_k) - стабилизация градиентов при больших размерностях.
**Decoder-only архитектура (GPT).** Оригинальный Transformer: encoder + decoder (для перевода). Для генерации достаточно **только decoder** с **causal mask**: каждый токен видит только предыдущие. Это превращает Transformer в авторегрессивную LM: предсказал токен - добавил к контексту - предсказал следующий. GPT-1, GPT-2, GPT-3, GPT-4, Claude, LLaMA - все decoder-only.
**Multi-head attention.** Один attention-блок фокусируется на одном типе связи. Multi-head запускает несколько параллельно: одна голова следит за синтаксисом, другая - за семантикой, третья - за корреференцией. GPT-3 использует 96 голов, каждая с d_k = 128. Позиционное кодирование: **RoPE (Rotary Position Embedding)** в современных моделях кодирует относительные расстояния между токенами.
«Студентка, которая прочитала сложную книгу про квантовую физику, получила пятёрку» - нужно связать «студентка» и «получила». Какое преимущество Transformer над RNN?
Scaling Laws: больше - лучше?
2020 год. Kaplan et al. из OpenAI обнаружили: качество языковой модели **предсказуемо** зависит от трёх факторов - параметров (N), данных (D) и вычислений (C). Зависимость описывается степенными законами и не показывает насыщения: удваивая параметры, loss стабильно снижается. Это переключило всю индустрию с «хорошая архитектура» на «больше всего».
**Chinchilla (2022)** изменил гонку: GPT-3 был **under-trained** - 300B токенов при 175B параметров, а оптимально - 3.5T токенов. Chinchilla (70B параметров, 1.4T токенов) обошёл Gopher (280B, 300B токенов) при 4x меньших параметрах. Вывод: **данные важнее размера модели**. Гонка переключилась с параметров на качественные данные.
| Модель | Параметры | Данные | Ключевая способность |
|---|---|---|---|
| GPT-1 (2018) | 117M | ~5GB | Transfer learning |
| GPT-2 (2019) | 1.5B | ~40GB | Zero-shot задачи |
| GPT-3 (2020) | 175B | ~570GB | Few-shot, in-context learning |
| Chinchilla (2022) | 70B | 1.4T токенов | Data-efficient scaling |
| LLaMA 2 (2023) | 70B | 2T токенов | Open-source LLM |
| GPT-4 (2023) | ~1.8T (MoE) | ~13T токенов | Multimodal, reasoning |
**Emergent abilities** - самый интригующий феномен. При достижении определённого размера модели внезапно демонстрируют способности, которым их не учили: **chain-of-thought reasoning**, **few-shot learning**, **code generation**, **mathematical reasoning**. GPT-2 не решал арифметику, GPT-3 справлялся с простыми примерами, GPT-4 решает олимпиадные задачи. Пороги непредсказуемы.
**Scaling - не панацея.** Scaling laws предсказывают loss, но не гарантируют правильность. GPT-4 всё ещё галлюцинирует, ошибается в арифметике, может быть обманут adversarial-промптами. Обучение GPT-4 оценивается в 100 млн долларов и потребовало около 25 000 GPU A100. Экологический след одного обучения GPT-3 - примерно 552 тонны CO2.
**Mixture of Experts (MoE)** - архитектурный трюк для масштабирования. Вместо одной гигантской сети - несколько экспертов (подсетей), из которых для каждого токена активируются только 2-4. GPT-4 предположительно использует MoE с ~1.8T параметров, но на каждый токен активируются ~280B. Огромная ёмкость при разумной стоимости inference.
GPT просто запоминает тексты из интернета и выдаёт их фрагменты - это гигантская база данных с поиском
LLM выучивают статистическое распределение над последовательностями токенов и генерируют НОВЫЕ комбинации. Модель с 175B параметров обучена на ~570GB текста - это физически невозможно запомнить (сжатие в ~3x). Модель выучивает паттерны, правила и связи.
Ключевые идеи
- **N-gram** - простейшая LM: P(слово | последние n-1 слов). Быстрая, интерпретируемая, но ограничена коротким контекстом и разреженностью
- **RNN/LSTM** - нейросетевая LM с адаптивной памятью (hidden state). LSTM решает vanishing gradient через ворота, но обрабатывает токены последовательно - медленно
- **Transformer** - параллельная обработка через self-attention: каждый токен напрямую связан с каждым. Фундамент GPT, Claude, LLaMA. «Attention Is All You Need» (2017)
- **Scaling laws** (Kaplan 2020): loss предсказуемо снижается с ростом N, D, C. Chinchilla (2022): D ~ 20*N - данные важнее параметров
- **Emergent abilities**: chain-of-thought, few-shot learning появляются при масштабировании - непредсказуемо, но стабильно
- Клавиатура смартфона и GPT-4 - одна идея: предсказание следующего токена. Разница: 2 слова контекста vs 128 000 токенов
Связанные темы
Языковые модели - центральная тема генеративного AI:
- Что такое генеративный AI — LLM - главный пример генеративных моделей, предсказывающих P(x)
- Токенизация: BPE и SentencePiece — Прежде чем предсказать токен, текст нужно разбить на токены
- Transformer-архитектура — Детальный разбор multi-head attention, layer normalization и positional encoding
Вопросы для размышления
- Если scaling laws не показывают насыщения - означает ли это, что достаточно большая LLM достигнет настоящего интеллекта? Или есть фундаментальные ограничения?
- N-gram видит 2-3 слова, GPT-4 - 128 000 токенов. Человек удерживает в рабочей памяти ~7 элементов, но понимает книги на 500 страниц. Как?
- Emergent abilities появляются внезапно при масштабировании. Это настоящий emergence или просто плохое измерение маленьких моделей?
Связанные уроки
- gai-01 — Вводное понятие генеративного AI и авторегрессии
- gai-03 — Токенизация BPE - следующий шаг: как текст попадает в языковую модель
- gai-04 — Детальный разбор multi-head attention и позиционных энкодингов
- aie-03-llm-fundamentals — GPT-4, Claude, LLaMA в production - прикладное использование LLM
- dl-01 — Нейросетевые основы backpropagation и обучения
- nlp-01 — NLP pipeline как контекст для языкового моделирования
- prob-01-intro