29

Modelos de razonamiento

¿Por qué pensar más antes de responder mejora la respuesta?

12 min

Modelos de razonamiento

Con voz. Puedes pausar y saltar a cualquier paso.

Lección completa

Subtítulos

¿Puede un modelo pensar antes de responder? Pongámoslo a prueba con un problema de lápiz y papel. Un tren sale con ciento cuarenta y ocho pasajeros.

Voz

Sin voz: la lección avanza sola con subtítulos.

La voz de esta lección está en preparación: por ahora avanza sola con subtítulos.

0:00 / 0:00

Qué lograrás

  • Explicar por qué escribir los pasos intermedios (la cadena de pensamiento) ayuda a un modelo que escribe un token a la vez.
  • Describir cómo se entrena un modelo de razonamiento: muchos intentos, una regla que comprueba la respuesta (recompensa verificable) y refuerzo de los intentos que aciertan.
  • Predecir qué gana y qué cuesta pensar más o votar entre varias respuestas, y reconocer sus límites: errores que se repiten y razonamientos convincentes pero equivocados.

Ideas clave

  1. Un modelo de lenguaje escribe un token por pasada. Si contesta de inmediato, toda la cuenta debe ocurrir por dentro; si escribe los pasos (cadena de pensamiento), cada resultado queda como contexto y cada token añade una pasada de cálculo.
  2. Pedir los pasos solo ayudó a modelos grandes (PaLM de 540 mil M: de 17.9 a 56.9 % en GSM8K; el de 8 mil M empeoró). Los modelos de razonamiento (o1 en 2024, DeepSeek-R1 en 2025) se entrenan para pensar por su cuenta.
  3. Se entrenan con refuerzo y recompensas verificables: una regla comprueba la respuesta (¿es el número correcto?, ¿pasa las pruebas?) y se refuerzan los intentos que aciertan. Nadie les dicta cómo pensar.
  4. Cómputo en tiempo de prueba: pensar más o votar entre varias respuestas mejora sin tocar los pesos. En nuestra medición, Qwen3.5-4B pasó de 14 de 32 aciertos sin pensar a 32 de 32 con unos 500 tokens de pensamiento; cortarlo a 32 tokens lo empeoró.
  5. Todo eso cuesta: los tokens de pensamiento se cobran como salida y hacen esperar, y votar multiplica el gasto. Votar no corrige un error que se repite, y un razonamiento convincente puede estar mal o no contar su razón real.

Lo que mucha gente cree

Creencia común Si el modelo muestra un razonamiento largo y ordenado, la respuesta es confiable: el razonamiento explica cómo llegó a ella.

Lo correcto El pensamiento escrito ayuda a calcular, pero no garantiza nada: un error en un paso arrastra a los siguientes con la misma seguridad, y el texto no siempre refleja la razón real (en el estudio de Chen et al., los modelos mencionaban la pista que usaban en el 25 % y el 39 % de los casos). Comprueba el resultado con algo externo: una cuenta, una prueba, una fuente.

Compruébalo

Cuatro preguntas. Sin nota ni cuenta: sirven para ver si la idea quedó.

Concepto¿Por qué escribir los pasos intermedios puede ayudar a un modelo de lenguaje a resolver un problema de varios pasos?
Concepto¿Qué es una recompensa verificable?
CálculoUn modelo piensa unos 500 tokens por respuesta y escribe a 100 tokens por segundo. Si votas entre 8 respuestas, ¿cuántos tokens de pensamiento pagas y cuánto tarda si las genera una tras otra?
AplicaciónTu equipo quiere activar el pensamiento extendido en todas las consultas de un asistente interno: saludos, búsquedas rápidas y, de vez en cuando, el cálculo de una cotización. ¿Qué recomiendas?

Por dentroPara quien quiere las fórmulas y el código. No hace falta para seguir el curso.

La cadena de pensamiento, en una fórmula

Un modelo autorregresivo genera cada token condicionado a todo lo anterior: yt∼pθ(⋅∣x,y<t)y_t \sim p_\theta(\cdot \mid x, y_{<t}). Si responde directo, la respuesta aa sale de pθ(a∣x)p_\theta(a \mid x) en unas pocas pasadas. Con cadena de pensamiento, primero escribe c=(c1,…,cm)c = (c_1, \dots, c_m) y luego responde condicionado a ella:

pθ(a∣x)=∑cpθ(c∣x) pθ(a∣x,c)p_\theta(a \mid x) = \sum_{c} p_\theta(c \mid x)\, p_\theta(a \mid x, c)

Cada token de cc cuesta una pasada completa, unas 2N2N operaciones para un modelo de NN parámetros (lecciones 24 y 26): con N=4⋅109N = 4\cdot 10^9 y m≈500m \approx 500 son unos 4⋅10124\cdot10^{12} cálculos más, y mm vueltas más de decodificación. Wei et al. (2022) lo dicen así: la cadena permite descomponer un problema en pasos, de modo que «se puede asignar cómputo adicional a los problemas que requieren más pasos».

