El prompting zero-shot consiste en pedirle a un modelo una tarea solo con una instrucción, sin mostrarle ningún ejemplo de la respuesta que quieres. "Traduce este párrafo al inglés" y "Resume este correo en dos frases" son prompts zero-shot. Es la forma normal en que la gente usa los modelos de chat, y para las tareas comunes suele ser todo lo que necesitas.
Qué significa zero-shot
En aprendizaje automático, un "shot" es un ejemplo resuelto. Los términos son anteriores a los modelos de chat, pero su sentido en el prompting lo popularizó Brown et al. 2020, "Language Models are Few-Shot Learners", que probó GPT-3 en tres situaciones: una descripción de la tarea con cero, una o unas pocas demostraciones en el prompt, y sin reentrenar en ninguna. Para aquel modelo, unos pocos ejemplos solían ganar a ninguno.
Desde entonces, los modelos de chat se han entrenado a fondo para seguir instrucciones, y por eso una petición sencilla funciona tan bien hoy. Un prompt zero-shot es justo la situación para la que se entrenaron: alguien describe un trabajo con palabras y espera que se haga.
Zero-shot no significa cero contexto. Un buen prompt zero-shot sigue indicando el público, pega la entrada y describe el formato y los límites. Lo único que deja fuera es un ejemplo terminado de la salida.
Un prompt zero-shot bien hecho
El prompt de abajo extrae tareas de unas notas de reunión sin ningún ejemplo de la salida, solo con una descripción precisa de ella. Desactiva partes para ver qué líneas hacen el trabajo.
Reunión del sprint, martes
Priya arreglará el tiempo de espera del login antes del viernes.
Hablamos de cambiar a otro proveedor de CI, sin decisión.
Tom escribe las notas de la versión 2.4.
Alguien debería actualizar el documento de incorporación.
Lena: reviso las notas de Tom antes del jueves.Priya: Arreglar el tiempo de espera del login (antes del viernes) Tom: Escribir las notas de la versión 2.4 Sin asignar: Actualizar el documento de incorporación Lena: Revisar las notas de la versión de Tom (antes del jueves)
La línea de formato hace el trabajo que haría un ejemplo: detalla la forma exacta de cada línea, así que no hay nada que copiar. Desactívala y la respuesta elige su propia forma, a menudo una lista con viñetas y nombres en negrita, que se lee bien pero ya no se pega limpiamente en un gestor de tareas. Desactiva las restricciones y la conversación sobre CI puede aparecer como tarea, porque nada le dijo al modelo que los temas sin decidir no cuentan.
Cuándo basta con zero-shot
Zero-shot funciona cuando el modelo puede deducirlo todo de tus palabras:
- La tarea es común. Resumir, traducir, explicar, corregir la gramática y escribir una función según una especificación clara son tareas que el modelo ha visto infinidad de veces durante el entrenamiento.
- Puedes describir la salida con exactitud. "Una línea por tarea, primero el responsable" es tan claro como un ejemplo. Consulta salida estructurada para describir formatos que leerá un programa.
- Las categorías significan lo que dicen. Clasificar reseñas en positivas y negativas no suele necesitar ejemplos, porque esas etiquetas significan lo mismo para casi todo el mundo.
Cuándo añadir ejemplos
Algunas cosas son difíciles de expresar con palabras, y ahí es donde los prompts zero-shot empiezan a fallar:
- Tus propios límites. Si tu equipo de soporte archiva "no puedo iniciar sesión" como problema de cuenta y no como error, el modelo no puede saberlo. Elegirá la interpretación que haría la mayoría de la gente.
- Un estilo propio. Los mensajes de commit de tu equipo o el tono de tu newsletter son más fáciles de mostrar que de describir.
- Fallos por poco que se repiten. Si ya reformulaste la instrucción dos veces y la salida sigue fallando un poco de la misma manera, deja de reformular y muestra dos o tres respuestas correctas.
Eso es el prompting few-shot. Un hábito sensato es empezar con zero-shot, mirar lo que devuelve y añadir ejemplos solo para lo concreto que sale mal.
Cadena de pensamiento zero-shot
Kojima et al. 2022, "Large Language Models are Zero-Shot Reasoners", descubrieron que añadir una sola frase, "Pensemos paso a paso" (Let's think step by step), hacía a los modelos grandes bastante mejores en problemas de aritmética, simbólicos y de lógica, sin ningún ejemplo. La frase hace que el modelo escriba los pasos intermedios antes de la respuesta, y cada paso que escribe pasa a ser contexto para el siguiente. Su método usaba dos llamadas: la primera producía el razonamiento y la segunda pedía la respuesta final.
En el bloque de abajo, la primera pestaña obliga a responder de inmediato y la segunda le da al modelo espacio para trabajar.
12:40
La primera respuesta olvidó los 10 minutos que recuperó el tren: el tipo de despiste que ocurre cuando un modelo tiene que comprometerse con la respuesta en sus primeros tokens. Un modelo actual bien podría acertar este problema de las dos maneras; la diferencia crece con el número de pasos del problema. La segunda versión tiene otra ventaja: cada paso está a la vista, así que puedes ver dónde falló una respuesta.
Los modelos que razonan internamente antes de responder ya hacen este trabajo sin que se lo pidas, así que "Pensemos paso a paso" les aporta poco más que una respuesta más larga. Cadena de pensamiento cubre la técnica a fondo, incluida la versión few-shot.
Zero-shot frente a few-shot de un vistazo
| Zero-shot | Few-shot | |
|---|---|---|
| Qué contiene el prompt | Instrucciones, contexto y entrada | Lo mismo, más unos cuantos pares de entrada y respuesta |
| Ideal para | Tareas comunes con una salida fácil de describir | Etiquetas propias, formatos poco habituales, estilo propio |
| Coste | Prompt corto | Prompt más largo, más tokens por llamada |
| Fallo típico | Elige la interpretación más común, no la tuya | Copia patrones accidentales de los ejemplos |
Preguntas frecuentes
¿Qué es el prompting zero-shot?
El prompting zero-shot consiste en darle a un modelo de lenguaje una tarea solo con instrucciones, sin ejemplos resueltos de la salida. "Resume este correo en dos frases" es un prompt zero-shot. Los modelos de chat actuales están entrenados para seguir instrucciones, así que los prompts zero-shot resuelven bien la mayoría de las tareas del día a día.
¿Qué diferencia hay entre el prompting zero-shot y el few-shot?
Un prompt zero-shot describe la tarea con palabras. Un prompt few-shot añade unos cuantos ejemplos, cada uno una entrada junto con la respuesta que quieres, para que el modelo copie el patrón. Empieza con zero-shot; pasa a few-shot cuando la salida no acierte una y otra vez con un formato o una distinción que es más fácil de mostrar que de describir.
¿Por qué se llama zero-shot?
En aprendizaje automático, un "shot" es un ejemplo resuelto. El artículo de Brown et al. de 2020 sobre GPT-3, "Language Models are Few-Shot Learners", probó el modelo con cero, una o unas pocas demostraciones de una tarea en el prompt, y eso convirtió esos nombres en el estándar del prompting: zero-shot, one-shot y few-shot.
¿Cuándo no funciona el prompting zero-shot?
Le cuesta cuando la tarea depende de reglas que solo tú conoces, como las categorías de tu equipo o tu guía de estilo, cuando el formato de salida es poco habitual y en razonamientos de varios pasos en los que el modelo responde demasiado rápido. Los ejemplos resuelven los dos primeros casos; pedirle al modelo que trabaje paso a paso ayuda con el tercero.
¿Qué es la cadena de pensamiento zero-shot?
Es un prompt zero-shot que le pide al modelo que razone antes de responder, con la famosa frase "Pensemos paso a paso" (Let's think step by step). Kojima et al. demostraron en 2022 que esa sola frase, sin ejemplos, mejoraba los resultados de los modelos grandes en problemas de aritmética y lógica.