Skip to main content

Przewidywanie następnego tokenu (Next-Token Prediction)

DLA AGENTÓW AIChatGPTClaude

Fundamentalny mechanizm autoregresyjnych dużych modeli językowych (LLM). Obliczanie logitów, funkcja Softmax, wpływ temperatury i próbkowania (Top-P/Top-K). Wyjaśnienie, dlaczego generowanie tekstu jest sekwencyjnym procesem O(N) oraz jak analizować prawdopodobieństwa przez API.

1. Przegląd koncepcji i istota matematyczna

Gdy obserwujesz, jak sztuczna inteligencja projektuje architekturę mikrousługową lub komponuje poemat, łatwo uwierzyć, że wewnątrz komputera narodziła się świadomość z własnym wewnętrznym monologiem.

Jednak na poziomie obliczeniowym pod maską każdej autoregresyjnej LLM (GPT-4o, Claude 3.7, Llama 3.3, DeepSeek R1) wykonywany jest jeden iteracyjny cykl:

$$P(W) = \prod_{t=1}^{T} P(w_t \mid w_1, w_2, \dots, w_{t-1})$$

  1. Odczytaj sekwencję wejściowych tokenów $w_1, \dots, w_{t-1}$.
  2. Przepuść wektory przez warstwy Transformer (Self-Attention + MLP).
  3. Oblicz wartość liczbową (Logit) dla każdego z 128 000 tokenów w słowniku.
  4. Zastosuj Softmax oraz algorytmy selekcji (Temperature, Top-P), wybierając pojedynczy token $w_t$.
  5. Dodaj $w_t$ do kontekstu i powtórz krok.

Model mentalny: to nie wyrocznia, która z góry zna końcową myśl, lecz statystyczny generator trajektorii, który wykonuje krok i dopiero po tym widzi, dokąd może stąpnąć dalej.

┌─────────────────────────────────────────────────────────────┐
│              JEDNOKROKOWY KONWEIER MATEMATYCZNY             │
├─────────────────────────────────────────────────────────────┤
│ 1. Kontekst wejściowy: „Kijów — stolica”                    │
│    Wektoryzacja tokenów ➔ Przejście przez warstwy transformera│
├─────────────────────────────────────────────────────────────┤
│ 2. Warstwa wyjściowa (Unembedding): 128 000 logitów         │
│    • Token " Ukrainy"   ➔ Logit: +14,2                     │
│    • Token " starożytna" ➔ Logit: +8,1                     │
│    • Token " Francji"   ➔ Logit: -4,5                      │
├─────────────────────────────────────────────────────────────┤
│ 3. Normalizacja Softmax(Logits / Temperature):              │
│    • " Ukrainy"   ➔ 94,2%                                  │
│    • " starożytna" ➔ 5,1%                                  │
│    • " Francji"   ➔ 0,0001%                                │
├─────────────────────────────────────────────────────────────┤
│ 4. Próbkowanie: wybór tokenu " Ukrainy"                     │
│    Nowy kontekst: „Kijów — stolica Ukrainy” ➔ Następny krok │
└─────────────────────────────────────────────────────────────┘

2. Implementacja samplingu w Pythonie i inspekcja przez CLI

Oto jak wygląda obliczanie prawdopodobieństwa następnego tokenu w języku Python z uwzględnieniem temperatury:

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))

Jak zobaczyć surowe prawdopodobieństwa tokenów przez cURL w terminalu:

Możesz poprosić API o zwrócenie dokładnych logarytmicznych prawdopodobieństw (logprobs), aby zobaczyć alternatywy rozważane przez model:

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
  }'

W odpowiedzi JSON parametr top_logprobs pokaże dokładne wartości matematyczne dla wariantów takich jak Paris, miasto itp.


3. Dlaczego Next-Token prowadzi do halucynacji i jak to leczyć

Ponieważ model generuje tekst lokalnie „tu i teraz”, jest podatny na wpadanie w statystyczne pułapki:

  1. Błąd przedwczesnego zobowiązania (Early Commitment): Jeśli w pierwszych dwóch słowach model przypadkowo wybrał nieudany token, wszystkie kolejne tokeny będą próbować uzasadnić ten błędny wybór zamiast przyznać się do pomyłki.
  2. Brak możliwości cofnięcia kroku (No Backtracking): Zwykły inference nie może usunąć już wygenerowanego słowa.
  3. Dlaczego modele rozumowania (Reasoning Models / DeepSeek R1 / o3) działają lepiej: Wykorzystują one łańcuchy myślowe (<thought>...</thought>), gdzie przed udzieleniem finalnej odpowiedzi generują setki tokenów wewnętrznej analizy i samokontroli.

4. Praktyczny wniosek dla developera

Pamiętaj o autoregresyjnym potoku:

  • Prompty typu "Pomyśl przed odpowiedzią" lub "Rozpisz krok po kroku" działają nie dlatego, że AI staje się bardziej uważne, ale dlatego, że wymuszasz na nim wygenerowanie tokenów rozumowania, które fizycznie stają się kontekstem wejściowym dla finalnego tokenu zawierającego poprawną odpowiedź!
/ Najczęściej zadawane pytaniaSchema.org FAQPage

FAQ: Przewidywanie następnego tokenu (Next-Token Prediction)

Aby z matematyczną precyzją przewidywać następny token w kodzie lub artykule naukowym, model nie może opierać się na powierzchownej statystyce słów: podczas pretrainingu na bilionach tokenów został zmuszony do wykształcenia w swoich wagach skompresowanego modelu świata, relacji przyczynowo-skutkowych oraz logiki algorytmicznej.
/ Linki wewnętrzne
Wszystkie hasła