Bueno, ya tenemos un poco más claro qué son las IAs de texto y cuáles son sus potencialidades y limitaciones. Ahora, podemos entrar al meollo del asunto. El prompting.
Vamos a ver qué tipos de prompt hay, cuál es la estructura y los componentes de prompt, y, después, veremos los mejores trucos para generar buenos prompts.
Cloze Prompts vs. Prefix Prompts
La primera forma de diferenciar entre tipos de prompts es según si son Cloze Prompts o Prefix Prompts.
Los Cloze Prompts son aquellos que incluyen texto con partes ocultas o sin completar. Lo que se espera con este tipo de prompts es que la IA complete los espacios vacíos.
Los Prefix Prompts son aquellos que no tienen partes vacías, sino que tienen un texto que debe ser continuado.
Cabe señalar que, en principio, las IAs basadas en la generación de texto de izquierda a derecha (como GPT) no están pensadas para resolver Cloze Prompts.
Sin embargo, si manipulamos un poco el prompt y dirigimos a la IA (como en el ejemplo), podemos lograr respuestas correctas. Es otra propiedad emergente.
Standard Prompt vs. Chain of Thought Prompt
En segundo lugar, podemos diferenciar entre los Standard Prompts y los Chain of Thought Prompts (CoT Prompts).
Los standard prompt son aquellos que contienen una instrucción simple que exige una respuesta simple (o que deja abierta la respuesta, lo que, generalmente, conduce a una respuesta simple).
Por ejemplo, aquí hacemos una pregunta directa y obtenemos una respuesta directa (que está mal):
En contraposición a los standard prompts tenemos los CoT prompts, en los que exigimos a la IA que desgrane el proceso que sigue para llegar a la respuesta (chain of thoughts). En este caso, vamos a decirle que transforme la información en ecuaciones y vaya paso a paso.
(En el caso de que la IA no sea capaz de generar un procesamiento lógico correcto, podemos pasarle como input un par de ejemplos de procesamientos lógicos correctos, lo que ayudará a generar mejores resultados).
¿Por qué sucede esto?
Muy sencillo: Ya hemos dicho que la IA genera texto en base a probabilidades teniendo en cuenta el texto antes generado.
Si le damos una operación y le pedimos que nos dé la respuesta, la IA asume que lo más probable es que quieras la respuesta directa.
Y te la da, aunque esté mal.
¿Y por qué está mal?
Depende. Pero, en este caso, porque el modelo no está diseñado para hacer los cálculos o los razonamientos de forma interna. Así que, si le damos un input con este tipo de procesamientos, puede confundirse.
Ahora bien, cuando le decimos que desgrane paso a paso el procedimiento lógico, la IA genera texto para cada uno de los pasos, los cuales puede resolver de forma más simple. Y, usando ese texto generado para generar nuevo texto, puede obtener la respuesta correcta.
El CoT prompting nos será muy útil con todo aquello que tenga que ver con reflexiones, el sentido común y los procesamientos lógicos.
Una última cosa: Como en el caso de las habilidades emergentes, el CoT prompting sólo funciona con modelos que superen los 100.000 millones de parámetros. En modelos más pequeños, el CoT prompting conduce a cadenas de pensamiento random.
Más de 3000 orangotanes ya reciben mis emails
Suscríbete a la Niusleta de Joseo20.
Yo sí mando spam. Cuando tengo que vender, vendo. El resto de tiempo envío emails con temas que considero interesantes.
Hablo de todo lo que me sale de los cojones, no sólo de marketing o negocios. Hay política, filosofía y otras gilipolleces.
Es probable que después de leerla me odies.
Incluye orangotanes.
Zero-Shot vs. Few-Shot
Por otro lado, tenemos que diferenciar entre Zero-Shot y Few-Shot prompting. Y hay que tener cuidado, porque estos términos se utilizan de forma distinta según el contexto en el que nos encontremos.
Así que no siempre que encuentres estos conceptos por ahí harán referencia a lo mismo que hacemos nosotros.
Nosotros estamos hablando de Zero-Shot y Few-Shot en prompting.
En el caso del prompting, entendemos por Zero-Shot aquellos prompts que no incluyen ningún ejemplo etiquetado para que la IA aprenda en base a él.
En cambio, el Few-Shot prompting consiste en ofrecer a la IA, en el propio prompt, una serie de ejemplos etiquetados (cuando sólo hay un ejemplo, hablamos de One-Shot prompting).
En general, el Zero-Shot prompting nos servirá para resolver trabajos sencillos. Sin embargo, cuando queramos hacer que la IA realice trabajos más complejos y menos “obvios”, es probable que tengamos que pasarle ejemplos a través de Few-Shot prompting.
Tanto el Zero-Shot como el Few-Shot prompting se pueden utilizar junto al Standard Prompt y al CoT prompting. Se pueden combinar para conseguir mejores resultados.
Por ejemplo, podemos combinar tanto Zero-Shot prompting con CoT prompting.
Aquí te dejo una adivinanza que a GPT-3 le cuesta resolver:
Incluso si intento usar CoT prompting, se equivoca:
Ahora, un prompt que combina One-Shot con CoT prompting para resolver la situación:
(Puedes alterar los datos de la pregunta que quieres que la IA responda para que veas que siempre –o casi– realiza bien el cálculo, no está sólo replicando lo que ve en el ejemplo).
Gracias a esto, podemos conseguir resultados más ajustados que los que conseguiríamos si pidiéramos directamente la respuesta.
¿Y si queremos directamente la respuesta y no todo ese razonamiento?
Fácil: Tomamos el output de la imagen anterior como parte de un nuevo input y pedimos que nos dé la respuesta final (a esto lo llamamos self augmented prompt).
En el caso de estar usando Playground no notaremos ninguna ventaja, porque nos muestra el procedimiento lógico en el prompt que nosotros le hemos pasado. Pero si lo hacemos a través de la API, únicamente obtendremos la respuesta (el output). Y la respuesta, esta vez, será correcta.
Obviamente, podemos hacer esto mismo con varios ejemplos previos, obteniendo un Few-Shot-CoT prompt. Con ello, aumentamos la probabilidad de que la IA entienda cómo debe llevar a cabo el razonamiento y, en consecuencia, aumentamos la probabilidad de que nos dé la respuesta correcta.
Autoconsistencia
Pero supongamos que queremos que la IA resuelva procedimientos lógicos difíciles, en los cuales es incapaz de dar una respuesta correcta con seguridad incluso cuando usamos Few-Shot-CoT prompts.
¿Qué podemos hacer?
Aquí ya estamos complicando un poco las cosas. Es posible que no necesites lo que vamos a explicar a continuación si lo que quieres es montar webs o cosas similares. Pero, si quieres montar algo de mayor envergadura, debes conocer en qué consiste la Autoconsistencia.
La Autoconsistencia es una continuación del CoT. Lo que hacemos es generar múltiples cadenas de pensamiento con sus consecuentes respuestas finales (tal y como hicimos en el apartado anterior) para una misma pregunta y, después, tomamos esos outputs, los usamos como input y le pedimos que nos indique la respuesta más frecuente.
Sí, sé que pedirle que nos arroje el resultado más frecuente es una estupidez. Hay formas de hacerlo más fácilmente con programación. Y si tuvieras que implementar algo así en una aplicación, sería mejor que lo programases de otro modo. Pero aquí estamos explorando el potencial de la IA.
En cualquier caso, la Autoconsistencia se basa en que la IA genere varias respuestas y elija la más frecuente. Esta forma de generar respuestas ha demostrado mejorar los resultados en aritmética y razonamiento simbólico de la IA, incluso en aquellos casos en que los CoT prompts no daban resultados fiables.
Más de 3000 orangotanes ya reciben mis emails
Suscríbete a la Niusleta de Joseo20.
Yo sí mando spam. Cuando tengo que vender, vendo. El resto de tiempo envío emails con temas que considero interesantes.
Hablo de todo lo que me sale de los cojones, no sólo de marketing o negocios. Hay política, filosofía y otras gilipolleces.
Es probable que después de leerla me odies.
Incluye orangotanes.
Conocimiento Generado
Por último, hablemos del enfoque de Conocimiento Generado, el cual funciona bastante bien en temas de sentido común (que la IA no tiene, obviamente).
Lo que buscamos hacer con este enfoque es generar conocimiento útil que utilizar posteriormente para obtener la respuesta deseada.
Este enfoque utiliza dos pasos. Uno para obtener el conocimiento y otro para usarlo.
En un primer momento, se genera conocimiento a través de un prompt y, en un segundo paso, integramos ese conocimiento y lo usamos para obtener las respuestas. Una vez tenemos las respuestas, le pedimos que elija la opción más frecuente (como en el caso anterior).
A día de hoy, se me ocurren pocas situaciones en las que sea especialmente útil este enfoque, pero existe y conviene tenerlo en cuenta. Si quieres saber más sobre él, aquí tienes el paper donde se explica.
Deja un comentario
Lo siento, debes estar conectado para publicar un comentario.