Skip to main content

Predicción del Siguiente Token (Next-Token Prediction)

Mecanismo fundamental de los modelos de lenguaje grandes autorregresivos (LLM). Cálculo de logits, función Softmax, impacto de la temperatura y muestreo (Top-P/Top-K). Explicación de por qué la generación de texto es un proceso secuencial O(N) y cómo revisar probabilidades a través de la API.

1. Visión general del concepto y problema sistémico

Cuando observas cómo la inteligencia artificial diseña una arquitectura de microservicios o compone un poema, es fácil creer que dentro de la computadora ha surgido una conciencia con su propio monólogo interno.

Sin embargo, a nivel de cálculos, bajo el capó de cualquier LLM autorregresivo (GPT-4o, Claude 3.7, Llama 3.3, DeepSeek R1) se ejecuta un ciclo iterativo:

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

  1. Leer la secuencia de entrada de tokens $w_1, \dots, w_{t-1}$.
  2. Pasar los vectores a través de las capas del Transformer (Self-Attention + MLP).
  3. Calcular la puntuación numérica (Logit) para cada uno de los 128,000 tokens en el vocabulario.
  4. Aplicar Softmax y algoritmos de selección (Temperature, Top-P), eligiendo un token $w_t$.
  5. Agregar $w_t$ al contexto y repetir el paso.

Modelo mental: no es un oráculo que conoce de antemano el pensamiento final, sino un generador estadístico de trayectorias que da un paso y solo después ve hacia dónde avanzar a continuación.

┌─────────────────────────────────────────────────────────────┐
│              CONVEYOR MATEMÁTICO DE UN SOLO PASO            │
├─────────────────────────────────────────────────────────────┤
│ 1. Contexto de entrada: «Kiev es la capital»                │
│    Vectorización de tokens ➔ Paso a través de capas del     │
│    transformador                                             │
├─────────────────────────────────────────────────────────────┤
│ 2. Capa de salida (Unembedding): 128,000 logits             │
│    • Token "Ucrania"   ➔ Logit: +14.2                       │
│    • Token "antigua" ➔ Logit: +8.1                          │
│    • Token "Francia"   ➔ Logit: -4.5                        │
├─────────────────────────────────────────────────────────────┤
│ 3. Normalización Softmax(Logits / Temperature):             │
│    • "Ucrania"   ➔ 94.2%                                    │
│    • "antigua" ➔ 5.1%                                      │
│    • "Francia"   ➔ 0.0001%                                  │
├─────────────────────────────────────────────────────────────┤
│ 4. Muestreo: elección del token "Ucrania"                   │
│    Nuevo contexto: «Kiev es la capital de Ucrania» ➔ Siguiente paso│
└─────────────────────────────────────────────────────────────┘

2. Implementación de muestreo en Python e inspección a través de CLI

Así es como se calcula la probabilidad del siguiente token en Python teniendo en cuenta la temperatura:

import numpy as np

def compute_next_token_probs(logits: np.ndarray, temperature: float = 0.7) -> np.ndarray:
    # 1. Escalado por temperatura
    scaled = logits / max(temperature, 1e-4)
    # 2. Softmax estable (restando el máximo para prevenir overflow)
    exp_logits = np.exp(scaled - np.max(scaled))
    probs = exp_logits / np.sum(exp_logits)
    return probs

# Ejemplo de llamada: 4 posibles tokens
mock_logits = np.array([12.5, 9.1, 4.0, 1.2])
print("Probabilidades de tokens:", np.round(compute_next_token_probs(mock_logits, temperature=0.7), 4))

Cómo ver las probabilidades crudas de los tokens a través de cURL en la terminal:

Puedes pedir a la API que devuelva las probabilidades lógicas exactas (logprobs) para ver las alternativas que consideró el modelo:

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": "La capital de Francia es"}],
    "max_tokens": 1,
    "logprobs": true,
    "top_logprobs": 3
  }'

En la respuesta JSON, el parámetro top_logprobs mostrará las puntuaciones matemáticas exactas para las opciones París, ciudad, etc.


3. Por qué Next-Token conduce a alucinaciones y cómo solucionarlo

Dado que el modelo genera texto localmente "aquí y ahora", tiende a caer en trampas estadísticas:

  1. Error de compromiso temprano (Early Commitment): Si en las primeras dos palabras el modelo elige accidentalmente un token desafortunado, todos los siguientes tokens intentarán justificar esta elección errónea en lugar de reconocer el error.
  2. Imposibilidad de retroceder (No Backtracking): La inferencia normal no puede borrar una palabra ya generada.
  3. Por qué los modelos de razonamiento (Reasoning Models / DeepSeek R1 / o3) funcionan mejor: Utilizan cadenas de razonamiento (<thought>...</thought>), donde antes de proporcionar la respuesta final generan cientos de tokens de análisis interno y auto-verificación.

4. Escenarios prácticos de ingeniería en producción

Recuerda el pipeline autorregresivo:

  • Prompts como "Piensa antes de responder" o "Desglosa paso a paso" funcionan no porque la IA se vuelva más atenta, sino porque obligas a generar tokens de razonamiento que físicamente se convierten en el contexto de entrada para el token final con la respuesta correcta.

01. Generación de Texto en Aplicaciones de Chatbot

02. Implementación de Sistemas de Recomendación

03. Desarrollo de Asistentes Virtuales

/ Preguntas frecuentesSchema.org FAQPage

FAQ: Predicción del Siguiente Token (Next-Token Prediction)

Para predecir el siguiente token en código o un artículo científico con precisión matemática, el modelo no puede depender de estadísticas superficiales de palabras: durante el preentrenamiento en billones de tokens, se vio obligado a formar en sus pesos un modelo comprimido del mundo, relaciones causales y lógica algorítmica.
/ Enlaces internos
Todos los términos