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

El catálogo de modelos de inteligencia artificial de Azure de Microsoft se expande con modelos innovadores de inteligencia artificial

Microsoft ha lanzado una amplia expansión de su Catálogo de Modelos de IA de Azure, incorporando una variedad de mode...

Inteligencia Artificial

Meer Pyrus Base Una nueva plataforma de código abierto basada en Python para la simulación bidimensional (2D) de RoboCup Soccer

La robótica, la rama dedicada por completo al campo de la Ingeniería Electrónica e Informática, está ahora conectada ...

Inteligencia Artificial

Dentro de Code Llama La entrada de Meta AI en el espacio de Code LLM

La codificación se ha convertido rápidamente en uno de los escenarios de acción más activos para los grandes modelos ...

Inteligencia Artificial

Los chatbots pueden 'alucinar' más a menudo de lo que muchos se dan cuenta

Cuando se resumen los hechos, la tecnología ChatGPT inventa información aproximadamente el 3% del tiempo, según una i...

Inteligencia Artificial

Línea Open-Sources ‘japanese-large-lm’ Un modelo de lenguaje japonés con 3.6 mil millones de parámetros

Desde noviembre de 2020, LINE se ha embarcado en un viaje transformador de investigación y desarrollo para crear y ap...