SetFit Aprendizaje Eficiente de Pocos Ejemplos Sin Indicaciones

'SetFit Aprendizaje Eficiente Pocos Ejemplos Sin Indicaciones'

SetFit es significativamente más eficiente en muestras y más robusto al ruido que la afinación estándar.

El aprendizaje con pocas muestras utilizando modelos de lenguaje preentrenados ha surgido como una solución prometedora para la pesadilla de todo científico de datos: lidiar con datos que tienen pocas o ninguna etiqueta 😱.

Junto con nuestros socios de investigación en Intel Labs y el UKP Lab, Hugging Face se complace en presentar SetFit: un marco eficiente para el ajuste fino de pocas muestras de Sentence Transformers. SetFit logra una alta precisión con pocos datos etiquetados: por ejemplo, con solo 8 ejemplos etiquetados por clase en el conjunto de datos de sentimientos de Customer Reviews (CR), SetFit es competitivo con la afinación fina de RoBERTa Large en el conjunto de entrenamiento completo de 3k ejemplos 🤯!

En comparación con otros métodos de aprendizaje con pocas muestras, SetFit tiene varias características únicas:

🗣 Sin elementos de guía o verbalizadores: Las técnicas actuales de ajuste fino con pocas muestras requieren elementos de guía o verbalizadores hechos a mano para convertir ejemplos en un formato adecuado para el modelo de lenguaje subyacente. SetFit prescinde por completo de los elementos de guía generando incorporaciones ricas directamente a partir de un pequeño número de ejemplos de texto etiquetados.

🏎 Rápido de entrenar: SetFit no requiere modelos a gran escala como T0 o GPT-3 para lograr una alta precisión. Como resultado, por lo general, es de un orden de magnitud (o más) más rápido de entrenar y ejecutar inferencia.

🌎 Soporte multilingüe: SetFit se puede usar con cualquier Sentence Transformer en el Hub, lo que significa que se puede clasificar texto en varios idiomas simplemente ajustando finamente un punto de control multilingüe.

Para obtener más detalles, consulte nuestro artículo, datos y código. En esta publicación del blog, explicaremos cómo funciona SetFit y cómo entrenar sus propios modelos. ¡Vamos a sumergirnos!

¿Cómo funciona?

SetFit está diseñado teniendo en cuenta la eficiencia y la simplicidad. SetFit primero ajusta finamente un modelo de Sentence Transformer con un pequeño número de ejemplos etiquetados (generalmente 8 o 16 por clase). A esto le sigue el entrenamiento de una cabeza clasificadora en las incorporaciones generadas a partir del Sentence Transformer ajustado finamente.

Proceso de entrenamiento en dos etapas de SetFit

SetFit aprovecha la capacidad de los Sentence Transformers para generar incorporaciones densas basadas en oraciones emparejadas. En la fase inicial de ajuste fino, se utiliza el entrenamiento contrastivo, donde se crean pares positivos y negativos mediante la selección de ejemplos dentro y fuera de la clase. El modelo de Sentence Transformer luego se entrena con estos pares (o tripletas) y genera vectores densos por ejemplo. En el segundo paso, la cabeza clasificadora se entrena en las incorporaciones codificadas con sus respectivas etiquetas de clase. En el momento de la inferencia, el ejemplo no visto pasa por el Sentence Transformer ajustado finamente, generando una incorporación que, cuando se alimenta a la cabeza clasificadora, produce una predicción de etiqueta de clase.

Y simplemente cambiando el modelo base de Sentence Transformer a uno multilingüe, SetFit puede funcionar sin problemas en contextos multilingües. En nuestros experimentos, el rendimiento de SetFit muestra resultados prometedores en la clasificación en alemán, japonés, mandarín, francés y español, tanto en configuraciones en el mismo idioma como en configuraciones lingüísticas cruzadas.

Comparación de SetFit

Aunque basado en modelos mucho más pequeños que los métodos existentes de pocas muestras, SetFit tiene un rendimiento igual o mejor que los regímenes de pocas muestras de vanguardia en una variedad de pruebas de referencia. En RAFT, una prueba de clasificación con pocas muestras, SetFit Roberta (utilizando el modelo all-roberta-large-v1) con 355 millones de parámetros supera a PET y GPT-3. Se sitúa justo por debajo del rendimiento humano promedio y del modelo T-few de 11 mil millones de parámetros, que es 30 veces más grande que SetFit Roberta. SetFit también supera el resultado de referencia humano en 7 de las 11 tareas de RAFT.

Métodos destacados en la tabla de clasificación de RAFT (a partir de septiembre de 2022)

En otros conjuntos de datos, SetFit muestra robustez en una variedad de tareas. Como se muestra en la figura siguiente, con solo 8 ejemplos por clase, generalmente supera a PERFECT, ADAPET y transformers afinados finamente. SetFit también logra resultados comparables a T-Few 3B, a pesar de ser libre de promesas y 27 veces más pequeño.

Comparación del rendimiento de SetFit con otros métodos en 3 conjuntos de datos de clasificación.

Entrenamiento e inferencia rápidos

Comparando el costo de entrenamiento y el rendimiento promedio para T-Few 3B y SetFit (MPNet), con 8 ejemplos etiquetados por clase.

