In-context learning: la magia del prompt que le "enseña" a la IA en el momento
Descubre cómo los modelos de lenguaje aprenden sobre la marcha y por qué esto cambia las reglas del juego
¿Alguna vez has deseado tener un asistente superinteligente que pueda aprender cualquier tarea en segundos? Bueno, resulta que la IA ya puede hacer algo parecido. Bienvenidos al fascinante mundo del in-context learning (ICL).
Si recuerdan, hace poco hablé sobre un fascinante artículo científico titulado "The Prompt Report: A Systematic Survey of Prompting Techniques". Hoy veremos una de las técnicas más fundamentales que describe: el in-context learning o aprendizaje en contexto.
¿Qué es exactamente el in-context learning (ICL)?
El ICL se refiere a la capacidad de los modelos de lenguaje grandes (LLMs) para aprender a realizar tareas simplemente proporcionándoles ejemplos dentro del prompt, sin necesidad de actualizar sus parámetros.
Imagina que tienes un amigo robot que nunca ha cocinado. En lugar de reprogramarlo completamente, simplemente le muestras un par de recetas y ¡boom! De repente, es capaz de preparar un banquete gourmet. Eso es básicamente el ICL en acción.
Por ejemplo, imagina que quieres que un LLM clasifique reseñas de películas como positivas o negativas. Podrías usar ICL así:
Clasifica las siguientes reseñas de películas como positivas o negativas:
Reseña: "Esta película fue increíble, me mantuvo al borde de mi asiento".
Clasificación: Positiva
Reseña: "Qué pérdida de tiempo, la trama era confusa y los actores terribles".
Clasificación: Negativa
Reseña: "No puedo esperar para ver la secuela, ¡fue espectacular!". Clasificación: Positiva
Ahora clasifica esta:
Reseña: "La película tenía potencial, pero la ejecución dejó mucho que desear".
Clasificación:
Nota como le damos una instrucción, luego un par de ejemplos y finalmente le pedimos que clasifique la ultima reseña.
Por cierto, cuando le di ese prompt a ChatGPT si respuesta fue:
Reseña: "La película tenía potencial, pero la ejecución dejó mucho que desear".
Clasificación: Negativa
Componentes clave del ICL
Ejemplos: Son los casos que proporcionamos en el prompt. Pueden ser pares de pregunta-respuesta, demostraciones de una tarea o cualquier otro formato.
Instrucciones: A menudo, además de los ejemplos, incluimos instrucciones explícitas sobre la tarea a realizar.
Tipos de ICL según el número de ejemplos
Few-shot prompting: Proporcionamos varios ejemplos (típicamente de 2 a 10):
Traduce las siguientes palabras al francés:
Gato: Chat
Perro: Chien
Casa: Maison
Sol: Soleil
Ahora traduce:
Luna:
One-shot prompting: Solo damos un ejemplo:
Completa la analogía:
Grande es a pequeño como alto es a bajo.
Ahora completa:
Rápido es a lento como caliente es a:
Zero-shot prompting: No damos ejemplos, solo instrucciones:
Genera un eslogan publicitario para una nueva marca de café orgánico.
Factores que afectan el rendimiento del few-shot prompting
¿Te ha pasado que a veces la IA parece entenderlo todo y otras veces no entiende nada? Bueno, estos factores son la clave del misterio:
Cantidad de ejemplos: Más no siempre es mejor. El óptimo varía según la tarea y el modelo. Por ejemplo, para tareas simples, 3-5 ejemplos pueden ser suficientes, mientras que para tareas más complejas, podrías necesitar 10 o más.
Orden de los ejemplos: Sorprendentemente, el orden puede afectar significativamente el rendimiento. En algunos casos, ordenar los ejemplos de más simples a más complejos puede ayudar. Es como enseñar a un niño: empiezas con lo fácil y vas subiendo de nivel.
Distribución de etiquetas: Es importante mantener un balance en las clases o categorías de los ejemplos. Por ejemplo, si estás clasificando sentimientos, asegúrate de incluir un número similar de ejemplos positivos y negativos. No queremos que nuestra IA se vuelva pesimista y vea todo mal, ¿verdad?
Calidad de las etiquetas: Curiosamente, algunos estudios sugieren que la precisión de las etiquetas podría no ser crítica en todos los casos. Sin embargo, para tareas de alta precisión, es mejor usar ejemplos correctamente etiquetados.
Formato de los ejemplos: La forma en que presentamos los ejemplos importa. "Q: {pregunta} A: {respuesta}" es común, pero no siempre óptimo. Experimenta con diferentes formatos para ver cuál funciona mejor para tu tarea específica. Es como encontrar el peinado perfecto para tu IA.
Similitud de los ejemplos: Generalmente, ejemplos similares a la tarea objetivo funcionan mejor, pero a veces la diversidad puede ser beneficiosa. Por ejemplo, si estás traduciendo, usar ejemplos de diferentes campos semánticos puede mejorar la robustez del modelo.
Técnicas avanzadas de few-shot prompting
Ahora vamos con lo más interesante. Estas técnicas son como los trucos de magia avanzados del mundo del ICL:
1. K-nearest neighbor (KNN): seleccionando ejemplos dinámicamente
Esta técnica va más allá del few-shot prompting estático, seleccionando ejemplos de forma dinámica para cada nueva tarea. Así es como funciona:
Tienes una gran base de datos de ejemplos etiquetados (mucho más grande que lo que cabría en un prompt normal).
Para cada nueva tarea, un algoritmo analiza su contenido y busca en la base de datos los K ejemplos más similares semánticamente.
Solo estos K ejemplos más relevantes se incluyen en el prompt junto con la nueva tarea.
Lo innovador aquí es que el prompt se construye de forma única para cada tarea, en lugar de usar siempre los mismos ejemplos.
Por ejemplo, imagina que tienes miles de reseñas de productos en tu base de datos. Si quieres clasificar una nueva reseña sobre un smartphone, el sistema podría seleccionar automáticamente otras reseñas de smartphones como contexto, en lugar de reseñas de, digamos, sánguches peruanos o ropa.
Este enfoque permite:
Usar una base de conocimientos mucho más amplia que la que cabría en un prompt fijo.
Adaptar el contexto a cada tarea específica.
Mejorar la precisión al proporcionar ejemplos más relevantes para cada caso.
2. Vote-K: ¡democracia en acción... pero para prompts!
Este es un método de dos etapas para seleccionar y etiquetar ejemplos útiles:
Primera etapa: El modelo propone ejemplos no etiquetados que podrían ser útiles para la tarea.
Segunda etapa: Un anotador humano etiqueta estos ejemplos.
Los ejemplos etiquetados se usan para el prompting.
Ejemplo: Supongamos que quieres clasificar tweets sobre cambio climático. En la primera etapa, el modelo podría proponer tweets relevantes:
1. "Las temperaturas globales han aumentado 1.1°C desde la era preindustrial".
2. "Acabo de comprar un auto eléctrico para reducir mi huella de carbono".
3. "Los niveles del mar están subiendo a un ritmo alarmante".
Luego, un humano etiquetaría estos tweets (por ejemplo, como "hecho científico", "acción personal", "consecuencia"), y estos ejemplos etiquetados se usarían en el prompt final. Es como un trabajo en equipo entre humanos e IA, ¿te lo imaginas?
3. Self-generated in-context learning (SG-ICL): cuando la IA se convierte en su propio maestro
Esta técnica usa el propio LLM para generar ejemplos. Funciona así:
Le pides al modelo que genere ejemplos para una tarea específica.
Usas estos ejemplos generados como contexto para el prompt final.
Ejemplo: Digamos que quieres que el modelo escriba titulares de noticias. Primero, le pides que genere ejemplos:
Genera 3 ejemplos de titulares de noticias sobre tecnología:
A lo que el modelo responde:
1. "Nueva IA de Google supera a humanos en diagnóstico médico"
2. "SpaceX lanza con éxito 60 satélites Starlink más"
3. "Apple anuncia iPhone plegable para 2025"
Finalmente le das la instrucción final
Ahora, genera un titular sobre un avance en energía renovable:
Es como si le pidieras a la IA que se invente sus propios ejercicios de tarea. ¡Aprendizaje autónomo en su máxima expresión!
4. Prompt mining: o cómo convertirse en un arqueólogo de prompts
Esta técnica busca formatos de prompt óptimos analizando grandes cuerpos de texto. La idea es encontrar patrones naturales de preguntas y respuestas que ocurren frecuentemente en el lenguaje.
Ejemplo: Después de analizar un gran cuerpo de texto, podrías descubrir que el formato "¿Sabías que...?" seguido de un hecho es muy común. Podrías usar este formato en tus prompts:
Completa estos hechos interesantes:
¿Sabías que los koalas duermen hasta 20 horas al día?
¿Sabías que el corazón de un colibrí late hasta 1,260 veces por minuto?
¿Sabías que las jirafas solo necesitan dormir 2 horas al día?
Ahora, completa este:
¿Sabías que los elefantes...?
Es como ser un Indiana Jones de la era digital, ¡buscando el arca perdida de los prompts perfectos!
¿Por qué es importante el in-context learning?
El ICL es revolucionario porque permite que los LLMs sean increíblemente versátiles. Podemos "reprogramar" estos modelos para diversas tareas sin necesidad de reentrenarlos, simplemente ajustando nuestros prompts. Esto tiene varias implicaciones importantes:
Flexibilidad: Podemos adaptar rápidamente un modelo a nuevas tareas sin necesidad de reentrenamiento.
Eficiencia: Ahorra tiempo y recursos computacionales al evitar el reentrenamiento constante (¿alguno de ustedes reentrena sus modelos?).
Personalización: Permite ajustar el comportamiento del modelo para necesidades específicas de cada usuario o aplicación.
Experimentación: Facilita la prueba rápida de diferentes enfoques para resolver problemas.
Imagina tener un asistente personal de IA que pueda adaptarse instantáneamente a cualquier tarea que le pidas, desde ayudarte con tu declaración de impuestos hasta sugerir la receta perfecta para esa cena romántica. Eso es el poder del ICL en acción. ¿Para que quieres un mayordomo si puedes tener una IA que hace de todo?
Limitaciones y consideraciones
A pesar de su poder, el ICL también tiene algunas varias limitaciones:
Espacio de contexto: Los modelos tienen un límite en la cantidad de texto que pueden procesar de una vez, lo que limita cuántos ejemplos podemos incluir. Es como tratar de meter toda tu ropa en una maleta de mano.
Consistencia: No siempre garantiza resultados consistentes, especialmente en tareas complejas. A veces, la IA puede tener sus "días malos", como cualquiera de nosotros.
Dependencia de ejemplos: La calidad de los resultados depende en gran medida de la calidad y relevancia de los ejemplos que le des. Es como enseñar a cocinar: si tus recetas son malas, no esperes un banquete gourmet.
El futuro del ICL
El in-context learning es solo la punta del iceberg en el fascinante mundo del prompting. Esta técnica ha abierto nuevas posibilidades en cómo interactuamos con y utilizamos los modelos de lenguaje grandes. A medida que la investigación avanza, es probable que veamos técnicas aún más sofisticadas que mejoren la precisión y eficiencia del ICL.
Ahora que conoces cómo funciona el ICL, ¿qué ideas tienes para usarlo? Sea lo que sea, recuerda: en el mundo del ICL, el único límite es tu imaginación. ¡Así que empieza a experimentar!
¿Qué opinan sobre el ICL? ¿Has probado esta técnica?
Hasta la próxima!,
Germán.
Nota:
Esta es una serie de posts sobre prompting. En los próximos posts de esta serie, exploraremos otras técnicas como chain-of-thought, zero-shot y mucho más.