Con 8 ejemplos resueltos en la indicación, en GSM8K (problemas escolares de matemáticas): PaLM 540B pasó de 17.9 a 56.9 %, PaLM 62B de 9.6 a 29.9 % y PaLM 8B bajó de 4.9 a 4.1 % (Wei et al., tabla 2). Los autores observaron que los modelos pequeños producían cadenas «fluidas pero ilógicas». Kojima et al. (2022) mostraron que basta añadir «Let's think step by step»: con text-davinci-002, GSM8K subió de 10.4 a 40.7 %. En la escena, los 3 y 51 tokens se contaron con el tokenizador de Qwen3.5, que separa cada cifra en un token.

Recompensas verificables

En la lección 28, RLHF maximiza los puntos de un modelo de recompensa rϕr_\phi sin alejarse demasiado del modelo de partida:

max⁡θ Ex, y∼πθ(⋅∣x)[r(x,y)]−β KL(πθ ∥ πref)\max_\theta\ \mathbb{E}_{x,\ y \sim \pi_\theta(\cdot\mid x)}\big[r(x,y)\big] - \beta\, \mathrm{KL}\big(\pi_\theta \,\|\, \pi_{\text{ref}}\big)

El refuerzo con recompensas verificables (RLVR, nombre de Lambert et al., 2024) usa el mismo objetivo pero cambia el juez por una función que comprueba: r(x,y)=α⋅1[ verificar(x,y) ]r(x,y) = \alpha\cdot\mathbb{1}[\,\text{verificar}(x,y)\,], por ejemplo «la respuesta final coincide con la correcta» o «el código pasa las pruebas». DeepSeek-R1-Zero (DeepSeek-AI, 2025) muestrea 16 respuestas por pregunta y compara cada recompensa con la del grupo (GRPO): Ai=(ri−media(r))/desv(r)A_i = (r_i - \text{media}(r))/\text{desv}(r). Su recompensa es exactitud + formato; evitaron los modelos de recompensa neuronales porque son «susceptibles al reward hacking». En AIME 2024 su exactitud pasó de 15.6 a 77.9 % (una muestra) y a 86.7 % votando entre 16. La longitud media de sus respuestas creció durante el entrenamiento, y apareció el «momento ajá» («Wait, wait. Wait.»). OpenAI describe o1 (2024) como «entrenado con aprendizaje por refuerzo a gran escala para razonar usando cadena de pensamiento»; no publicó su receta.

Autoconsistencia

Con kk respuestas muestreadas a1,…,aka_1, \dots, a_k, se elige la más repetida:

a^=arg⁡max⁡a∑i=1k1[ai=a]\hat a = \arg\max_{a} \sum_{i=1}^{k} \mathbb{1}[a_i = a]

Wang et al. (2023) votaron entre 40 cadenas: PaLM 540B pasó de 56.5 a 74.4 % en GSM8K (su medición de la cadena sola es 56.5 %; la de Wei et al., 56.9 %). OpenAI informó que o1 resolvía el 74 % de AIME 2024 con una muestra y el 83 % con consenso entre 64 (GPT-4o: 12 %). Votar ayuda cuando los errores se dispersan; si el modelo se equivoca siempre igual, la votación confirma el error.

Nuestra medición

Qwen3.5-4B (Qwen, 2026; Apache-2.0), cuantizado a fp8 y ejecutado con vLLM en una RTX 3060. Para cada idioma, 32 cadenas de pensamiento completas (hasta 4 096 tokens) con temperatura 0.7, top-p 0.95 y top-k 20. Presupuesto forzado, como el budget forcing de Muennighoff et al. (2025): si la cadena terminó sola en L≤BL \le B tokens, se usa su respuesta; si no, se corta en BB tokens, se cierra el pensamiento con una frase fija y se pide la respuesta. B=0B = 0 es el modo sin pensar del modelo. La comprobación de la respuesta (¿es 120?) es la misma regla que usaría una recompensa verificable.

presupuesto (tokens) 0 32 64 128 256 512 1 024 – 4 096
aciertos, pregunta en español 14 0 4 3 30 32 32
aciertos, pregunta en inglés 10 7 31 21 27 32 32

Las cadenas completas midieron entre 470 y 628 tokens (media 529) en español y entre 400 y 714 (media 498) en inglés. Con presupuestos cortos el resultado sube y baja; desde 512 no cambia. Es un solo problema con 32 intentos y un modelo pequeño: ilustra el fenómeno, no lo mide en general.

En código

from collections import Counter
import random