Dado que SetFit logra una alta precisión con modelos relativamente pequeños, se entrena de manera extremadamente rápida y a un costo mucho menor. Por ejemplo, entrenar SetFit en una NVIDIA V100 con 8 ejemplos etiquetados solo lleva 30 segundos, a un costo de $0.025. En comparación, entrenar T-Few 3B requiere una NVIDIA A100 y lleva 11 minutos, a un costo de aproximadamente $0.7 para el mismo experimento, es decir, 28 veces más. De hecho, SetFit puede ejecutarse en una sola GPU como las que se encuentran en Google Colab e incluso se puede entrenar SetFit en la CPU en solo unos minutos. Como se muestra en la figura de arriba, la aceleración de SetFit viene acompañada de un rendimiento de modelo comparable. También se logran ganancias similares para la inferencia y la destilación del modelo SetFit puede generar aumentos de velocidad de 123x 🤯.

Entrenando tu propio modelo

Para hacer que SetFit sea accesible para la comunidad, hemos creado una pequeña biblioteca setfit que te permite entrenar tus propios modelos con solo unas pocas líneas de código. Lo primero que debes hacer es instalarlo ejecutando el siguiente comando:

pip install setfit

A continuación, importamos SetFitModel y SetFitTrainer, dos clases principales que agilizan el proceso de entrenamiento de SetFit:

from datasets import load_dataset
from sentence_transformers.losses import CosineSimilarityLoss

from setfit import SetFitModel, SetFitTrainer

Ahora, descarguemos un conjunto de datos de clasificación de texto desde el Hugging Face Hub. Utilizaremos el conjunto de datos SentEval-CR, que es un conjunto de datos de reseñas de clientes:

dataset = load_dataset("SetFit/SentEval-CR")

Para simular un escenario del mundo real con solo unos pocos ejemplos etiquetados, tomaremos 8 ejemplos por clase del conjunto de entrenamiento:

# Seleccionar N ejemplos por clase (8 en este caso)
train_ds = dataset["train"].shuffle(seed=42).select(range(8 * 2))
test_ds = dataset["test"]

Ahora que tenemos un conjunto de datos, el siguiente paso es cargar un modelo pre-entrenado de Sentence Transformer desde el Hub e instanciar un SetFitTrainer. Aquí utilizamos el modelo paraphrase-mpnet-base-v2, que hemos encontrado que ofrece excelentes resultados en muchos conjuntos de datos:

# Cargar el modelo SetFit desde el Hub
model = SetFitModel.from_pretrained("sentence-transformers/paraphrase-mpnet-base-v2")

# Crear el entrenador
trainer = SetFitTrainer(
    model=model,
    train_dataset=train_ds,
    eval_dataset=test_ds,
    loss_class=CosineSimilarityLoss,
    batch_size=16,
    num_iterations=20, # Número de pares de texto para generar para el aprendizaje contrastivo
    num_epochs=1 # Número de épocas a utilizar para el aprendizaje contrastivo
)

El último paso es entrenar y evaluar el modelo:

# ¡Entrenar y evaluar!
trainer.train()
metrics = trainer.evaluate()

¡Y eso es todo! ¡Ahora has entrenado tu primer modelo SetFit! Recuerda subir tu modelo entrenado al Hub 🙂

# Subir el modelo al Hub
# Asegúrate de haber iniciado sesión con huggingface-cli login primero
trainer.push_to_hub("mi-asombroso-modelo-setfit")

Aunque este ejemplo muestra cómo se puede hacer con un tipo específico de modelo base, cualquier modelo de Sentence Transformer podría cambiarse para obtener diferentes rendimientos y tareas. Por ejemplo, el uso de un modelo base de Sentence Transformer multilingüe puede ampliar la clasificación con pocos ejemplos a entornos multilingües.

Próximos pasos

Hemos demostrado que SetFit es un método efectivo para tareas de clasificación con pocos ejemplos. En los próximos meses, exploraremos qué tan bien se generaliza el método a tareas como la inferencia de lenguaje natural y la clasificación de tokens. Mientras tanto, nos emociona ver cómo los profesionales de la industria aplican SetFit a sus casos de uso. Si tienes alguna pregunta o comentario, abre un problema en nuestro repositorio de GitHub 🤗.

¡Feliz aprendizaje con pocos ejemplos!

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

Este artículo de IA propone un método novedoso basado en gradientes llamado Cones para analizar e identificar las neuronas conceptuales en modelos de difusión

La compleja estructura del cerebro le permite realizar tareas cognitivas y creativas asombrosas. Según la investigaci...

Inteligencia Artificial

La función de detección de suplantación de identidad protege a las marcas y personalidades de las cuentas falsas en las redes sociales

Una empresa canadiense ha incorporado una función de protección contra la suplantación de identidad en su plataforma ...

Noticias de Inteligencia Artificial

Los coches de Mercedes-Benz se vuelven aún más inteligentes con ChatGPT.

Mercedes-Benz, el renombrado fabricante de automóviles de lujo, está llevando los límites de la integración de inteli...

Inteligencia Artificial

Protegiendo el futuro de nuestros practicantes cultivando la próxima generación en medio del avance corporativo de la IA

Durante mi enseñanza en el Master en Gestión de la Asia Pacific ESSEC en el vibrante campus de Singapur, nos adentram...

Inteligencia Artificial

Congelación de capas de un modelo de aprendizaje profundo - la forma correcta

A menudo es útil congelar algunos de los parámetros, por ejemplo, cuando estás ajustando tu modelo y quieres congelar...