Aprovecha el poder de LLMs Estímulo sin entrenamiento y con pocos ejemplos
LLMs Estímulo poder, sin entrenamiento y pocos ejemplos
Introducción
El poder de los LLMs se ha convertido en la nueva tendencia en la comunidad de IA. Los primeros adoptantes se han acercado a las diferentes soluciones de IA generativa como GPT 3.5, GPT 4 y BARD para diferentes casos de uso. Se han utilizado para tareas de preguntas y respuestas, escritura de textos creativos y análisis crítico. Dado que estos modelos se entrenan en tareas como la predicción de la siguiente oración en una amplia variedad de corpus, se espera que sean excelentes en la generación de texto.
Las robustas redes neuronales basadas en transformadores permiten que el modelo se adapte también a tareas de aprendizaje automático basadas en el lenguaje, como clasificación, traducción, predicción y reconocimiento de entidades. Por lo tanto, los científicos de datos han podido aprovechar las plataformas de IA generativa para casos de uso de aprendizaje automático basados en el lenguaje más prácticos e industriales al proporcionar las instrucciones adecuadas. En este artículo, pretendemos mostrar lo fácil que es utilizar LLMs generativos para tareas prevalentes de aprendizaje automático basadas en el lenguaje utilizando la técnica de “prompting” y analizar críticamente los beneficios y limitaciones de la técnica de “zero-shot” y “few-shot prompting”.
Objetivos de aprendizaje
- Aprender sobre “zero-shot” y “few-shot prompting”.
- Analizar su rendimiento en una tarea de ejemplo de aprendizaje automático.
- Evaluar “few-shot prompting” frente a técnicas más sofisticadas como el ajuste fino.
- Comprender los pros y los contras de las técnicas de “prompting”.
Este artículo fue publicado como parte del Data Science Blogathon.
¿Qué es el “Prompting”?
Empecemos definiendo los LLMs. Un modelo de lenguaje grande, o LLM, es un sistema de aprendizaje profundo construido con múltiples capas de transformadores y redes neuronales de retroalimentación que contienen cientos de millones a miles de millones de parámetros. Se entrenan en conjuntos de datos masivos de diferentes fuentes y se construyen para entender y generar texto. Algunas aplicaciones ejemplos son la traducción de lenguaje, la resumen de texto, la respuesta a preguntas, la generación de contenido, entre otras. Existen diferentes tipos de LLMs: solo codificador (BERT), codificador + decodificador (BART, T5) y solo decodificador (PALM, GPT, etc.). Los LLMs con un componente decodificador se llaman LLMs Generativos; este es el caso de la mayoría de los LLMs modernos.
Si le indicas a un LLM Generativo que realice una tarea, generará el texto correspondiente. Sin embargo, ¿cómo le decimos a un LLM Generativo que realice una tarea en particular? Es fácil; le damos una instrucción escrita. Los LLMs han sido diseñados para responder a los usuarios finales en función de las instrucciones, también conocidas como “prompts”. Has utilizado “prompts” si has interactuado con un LLM como ChatGPT. El “prompting” consiste en empaquetar nuestra intención en una consulta en lenguaje natural que provocará que el modelo devuelva la respuesta deseada (Ejemplo: Figura 1, Fuente: Chat GPT).
- Desbloqueando el poder de la diversidad en las redes neuronales cóm...
- Más allá de la curva de campana una introducción a la distribución t
- Monitoreo de modelos de Machine Learning en producción ¿Por qué y c...
Existen dos tipos principales de técnicas de “prompting” que veremos en las siguientes secciones: “zero-shot” y “few-shot”. Analizaremos sus detalles junto con algunos ejemplos básicos.
“Zero-shot” “Prompting”
El “zero-shot” “prompting” es un escenario específico de aprendizaje “zero-shot” único para los LLMs Generativos. En “zero-shot”, no proporcionamos datos etiquetados al modelo y esperamos que el modelo funcione en un problema completamente nuevo. Por ejemplo, utiliza ChatGPT para “zero-shot” “prompting” en nuevas tareas proporcionando las instrucciones adecuadas. Los LLMs pueden adaptarse a problemas no vistos porque comprenden contenido de muchas fuentes. Veamos algunos ejemplos.
Aquí tienes un ejemplo de consulta para la clasificación de texto en clases de sentimiento positivo, neutral y negativo.
Ejemplos de tweets
Los ejemplos de tweets son del Conjunto de datos de sentimiento de aerolíneas de Twitter de EE. UU. El conjunto de datos consiste en tweets de comentarios a diferentes aerolíneas etiquetados como positivos, neutrales o negativos. En la Figura 2 (Fuente: ChatGPT), proporcionamos el nombre de la tarea, es decir, Clasificación de Sentimiento, las clases, es decir, positivo, neutral y negativo, el texto y el “prompt” para clasificar. El comentario sobre la aerolínea en la Figura 2 es positivo y agradece la experiencia de volar con la aerolínea. ChatGPT clasificó correctamente el sentimiento de la reseña como positivo, mostrando la capacidad de ChatGPT para generalizar en una nueva tarea.
La Figura 3 anterior muestra Chat GPT con zero-shot en otro ejemplo pero con sentimiento negativo. Chat GPT nuevamente predice correctamente el sentimiento del tweet. Si bien hemos mostrado dos ejemplos donde el modelo clasifica correctamente el texto de la reseña, hay varios casos límite en los que incluso los LLMs de última generación fallan. Por ejemplo, veamos el ejemplo a continuación en la Figura 4. El usuario se queja de la calidad de la comida con la aerolínea; Chat GPT identifica incorrectamente el sentimiento como neutral.
En la tabla a continuación, podemos ver la comparación del zero-shot con el rendimiento del modelo BERT (Fuente) en el conjunto de datos de sentimiento de Twitter. Analizaremos las métricas de precisión, puntuación F1, precisión y recuperación. Evaluaremos el rendimiento para la indicación zero-shot en un subconjunto seleccionado aleatoriamente de datos del conjunto de datos de sentimiento de las aerolíneas para cada caso y redondearemos los números de rendimiento al entero más cercano. El zero-shot tiene un rendimiento inferior pero decente en cada métrica de evaluación, lo que demuestra el poder de la indicación. Los números de rendimiento se han redondeado al entero más cercano.
Indicación de pocos ejemplos
A diferencia del zero-shot, la indicación de pocos ejemplos implica proporcionar unos pocos ejemplos etiquetados en la indicación. Esto difiere del aprendizaje de pocos ejemplos tradicional, que implica el ajuste fino del LLM con unas pocas muestras para un problema nuevo. Este enfoque reduce la dependencia de grandes conjuntos de datos etiquetados al permitir que los modelos se adapten rápidamente y produzcan predicciones precisas para nuevas clases con un número reducido de muestras etiquetadas. Este método es beneficioso cuando reunir una cantidad considerable de datos etiquetados para nuevas clases lleva tiempo y esfuerzo. Aquí hay un ejemplo (Figura 5) de pocos ejemplos:
Pocos ejemplos vs Zero-shot
¿Cuánto mejora el rendimiento de pocos ejemplos? Si bien las técnicas de pocos ejemplos y zero-shot han mostrado buen rendimiento en ejemplos anecdóticos, pocos ejemplos tienen un rendimiento general más alto que zero-shot. Como muestra la tabla a continuación, podríamos mejorar la precisión de la tarea en cuestión proporcionando unos pocos ejemplos de alta calidad y muestras de ejemplos límite y críticos al indicar los modelos de IA generativa. El rendimiento mejora mediante el uso de aprendizaje de pocos ejemplos (10, 20 y 50 ejemplos). El rendimiento para la indicación de pocos ejemplos se evaluó en un subconjunto seleccionado aleatoriamente de datos del conjunto de datos de sentimiento de las aerolíneas para cada caso y los números de rendimiento se han redondeado al entero más cercano.
Según las métricas de evaluación en la tabla anterior, pocos ejemplos superan a zero-shot en un margen notable del 10% en precisión, del 7% en puntuación F1 y logran un rendimiento similar al del modelo BERT ajustado. Otra observación importante es que, después de 20 ejemplos, las mejoras se estancan. El ejemplo que hemos analizado es un caso de uso particular de Chat GPT en el conjunto de datos de sentimiento de Twitter de las aerolíneas de EE. UU. Veamos otro ejemplo para comprender si nuestras observaciones abarcan más tareas y modelos de IA generativa.
Modelos de lenguaje: Aprendices de pocos ejemplos
A continuación (Figura 6) se muestra un ejemplo de los estudios descritos en el artículo “Language Models are Few-Shot Learners” que compara el rendimiento de modelos de pocos ejemplos, uno solo y zero-shot con GPT-3. El rendimiento se mide en el banco de pruebas LAMBADA (predicción de palabras objetivo) en diferentes configuraciones de pocos ejemplos. La singularidad de LAMBADA radica en su enfoque en evaluar la capacidad de un modelo para manejar dependencias de largo alcance en el texto, que son situaciones en las que existe una distancia considerable entre una pieza de información y su contexto relevante. El aprendizaje de pocos ejemplos supera al aprendizaje de zero-shot en un margen notable del 12.2pp en precisión.
En otro ejemplo cubierto en el artículo mencionado anteriormente, se compara el rendimiento de GPT-3 en diferentes cantidades de ejemplos proporcionados en la indicación en comparación con un modelo BERT afinado en la prueba SuperGLUE. SuperGLUE se considera una prueba clave para evaluar el rendimiento en tareas de comprensión del lenguaje ML. El gráfico (Figura 7) muestra que los primeros ocho ejemplos tienen el mayor impacto. A medida que agregamos más ejemplos para la indicación de pocos ejemplos, llegamos a un punto en el que necesitamos aumentar exponencialmente los ejemplos para ver una mejora notable. Podemos ver claramente que las mismas observaciones que nuestro ejemplo de clasificación de sentimientos se replican.
La indicación sin ejemplos solo debe considerarse en escenarios donde falten datos etiquetados. Si obtenemos algunos ejemplos etiquetados, podemos lograr grandes mejoras de rendimiento utilizando la indicación con pocos ejemplos en comparación con la indicación sin ejemplos. Una pregunta persistente es qué tan bien funcionan estas técnicas en comparación con técnicas más sofisticadas como el afinamiento. Recientemente se han desarrollado varias técnicas de afinamiento LLM bien desarrolladas y su costo de uso también se ha reducido en gran medida. ¿Por qué no afinar simplemente nuestros modelos? En las secciones siguientes, profundizaremos en la comparación de las técnicas de indicación con las de modelos afinados.
Indicación con Pocos Ejemplos vs Afinamiento
El principal beneficio de la indicación con pocos ejemplos en los LLM generativos es la simplicidad de la implementación del enfoque. Recopilamos unos pocos ejemplos etiquetados y preparamos la indicación, realizamos la inferencia y listo. Incluso con varias innovaciones modernas, el afinamiento es bastante voluminoso en la implementación y requiere mucho tiempo y recursos de entrenamiento. Para algunos casos particulares, podemos usar las diferentes interfaces de usuario de los LLM generativos para obtener los resultados. Para la inferencia en un conjunto de datos más grande, el código sería algo tan simple como:
import os
import openai
messages = []
# Ejemplos etiquetados de Chat GPT
few_shot_message = ""
# Mencionar la tarea
few_shot_message = "Tarea: Clasificación de Sentimientos \n"
# Mencionar las clases
few_shot_message += "Clases: positivo, negativo \n"
# Agregar contexto
few_shot_message += "Contexto: Queremos clasificar el sentimiento de las reseñas de hoteles \n"
# Agregar ejemplos etiquetados
few_shot_message += "Ejemplos etiquetados: \n"
for labeled_data in labeled_dataset:
few_shot_message += "Texto: " + labeled_data["text"] + "\n";
few_shot_message += "Etiqueta: " + labeled_data["label"] + "\n"
# Llamar a la API de OpenAI para ChatGPT proporcionando los ejemplos con pocos ejemplos
messages.append({"role": "user", "content": few_shot_message})
chat = openai.ChatCompletion.create(
model="gpt-3.5-turbo", messages=messages
)
for data in unlabeled_dataset:
# Agregar el texto a clasificar
message = "Texto: " + data + ", "
# Agregar la indicación
message += "Indicación: Clasifica el texto dado en una de las categorías de sentimiento."
messages.append({"role": "user", "content": message})
# Llamar a la API de OpenAI para ChatGPT para la clasificación
chat = openai.ChatCompletion.create(
model="gpt-3.5-turbo", messages=messages
)
reply = chat.choices[0].message.content
print(f"ChatGPT: {reply}")
messages.append({"role": "assistant", "content": reply})
Otro beneficio clave de la indicación con pocos ejemplos en comparación con el afinamiento es la cantidad de datos. En la tarea de clasificación de sentimientos de las aerolíneas de EE. UU. en Twitter, se realizaron afinamientos de BERT con más de 10,000 ejemplos, mientras que la indicación con pocos ejemplos solo necesitaba de 20 a 50 ejemplos para obtener un rendimiento similar. Sin embargo, ¿estas mejoras de rendimiento se generalizan a otras tareas de ML basadas en el lenguaje? El ejemplo de clasificación de sentimientos que hemos cubierto es un caso de uso muy específico. El rendimiento de la indicación con pocos ejemplos no será igual al de un modelo afinado para cada caso de uso. Sin embargo, muestra una capacidad similar/mejor en una amplia variedad de tareas de lenguaje. Para mostrar el poder de la indicación con pocos ejemplos, hemos comparado el rendimiento con los modelos de lenguaje SOTA y afinados como BERT en tareas de comprensión del lenguaje estandarizadas, traducción y pruebas de preguntas y respuestas en las secciones siguientes. (Fuente: Los modelos de lenguaje aprenden con pocos ejemplos)
Comprensión del Lenguaje
Para comparar el rendimiento de la indicación con pocos ejemplos y el afinamiento en tareas de comprensión del lenguaje, analizaremos la prueba SuperGLUE. SuperGLUE es una prueba de comprensión del lenguaje que consta de tareas de clasificación, similitud de texto y inferencia de lenguaje natural. El modelo afinado utilizado para la comparación es un modelo BERT grande afinado y un modelo BERT++ afinado, y el LLM generativo utilizado es GPT-3. Los gráficos en las figuras (Figura 8 y Figura 9) a continuación muestran la indicación con pocos ejemplos con LLMs generativos de tamaños suficientemente grandes, y alrededor de 32 ejemplos con pocos ejemplos son suficientes para superar a BERT++ afinado y a BERT grande afinado. La ganancia de precisión sobre BERT grande es de aproximadamente 2.8 pp, lo que demuestra el poder de la indicación con pocos ejemplos en LLMs generativos.
Traducción
En la siguiente tarea, compararemos el rendimiento de few-shot y fine-tuning en tareas basadas en la traducción. Analizaremos el benchmark BLUE, también conocido como Bilingual Evaluation Understudy. BLEU calcula una puntuación entre 0 y 1, donde una puntuación más alta indica una mejor calidad de traducción. La idea principal detrás de BLEU es comparar la traducción generada con una o más traducciones de referencia y medir en qué medida la traducción generada contiene n-gramas similares a las traducciones de referencia. Los modelos utilizados para la comparación son XLM, MASS y mBART, y el LLM generativo utilizado es GPT-3.
Como muestra la tabla en la figura (Figura 10) a continuación, la generación de ejemplos con pocas instrucciones utilizando LLM generativos es suficiente para superar a XLM, MASS, multilingual BART e incluso a SOTA para diferentes tareas de traducción. Few-shot GPT-3 supera el trabajo previo de traducción automática neuronal no supervisada en 5 BLEU al traducir al inglés, lo que refleja su fortaleza como modelo de traducción al inglés. Sin embargo, es importante tener en cuenta que el modelo tuvo un rendimiento deficiente en ciertas tareas de traducción, como del inglés al rumano, lo que destaca sus limitaciones y la necesidad de evaluar el rendimiento caso por caso.
Preguntas y respuestas
En la tarea final, compararemos el rendimiento de few-shot y fine-tuning en tareas de preguntas y respuestas. El nombre de la tarea es autoexplicativo. Analizaremos tres benchmarks clave para tareas de preguntas y respuestas: PI QA (Procedural Information Question Answering), Trivia QA (conocimiento factual y respuesta a preguntas) y CoQA (Conversational Question Answering). La comparación se realiza con respecto a SOTA para modelos fine-tuned, y el LLM generativo utilizado es GPT-3. Como se muestra en los gráficos de las figuras (Figura 11, Figura 12 y Figura 13) a continuación, la generación de ejemplos con pocas instrucciones en LLM generativos es suficiente para superar a SOTA en PIQA y Trivia QA. El modelo no superó a SOTA en CoQA, pero tuvo una precisión bastante similar.
Limitaciones del prompting
Los numerosos ejemplos y estudios de casos en las secciones anteriores muestran claramente cómo few-shot puede ser la solución preferida en lugar del fine-tuning para varias tareas de ML basadas en el lenguaje. En la mayoría de los casos, las técnicas de few-shot lograron mejores resultados o resultados cercanos a los modelos de lenguaje fine-tuned. Sin embargo, es esencial tener en cuenta que en la mayoría de los casos de uso de nicho, el pre-entrenamiento específico del dominio superaría ampliamente al fine-tuning [Fuente] y, en consecuencia, a las técnicas de prompting. Esta limitación no se puede resolver a nivel de diseño de la instrucción y requeriría avances sustanciales en el desarrollo de LLM generalizados.
Otra limitación fundamental es la generación ficticia de LLM generativos. Los LLM generalistas han sido propensos a generar contenido ficticio, ya que a menudo se enfocan mucho en la escritura creativa. Esta es otra razón por la cual los LLM específicos del dominio son más precisos y tienen un mejor rendimiento en sus benchmarks específicos del campo.
Por último, el uso de LLM generalizados como Chat GPT y GPT-4 conlleva mayores riesgos de privacidad que los modelos fine-tuned o específicos del dominio, para los cuales podemos construir nuestra instancia del modelo. Esto es una preocupación, especialmente para casos de uso que dependen de datos de usuario propietarios o sensibles.
Conclusión
Las técnicas de promoción se han convertido en un puente entre los LLM y las tareas prácticas de ML basadas en el lenguaje. El enfoque sin etiquetas, que no requiere datos etiquetados previos, muestra el potencial de estos modelos para generalizar y adaptarse a nuevos problemas. Sin embargo, no logra alcanzar un rendimiento similar o mejor en comparación con el ajuste fino. Numerosos ejemplos y comparaciones de rendimiento de referencia muestran que la promoción con pocos ejemplos ofrece una alternativa convincente al ajuste fino en una variedad de tareas. Al presentar algunos ejemplos etiquetados dentro de las indicaciones, estas técnicas permiten que los modelos se adapten rápidamente a nuevas clases con datos etiquetados mínimos. Además, los datos de rendimiento enumerados en las secciones anteriores sugieren que mover las soluciones existentes para utilizar la promoción con LLM generativos es una inversión valiosa. Realizar experimentos con los enfoques mencionados en este artículo mejorará las posibilidades de alcanzar tus objetivos utilizando técnicas de promoción.
Puntos clave
- Las técnicas de promoción permiten un uso práctico: Las técnicas de promoción son un puente poderoso entre los LLM generativos y las tareas prácticas de aprendizaje automático basadas en el lenguaje. La promoción sin etiquetas permite que los modelos generalicen sin datos etiquetados, mientras que la promoción con pocos ejemplos utiliza varios ejemplos para adaptarse rápidamente. Estas técnicas simplifican la implementación, ofreciendo un camino para una utilización efectiva.
- La promoción con pocos ejemplos funciona mejor que la promoción sin etiquetas: La promoción con pocos ejemplos ofrece un mejor rendimiento al proporcionar al LLM orientación específica a través de ejemplos etiquetados. Permite que el modelo utilice su conocimiento preentrenado al tiempo que se beneficia de ejemplos mínimos específicos de la tarea, lo que resulta en respuestas más precisas y relevantes para la tarea dada.
- La promoción con pocos ejemplos compite con el ajuste fino: La promoción con pocos ejemplos es una alternativa prometedora al ajuste fino. La promoción con pocos ejemplos logra un rendimiento similar o mejor en tareas de clasificación, comprensión del lenguaje, traducción y respuesta a preguntas al proporcionar ejemplos etiquetados dentro de las indicaciones. Destaca especialmente en escenarios donde los datos etiquetados son escasos.
- Limitaciones y consideraciones: Aunque los LLM generativos y las técnicas de promoción tienen varios beneficios, el preentrenamiento específico del dominio sigue siendo el camino para tareas especializadas. Además, los riesgos de privacidad asociados con los LLM generalizados subrayan la necesidad de manejar los datos sensibles con cuidado.
Preguntas frecuentes
Referencias
- Tom B. Brown y otros, Language models are few-shot learners, En Proceedings of the 34th International Conference on Neural Information Processing Systems (NIPS’20), 2020.
- https://www.kaggle.com/datasets/crowdflower/twitter-airline-sentiment
- https://www.kaggle.com/code/sdfsghdhdgresa/sentiment-analysis-using-bert-distillation
- https://github.com/Deepanjank/OpenAI/blob/main/open_ai_sentiment_few_shot.py
- https://www.analyticsvidhya.com/blog/2023/08/domain-specific-llms/
Los medios mostrados en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.