Una buena descripción es todo lo que necesitas

La clave está en una buena descripción

Cómo usar el aprendizaje con pocas muestras para mejorar el rendimiento de la clasificación de texto

Foto de Patrick Tomasso en Unsplash.

He estado utilizando modelos de lenguaje grandes (LLMs por sus siglas en inglés) durante un tiempo, tanto para proyectos personales como parte de mi trabajo diario. Al igual que muchas personas, me emociona la potente capacidad de estos modelos. Sin embargo, es importante saber que aunque estos modelos son muy fuertes, siempre se pueden mejorar para diversas tareas.

Y NO, no voy a escribir sobre ajuste fino de LLMs, que puede ser costoso y generalmente requiere un dispositivo con una buena GPU. De hecho, te voy a mostrar un método muy simple para mejorar tu modelo utilizando el aprendizaje con pocas muestras.

El aprendizaje con pocas muestras es una técnica de aprendizaje automático donde los modelos se entrenan para resolver nuevas tareas utilizando solo unos pocos ejemplos, a menudo solo 1-5 ejemplos por clase. Hay varios puntos clave en el aprendizaje con pocas muestras:

  • Aprender a generalizar a partir de datos pequeños: los métodos de aprendizaje con pocas muestras tienen como objetivo aprender modelos que puedan generalizar bien a partir de un número reducido de ejemplos, a diferencia de los métodos tradicionales de aprendizaje profundo que requieren miles o millones de ejemplos.
  • Transferencia de aprendizaje: los métodos de aprendizaje con pocas muestras aprovechan el conocimiento adquirido al resolver tareas anteriores y transfieren ese conocimiento para ayudar a aprender nuevas tareas más rápido y con menos datos. Esta capacidad de transferencia de aprendizaje es clave.
  • Aprender métricas de similitud: algunas técnicas de aprendizaje con pocas muestras se enfocan en aprender una métrica de similitud entre ejemplos. Esto permite comparar nuevos ejemplos con ejemplos etiquetados existentes para realizar predicciones.

Pero, ¿cómo se puede usar el aprendizaje con pocas muestras en un problema de clasificación para mejorar el rendimiento del modelo? Veamos un ejemplo.

Datos y preparación

Comencé mi análisis obteniendo datos de HuggingFace. El conjunto de datos se llama informes-financieros-sec (Este conjunto de datos tiene la licencia Apache License 2.0 y permite su uso comercial) y, según los autores del conjunto de datos, contiene los informes anuales de empresas públicas de EE. UU. que presentan ante el sistema SEC EDGAR de 1993 a 2020. Cada informe anual (presentación 10-K) se divide en 20 secciones.

Dos atributos relevantes de estos datos son útiles para la tarea actual:

  • Oración: Fragmentos de los informes de presentación 10-K
  • Sección: Etiquetas que denotan la sección del informe de presentación 10-K a la que pertenece la oración

Me he centrado en tres secciones:

  • Negocio (Elemento 1): Describe el negocio de la empresa, incluidas las subsidiarias, los mercados, los eventos recientes, la competencia, las regulaciones y el trabajo. Se denota con 0 en los datos.
  • Factores de riesgo (Elemento 1A): Analiza los riesgos que podrían afectar a la empresa, como factores externos, posibles fallos y otras divulgaciones para advertir a los inversores. Se denota con 1.
  • Propiedades (Elemento 2): Detalla los activos físicos significativos, sin incluir activos intelectuales o intangibles. Se denota con 3.

Para cada etiqueta, tomé una muestra de 10 ejemplos sin reemplazo. Los datos tienen la siguiente estructura:

Predicción lista para usar

Una vez que los datos están listos, todo lo que tengo que hacer es crear una función clasificadora que tome la oración del marco de datos y prediga la etiqueta.

