Aprendizaje "zero-shot" y "few-shot"
En este artículo se explica el aprendizaje "zero-shot" y "few-shot" para la ingeniería de solicitudes en .NET, incluidos sus casos de uso principales.
El rendimiento del modelo GPT se beneficia de la ingeniería de consultas, que es la práctica de proporcionar instrucciones y ejemplos a un modelo para refinar su salida. El aprendizaje "zero-shot" y "few-shot" son técnicas que se pueden usar al proporcionar ejemplos.
Con el aprendizaje "zero-shot", se incluyen solicitudes, pero no finalizaciones textuales. Puede incluir finalizaciones que solo constan de indicaciones. El aprendizaje "zero-shot" se basa completamente en el conocimiento existente del modelo para generar respuestas, lo que reduce el número de tokens creados y puede ayudarle a controlar los costos. Sin embargo, el aprendizaje "zero-shot" no se agrega al conocimiento del modelo.
Este es una solicitud "zero-shot" de ejemplo que indica al modelo que evalúe la entrada del usuario para determinar cuál de las cuatro intenciones posibles representa la entrada y, a continuación, prefacio su respuesta con "Intención: ".
prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: {request}
Intent:
""";
Con el aprendizaje "zero-shot", se incluyen solicitudes emparejadas con finalizaciones textuales. En comparación con el aprendizaje "zero-shot", esto significa que el aprendizaje "zero-shot" genera más tokens y hace que el modelo actualice su conocimiento, lo que puede hacer que el aprendizaje "zero-shot" sea más intensivo en los recursos. Sin embargo, por las mismas razones, el aprendizaje "zero-shot" también ayuda al modelo a generar respuestas más relevantes.
prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: Can you send a very quick approval to the marketing team?
Intent: SendMessage
User Input: Can you send the full update to the marketing team?
Intent: SendEmail
User Input: {request}
Intent:
""";
Casos de uso de aprendizaje "zero-shot"
El aprendizaje "zero-shot" es la práctica de pasar solicitudes que no están emparejados con finalizaciones textuales, aunque se pueden emparejar con una indicación. Hay dos casos de uso principales para el aprendizaje "zero-shot":
- Trabajar con LLM optimizados: dado que se basa en el conocimiento existente del modelo, el aprendizaje "zero-shot" no es tan intensivo en recursos como el aprendizaje "few-shot", y funciona bien con los LLM que ya se han optimizado en conjuntos de datos de instrucción. Es posible que pueda confiar únicamente en el aprendizaje de "zero-shot" y mantener los costos relativamente bajos.
- Establecer líneas de base de rendimiento: el aprendizaje "zero-shot" puede ayudarle a simular el rendimiento de la aplicación para los usuarios reales. Esto le permite evaluar varios aspectos del rendimiento actual del modelo, como la exactitud o la precisión. En este caso, normalmente se usa el aprendizaje "zero-shot" para establecer una base de referencia de base y, a continuación, experimentar con el aprendizaje "zero-shot" para mejorar el rendimiento.
Casos de uso de aprendizaje "zero-shot"
El aprendizaje "zero-shot" es la práctica de pasar solicitudes emparejadas con finalizaciones textuales (solicitudes "zero-shot") para mostrar al modelo cómo responder. A diferencia del aprendizaje "zero-shot", el aprendizaje "few-shot" puede agregar al conocimiento del modelo. Incluso puede usar sus propios conjuntos de datos para generar automáticamente solicitudes "few-shot" mediante la generación aumentada de recuperación.
El aprendizaje "few-shot" tiene dos casos de uso principales:
- Ajuste de un LLM: dado que puede agregar al conocimiento del modelo, el aprendizaje "few-shot" puede mejorar el rendimiento de un modelo. También hace que el modelo cree más tokens que el aprendizaje "zero-shot", lo que puede llegar a ser prohibitivamente costoso o incluso inviable. Sin embargo, si su LLM aún no está optimizado, no obtendrá un buen rendimiento con solicitudes "zero-shot" y se garantiza el aprendizaje "few-shot".
- Corrección de problemas de rendimiento: puede usar el aprendizaje "few-shot" como un aprendizaje "zero-shot". En este caso, se usa el aprendizaje "zero-shot" para establecer una línea de base de rendimiento y, a continuación, experimentar con el aprendizaje "few-shot" en función de las solicitudes "zero-shot" que usó. Esto le permite agregar al conocimiento del modelo después de ver cómo responde actualmente, por lo que puede iterar y mejorar el rendimiento al tiempo que minimiza el número de tokens que introduce.
Advertencias
- El aprendizaje basado en ejemplo no funciona bien para tareas de razonamiento complejas. Sin embargo, agregar instrucciones puede ayudar a solucionar esto.
- El aprendizaje "few-shot" requiere la creación de solicitudes largas. Las solicitudes con un gran número de tokens pueden aumentar el cálculo y la latencia. Esto suele significar un aumento de los costos. También hay un límite para la longitud de las solicitudes.
- Cuando se utilizan varios ejemplos, el modelo puede aprender patrones falsos, como "Los sentimientos tienen el doble de probabilidades de ser positivos que negativos".