Передбачення наступного токена (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. Дозволяє генерувати кожне наступне слово миттєво, але стрімко росте в розмірі з кожним новим повідомленням у чаті.