Role = '''Eres un experto en formularios SEC 10-K. Se te presentará un texto y deberás clasificar el texto en 'Elemento 1', 'Elemento 1A' o 'Elemento 2'. El texto pertenece solo a una de las categorías mencionadas, así que solo devuelve una categoría.'''def sec_classifier(text):         response = openai.ChatCompletion.create(        model='gpt-4',        messages=[            {                "role": "system",                "content": Role},            {                "role": "user",                "content": text}],        temperature=0,        max_tokens=256,        top_p=1,        frequency_penalty=0,        presence_penalty=0)    return response['choices'][0]['message']['content']

Estoy utilizando GPT-4 aquí, ya que es el modelo más capaz de OpenAI hasta ahora. También he establecido la temperatura en 0 solo para asegurarme de que el modelo no se desvíe. La parte realmente divertida es cómo defino el Rol, ahí es donde guío al modelo sobre lo que quiero que haga. El Rol le indica que se mantenga enfocado y entregue el tipo de resultado que estoy buscando. Definir un rol claro para el modelo le ayuda a generar respuestas relevantes y de alta calidad. El prompt en esta función es:

Eres experto en formularios SEC 10-K. Se te presentará un texto y debes clasificarlo como ‘Ítem 1’, ‘Ítem 1A’ o ‘Ítem 2’. El texto pertenece solo a una de las categorías mencionadas, así que solo devuelve una categoría.

Después de aplicar la función de clasificación a todas las filas de datos, generé un informe de clasificación para evaluar el rendimiento del modelo. El puntaje F1 promedio macro fue de 0.62, lo que indica habilidades predictivas razonablemente sólidas para este problema de clasificación múltiple. Dado que el número de ejemplos estaba equilibrado en las 3 clases, los promedios macro y ponderados convergieron al mismo valor. Este puntaje base refleja la precisión predeterminada del modelo preentrenado antes de cualquier ajuste o optimización adicional.

               precisión  recall  f1-score  soporte      Item 1       0.47      0.80      0.59        10     Item 1A       0.80      0.80      0.80        10      Item 2       1.00      0.30      0.46        10    precisión global                           0.63        30   promedio macro       0.76      0.63      0.62        30  promedio ponderado       0.76      0.63      0.62        30

La descripción es todo lo que necesitas (predicción con pocos ejemplos)

Como mencioné, el aprendizaje con pocos ejemplos se trata de generalizar el modelo con algunos buenos ejemplos. Con ese fin, he modificado mi clase describiendo qué son los Ítem 1, Ítem 1A e Ítem 2 (basado en Wikipedia):

Rol_pocosejemplos = '''Eres experto en formularios SEC 10-K. Se te presentará un texto y deberás clasificar el texto como 'Ítem 1', 'Ítem 1A' o 'Ítem 2'. El texto pertenece solo a una de las categorías mencionadas, así que solo devuelve una categoría. Al realizar la clasificación, ten en cuenta las siguientes definiciones: Ítem 1 (es decir, Negocio) describe el negocio de la empresa: quién y qué hace la empresa, qué subsidiarias posee y en qué mercados opera. También puede incluir eventos recientes, competencia, regulaciones y problemas laborales. (Algunas industrias están fuertemente reguladas, tienen requisitos laborales complejos que tienen efectos significativos en el negocio). Otros temas en esta sección pueden incluir costos operativos especiales, factores estacionales o asuntos de seguros. Ítem 1A (es decir, Factores de Riesgo) es la sección en la que la empresa presenta cualquier cosa que pueda salir mal, efectos externos probables, posibles futuros incumplimientos de obligaciones y otros riesgos revelados para advertir adecuadamente a los inversores e posibles inversores. Ítem 2 (es decir, Propiedades) es la sección que describe las propiedades significativas, activos físicos, de la empresa. Esto solo incluye tipos físicos de propiedad, no propiedad intelectual o intangible. Nota: Solo menciona el Ítem.'''def clasificador_sec_pocosejemplos(texto):         respuesta = openai.ChatCompletion.create(        model='gpt-4',        messages=[            {                "role": "system",                "content": Rol_pocosejemplos },            {                "role": "user",                "content": texto }],        temperature=0,        max_tokens=256,        top_p=1,        frequency_penalty=0,        presence_penalty=0)    return respuesta['choices'][0]['message']['content']

