Предсказание Следующего Токена (Next-Token Prediction)
Фундаментальный механизм авторегрессионных больших языковых моделей (LLM). Расчет логитов, функция Softmax, влияние температуры и семплинга (Top-P/Top-K). Объяснение, почему генерация текста является последовательным процессом O(N) и как просматривать вероятности через API.
1. Обзор концепции и системная проблема
Когда вы наблюдаете, как искусственный интеллект проектирует микросервисную архитектуру или составляет поэму, легко поверить, что внутри компьютера возникла сознание с собственным внутренним монологом.
Однако на уровне вычислений под капотом любой авторегрессионной LLM (GPT-4o, Claude 3.7, Llama 3.3, DeepSeek R1) выполняется один итерационный цикл:
$$P(W) = \prod_{t=1}^{T} P(w_t \mid w_1, w_2, \dots, w_{t-1})$$
- Прочитать входную последовательность токенов $w_1, \dots, w_{t-1}$.
- Прогнать векторы через слои Transformer (Self-Attention + MLP).
- Рассчитать числовой балл (Logit) для каждого из 128 000 токенов в словаре.
- Применить Softmax и алгоритмы отбора (Temperature, Top-P), выбрав один токен $w_t$.
- Добавить $w_t$ к контексту и повторить шаг.
Ментальная модель: это не оракул, который заранее знает конечную мысль, а статистический генератор траектории, который делает шаг и лишь после этого видит, куда ступить дальше.
┌─────────────────────────────────────────────────────────────┐
│ МАТЕМАТИЧЕСКИЙ КОНВЕЙЕР ОДНОГО ШАГА │
├─────────────────────────────────────────────────────────────┤
│ 1. Входной контекст: «Киев — столица» │
│ Векторизация токенов ➔ Проход через слои трансформера │
├─────────────────────────────────────────────────────────────┤
│ 2. Выходной слой (Unembedding): 128 000 логитов │
│ • Токен " Украины" ➔ Logit: +14.2 │
│ • Токен " стародавняя" ➔ Logit: +8.1 │
│ • Токен " Франции" ➔ Logit: -4.5 │
├─────────────────────────────────────────────────────────────┤
│ 3. Нормализация Softmax(Logits / Temperature): │
│ • " Украины" ➔ 94.2% │
│ • " стародавняя" ➔ 5.1% │
│ • " Франции" ➔ 0.0001% │
├─────────────────────────────────────────────────────────────┤
│ 4. Семплинг: выбор токена " Украины" │
│ Новый контекст: «Киев — столица Украины» ➔ Следующий шаг│
└─────────────────────────────────────────────────────────────┘
2. Реализация семплинга на Python и инспекция через CLI
Вот как выглядит расчет вероятностей следующего токена на языке Python с учетом температуры:
import numpy as np
def compute_next_token_probs(logits: np.ndarray, temperature: float = 0.7) -> np.ndarray:
# 1. Масштабирование температурой
scaled = logits / max(temperature, 1e-4)
# 2. Стабильный Softmax (вычитание максимума для предотвращения overflow)
exp_logits = np.exp(scaled - np.max(scaled))
probs = exp_logits / np.sum(exp_logits)
return probs
# Пример вызова: 4 возможных токена
mock_logits = np.array([12.5, 9.1, 4.0, 1.2])
print("Вероятности токенов:", np.round(compute_next_token_probs(mock_logits, temperature=0.7), 4))
Как увидеть сырые вероятности токенов через cURL в терминале:
Вы можете попросить API вернуть точные логические вероятности (logprobs), чтобы увидеть альтернативы, которые рассматривала модель:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "Столица Франции — это"}],
"max_tokens": 1,
"logprobs": true,
"top_logprobs": 3
}'
В ответе JSON параметр top_logprobs покажет точные математические баллы для вариантов Париж, город и т.д.
3. Почему Next-Token приводит к галлюцинациям и как это лечить
Поскольку модель генерирует текст локально "здесь и сейчас", она склонна попадать в статистические ловушки:
- Ошибка обязательства (Early Commitment): Если на первых двух словах модель случайно выбрала неудачный токен, все последующие токены будут пытаться оправдать этот ошибочный выбор вместо признания ошибки.
- Невозможность обратного шага (No Backtracking): Обычный инференс не может стереть уже сгенерированное слово.
- Почему модели размышлений (Reasoning Models / DeepSeek R1 / o3) работают лучше: Они используют цепочки размышлений (
<thought>...</thought>), где перед предоставлением окончательного ответа генерируют сотни токенов внутреннего анализа и самопроверки.
4. Практический вывод для разработчика
Помните об авторегрессионном конвейере:
- Подсказки вроде "Подумай перед ответом" или "Опиши шаг за шагом" работают не потому, что ИИ становится внимательнее, а потому, что вы заставляете его сгенерировать токены размышлений, которые физически становятся входным контекстом для финального токена с правильным ответом!
FAQ: Предсказание Следующего Токена (Next-Token Prediction)
Связанные термины
Токены простыми словами (Сколько слов в токене)
Базовая единица измерения текста в языковых моделях. Объяснение того, как слова разбиваются на токены, почему это влияет на стоимость запросов и почему украинские слова потребляют больше токенов, чем английские.
Температура Генерации (Ползунок Креативности и Хаоса)
Ключевой числовой параметр генерации текста (обычно от 0.0 до 1.0 или 2.0). Определяет степень непредсказуемости выбора следующего токена: от строгой детерминированной математики до свободного полета фантазии.
Архитектура Transformer
Архитектура нейронных сетей, представленная исследователями Google в 2017 году в статье «Attention Is All You Need». Основополагающая для всех современных языковых моделей (GPT, Claude, Gemini, Llama), которая заменила медленные рекуррентные сети и научилась параллельно обрабатывать весь текст одновременно.
KV-кэш (Key-Value Cache)
Оптимизация памяти в моделях Transformer, которая сохраняет векторы ключей и значений (Keys and Values) уже обработанных токенов в быстрой памяти GPU. Позволяет генерировать каждое следующее слово мгновенно, но стремительно растет в размере с каждым новым сообщением в чате.