correcta = 120
sin_pensar = [140, 142, 120, 120, 148, 130, 136, 120, 170, 140, 148, 120, 138, 120, 120, 120,
              138, 143, 164, 160, 141, 120, 142, 120, 148, 120, 120, 134, 120, 142, 120, 120]
corte_32 = [180] * 32                  # presupuesto de 32 tokens: los 32 intentos dijeron 180
largo = [543, 509, 517, 509, 507, 514, 495, 470, 513, 545, 521, 508, 585, 486, 608, 531,
         529, 530, 538, 545, 549, 515, 512, 532, 628, 571, 521, 504, 517, 530, 518, 515]  # tokens que pensó cada intento

def aciertos(resp):
    return sum(r == correcta for r in resp)

def votacion(resp):                    # la respuesta que más se repite y sus votos
    return Counter(resp).most_common(1)[0]

print(aciertos(sin_pensar), votacion(sin_pensar))
print(Counter(r for r in sin_pensar if r != correcta).most_common(1))   # el error más repetido
print(aciertos(corte_32), votacion(corte_32))

# ¿qué tan seguido acierta la votación si votan k intentos tomados al azar?
rng = random.Random(0)
for k in (1, 5, 15):
    bien = sum(votacion(rng.choices(sin_pensar, k=k))[0] == correcta for _ in range(10_000))
    print(k, bien / 10_000)

# tokens de pensamiento con presupuesto B (si el modelo termina antes, se detiene solo)
for B in (0, 256, 512, 4096):
    print(B, round(sum(min(l, B) for l in largo) / len(largo), 1))
# 14 (120, 14)
# [(142, 3)]
# 0 (180, 32)
# 1 0.4375
# 5 0.6854
# 15 0.9501
# 0 0.0
# 256 256.0
# 512 508.6
# 4096 528.6

(En un empate, most_common se queda con la respuesta que apareció primero.)

Costo y espera

costo=Tentrada pentrada+(Tpensamiento+Tsalida) psalida,t≈tprimer token+Tpensamiento+Tsalidatokens por segundo\text{costo} = T_{\text{entrada}}\, p_{\text{entrada}} + \big(T_{\text{pensamiento}} + T_{\text{salida}}\big)\, p_{\text{salida}},\qquad t \approx t_{\text{primer token}} + \frac{T_{\text{pensamiento}} + T_{\text{salida}}}{\text{tokens por segundo}}

Anthropic, por ejemplo, cobra los tokens de pensamiento como salida, y cobra el pensamiento completo aunque solo muestre un resumen. Votar entre kk multiplica por kk los tokens generados (en nuestra prueba, 32 intentos pensando suman 16 915 tokens en español y 15 942 en inglés). Los 100 tokens por segundo de la escena son un supuesto.

Límites

Wei et al. revisaron 50 cadenas que terminaban en una respuesta equivocada: el 46 % estaban casi bien, salvo un error menor (una cuenta, un símbolo o un paso faltante). Chen et al. (2025) dieron a los modelos una pista escondida en la pregunta y midieron si su pensamiento la mencionaba cuando la usaban: Claude 3.7 Sonnet lo hizo en el 25 % de los casos y DeepSeek-R1 en el 39 %. El pensamiento escrito ayuda a calcular y a revisar, pero no es una explicación fiel garantizada.

Lo que viene

Cada pregunta de esta lección fue independiente. En una conversación, todo lo anterior también ocupa la ventana del modelo (y el pensamiento, también tokens): eso es la lección 30, contexto y memoria.

Lente de decisión

Qué significa esta idea si tu trabajo es decidir, no programar.

  • Pensar se paga dos veces: en tokens de salida (el pensamiento completo se cobra aunque solo veas un resumen) y en espera. Pide al proveedor cuántos tokens de pensamiento consume tu tarea típica y fija un tope.
  • Úsalo donde el error cuesta más: cálculos, contratos, código, análisis con varios pasos. Para preguntas simples, clasificar o redactar algo corto, un modelo sin pensamiento extendido suele bastar y responde antes.
  • Votar entre varias respuestas mejora cuando los errores se dispersan, pero multiplica el costo por el número de votos y no corrige un error que el modelo comete siempre igual.
  • No confíes en lo convincente del razonamiento: comprueba el resultado con algo externo (una cuenta, pruebas automáticas, una fuente). Donde puedas definir una regla que verifique, úsala también para evaluar.

Términos de la lección

Transcripción completa
ComentariosConversación pública de esta lección: dudas, datos por revisar, ideas.

Los comentarios viven en GitHub Discussions, en el repositorio público del curso; para escribir se necesita una cuenta de GitHub. Se cargan desde giscus.app al abrir esta sección. Las personas que revisan el curso los leen, y si un cambio se acepta, se aplica en los dos idiomas. Abrir el hilo en GitHub

Fuentes