El prompt ahora se lee:

Eres experto en formularios SEC 10-K. Se te presentará un texto y deberás clasificarlo como ‘Ítem 1’, ‘Ítem 1A’ o ‘Ítem 2’. El texto pertenece solo a una de las categorías mencionadas, así que solo devuelve una categoría.Al realizar la clasificación, ten en cuenta las siguientes definiciones:

Ítem 1 (es decir, Negocio) describe el negocio de la empresa: quién y qué hace la empresa, qué subsidiarias posee y en qué mercados opera. También puede incluir eventos recientes, competencia, regulaciones y problemas laborales. (Algunas industrias están fuertemente reguladas, tienen requisitos laborales complejos que tienen efectos significativos en el negocio). Otros temas en esta sección pueden incluir costos operativos especiales, factores estacionales o asuntos de seguros.

Ítem 1A (es decir, Factores de Riesgo) es la sección en la que la empresa presenta cualquier cosa que pueda salir mal, efectos externos probables, posibles futuros incumplimientos de obligaciones y otros riesgos revelados para advertir adecuadamente a los inversores e posibles inversores.

Ítem 2 (es decir, Propiedades) es la sección que describe las propiedades significativas, activos físicos, de la empresa. Esto solo incluye tipos físicos de propiedad, no propiedad intelectual o intangible.

Si ejecutamos esto en los textos, obtendremos el siguiente rendimiento:

                precision    recall  f1-score   support      Item 1       0.70      0.70      0.70        10     Item 1A       0.78      0.70      0.74        10      Item 2       0.91      1.00      0.95        10    accuracy                           0.80        30   macro avg       0.80      0.80      0.80        30weighted avg       0.80      0.80      0.80        30

El promedio macro F1 ahora es 0.80, lo que representa un 29% de mejora en nuestra predicción, tan solo proporcionando una buena descripción de cada clase.

Finalmente, puedes ver el conjunto de datos completo:

De hecho, los ejemplos que proporcioné dan al modelo instancias concretas para aprender. Los ejemplos permiten que el modelo infiera patrones y características, al mirar múltiples ejemplos, el modelo puede comenzar a notar similitudes y diferencias que caracterizan el concepto general que se está aprendiendo. Esto ayuda al modelo a formar una representación más sólida. Además, proporcionar ejemplos actúa como una forma débil de supervisión, dirigiendo al modelo hacia el comportamiento deseado en lugar de grandes conjuntos de datos etiquetados.

En la función de few-shot, los ejemplos concretos ayudan a orientar al modelo sobre los tipos de información y patrones a los que debe prestar atención. En resumen, los ejemplos concretos son importantes para el aprendizaje de few-shot, ya que brindan puntos de referencia para que el modelo construya una representación inicial de un concepto novedoso, que luego se puede refinar con los pocos ejemplos proporcionados. El aprendizaje inductivo de instancias específicas ayuda a los modelos a desarrollar representaciones matizadas de conceptos abstractos.

Si ha disfrutado leyendo esto y desea mantenerse en contacto, puede encontrarme en mi LinkedIn o a través de mi página web: iliateimouri.com

Nota: Todas las imágenes, a menos que se indique lo contrario, son del autor.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Los repetidores cuánticos utilizan defectos en el diamante para interconectar sistemas cuánticos

Ahora los científicos están aprovechando los defectos en los diamantes para construir repetidores cuánticos.

Inteligencia Artificial

Cómo este investigador ganador de la Turing Award se convirtió en un legendario asesor académico

El científico teórico de la computación, Manuel Blum, ha guiado a generaciones de estudiantes de posgrado hacia carre...

Inteligencia Artificial

Hoja de ruta de Aprendizaje Automático Recomendaciones de la Comunidad 2023

En el último artículo, Parte 1 de este mapa de ruta, discutimos brevemente las herramientas iniciales y las direccion...