lunes, 21 de septiembre de 2026

Cómo hacemos que un modelo razone (II): técnicas de prompting

Este el segundo post que voy a dedicar a mecanismos para convertir un modelo de lenguaje en un modelo razonador.

En este caso, siguiendo, como en toda la serie, las aportaciones del libro 'Building a resoning model (from scratch)' de Sebastian Raschka, me voy a concentrar en dos mecanismos que no afectan al modelo en sí mismo (no suponen un re-entrenamiento) sino sólo una forma de invocarlo y que, curiosamente, hace que razone mejor.

Y ello me va a llevar a describir, muy someramente, dos técnicas de prompting muy conocidas: la cadena de pensamiento, CoT ('Chain-Of-.Thouhgt') y la autoconsistencia ('Self-Consistency')


Escalado en tiempo de inferencia


Veíamos al hablar de estrategias en el post anterior de la serie, que algunas implicaban el re-entrenamiento del modelo y otras no. Las que no suponen re-entrenar el modelo actúan cuando estamos haciendo una solicitud al modelo, es decir, en tiempo de inferencia.

En concreto, ambas actúan simplemente cambiando en la forma en que interrogamos o hacemos una solicitud al modelo, es decir, afectan a cómo construimos el 'prompt'.

En ambos casos, estas técnicas tienden a hacer que el modelo razone mejor pero, a cambio, suponen mayor tiempo de inferencia, mayor esfuerzo de computación y mayor consumo de tokens.

Por eso, Raschka situa estas dos técnicas dentro de lo que denomina 'inference-time scaling' (escalado en tiempo de inferencia)


Chain-Of-Thought. Cadena de pensamiento


Cadena de pensamiento

La cadena de pensamiento es, probablemente, una de las técnicas de prompting más conocidas y más insistentemente tratadas. Descrita inicialmente en el paper 'Large Language Models are Zero-Shot Reasoners'  implica, simplemente, pedirle al modelo que proceda razonando paso a paso

En una versión sencilla, basta con que, al prompt, digamos normal le añadamos el texto "procede paso a paso", "explica lo que haces paso a paso" o "razona paso a paso".

Cuando lo utilizamos como técnica de prompting a nivel usuario, interactuando por ejemplo con ChatGPT, la podemos aplicar indicando nosotros, el usuario, los pasos que deseamos que aplique (cuando tenemos el 'expertise' suficiente y no queremos que el modelo improvise).

¿Cómo puede ser que algo tan sencillo funcione tan bien?

Más allá de las explicaciones del paper original, Raschka nos lo resume diciendo que, por un lado, el hecho de que el modelo proceda paso a paso le concede al propio modelo más oportunidades de auto-corregirse y, además, que esta forma de preguntar y expresar la solución a un problema encaja muy bien con los ejemplos que recibieron los modelos razonadores durante su entrenamiento (ejemplos procedentes con frecuencia de problemas matemáticos y lógicos en que el razonamiento paso a paso es muy natural).

Raschka nos advierte de que esta forma de actuar no añade nuevo conocimiento al modelo, sino sólo cambia la forma de explotar ese conocimiento y eso puede conducir a mejores resultados en problemas matemáticos, lógicos u aquellos que de forma natural impliquen unos pasos.

Y también nos advierte de que no es una fórmula mágica y que no siempre produce mejores resultados y que, en el caso de problemas simples, puede llevar al fenómeno del 'overthinking' (pensar y gastar demasiado) para llegar a resultados iguales o peores. 


Self-Consistency. Autoconsistencia


Auto-consistencia

La técnica de auto-consistencia fue introducida en el paper 'Self-consistency improves chain of thought reasoning in language models'

En el caso de la auto-consistencia, lo que hacemos es pedir al modelo que pruebe varias soluciones diferentes (cada una de las cuales puede incluir su propia cadena de pensamiento) para luego hacer una suerte de votación o consenso que genere la respuesta final.

Cuando se utiliza directamente como usuario se puede dejar al modelo libre de que elija las diferentes vías o se le puede indicar qué tipo de soluciones o razonamientos debe de intentar.

Se trata en general de una técnica más exigente computacionalmente que la anterior porque, al fin y al cabo, en general llevará a cabo varias cadenas de pensamiento.


El usuario, las aplicaciones y los agentes


Antes de cerrar este post, quisiera hacer una aclaración.

Las dos técnicas que hemos visto se pueden utilizar, y se utilizan de hecho, cuando interactuamos directamente nosotros, personas, con nuestro chatbot generativo tipo ChatGPT. Las podemos utilizar cualquiera de nosotros en cualquier momento. Es su empleo como usuarios.

Pero no olvidemos que, por ejemplo, ChatGPT no es un modelo, sino que más que eso es una aplicación completa construida alrededor de unos modelos a los que recubre y cuyo uso gestiona. Es decir, ChatGPT puede 'decidir' utilizar estas técnicas sin que nosotros se lo pidamos explícitamente, ya sea como una especie de preprocesamiento previo o como parte de su 'system prompt', y esto puede hacer que percibamos el razonamiento sin haberlo solicitado nosotros.

De la misma forma, los famosos agentes, que no dejan de ser también aplicaciones construidas alrededor de modelos, pueden actuar como razonadores usando estas técnicas de forma trasparente para los usuarios.


Conclusiones


Entre las múltiples formas de hacer que un modelo razone, dos de las más sencillas, casi sorprendentemente sencillas, consiste un utilizar unas técnicas de prompting que soliciten al modelo el razonamiento: la cadena de pensamiento y la auto-consistencia.

Son técnicas usadas en tiempo de inferencia y que suponen mayor consumo computacional y que, aunque no están cien por cien garantizadas, suelen dar muy buenos resultados.

Estas técnicas, las podemos utilizar directamente como usuarios o pueden venir embebidas (sin uso directo por nuestra aparte) en aplicaciones basadas en modelos de lenguaje como los chatbots generativos o los agentes.


Artículos de este blog relacionados


No hay comentarios:

Publicar un comentario