- ¿Quiere lograr resultados de última generación en su próximo proyecto de PNL?
- ¿Sus datos son insuficientes para entrenar el modelo de aprendizaje automático?
- ¿Quiere mejorar la precisión de su modelo de aprendizaje automático con algunos datos adicionales?
En caso afirmativo, todo lo que necesita es el aumento de datos . Ya sea que esté creando clasificación de texto, resumen, respuesta a preguntas o cualquier otro modelo de aprendizaje automático. El aumento de datos ayudará a mejorar el rendimiento de su modelo.
Hay cinco técnicas de aumento de datos:
- incrustaciones de palabras
- BERT
- Traducción inversa
- Transformador de transferencia de texto a texto
- Enfoque de conjunto.
Transformador de transferencia de texto a texto:
El aumento de datos mediante el Transformador de transferencia de texto a texto (T5) es un modelo de transformador grande entrenado en el conjunto de datos Colossal Clean Crawled Corpus (C4) . Google abrió un modelo T5 preentrenado que es capaz de realizar múltiples tareas como traducción, resumen, respuesta a preguntas y clasificación.
T5 reformula cada tarea de PNL en formato de texto a texto.
- Ejemplo 1 : el modelo T5 se puede entrenar para la traducción del inglés al alemán con texto de traducción de entrada de inglés a alemán, texto en inglés y texto en alemán como salida.
- Ejemplo 2: para entrenar el modelo para la clasificación de opiniones, la entrada puede ser la clasificación de opiniones, el texto de entrada y la salida puede ser la opinión.
El mismo modelo se puede entrenar para múltiples tareas especificando diferentes tareas. String de prefijo específico en los datos de entrenamiento de entrada. T5 logró resultados de vanguardia en una variedad de tareas de PNL.
¿Cómo utilizar este modelo para el aumento de datos?
Esto se puede hacer de múltiples maneras.
En Back Translation, usamos modelos pre-entrenados listos para usar. Si queremos usar T5 listo para usar, podemos hacer uso de sus capacidades de resumen de texto para el aumento de datos.
- T5 puede recibir entradas en el formato, resumir, ingresar texto y generar un resumen de la entrada.
- T5 es un algoritmo de resumen abstracto.
- T5 puede reformular oraciones o usar palabras nuevas para generar el resumen.
- La técnica de aumento de datos T5 es útil para tareas de NLP que involucran documentos de texto largos.
Para un texto corto, puede que no dé muy buenos resultados.
Otro enfoque para usar T5 para el aumento de datos es hacer uso de la técnica de transferencia de aprendizaje y usar el conocimiento almacenado dentro de T5 para generar datos sintéticos. Esto se puede hacer de múltiples maneras.
1) Una forma es ajustar T5 en una tarea de predicción de palabras enmascaradas, la misma en la que se entrena BERT.
Podemos usar el mismo conjunto de datos C4 en el que T5 está preentrenado para ajustarlo aún más para la predicción de palabras enmascaradas . Entonces, la entrada al modelo comenzará con algún prefijo como máscara de predicción seguido de una oración de entrada que tiene una palabra enmascarada y la salida será la oración original sin máscara.
También podemos enmascarar varias palabras en la misma oración y entrenar a T5 para predecir la extensión de las palabras . Si enmascaramos una sola palabra, el modelo no podrá generar nuevos datos que tengan variaciones en la estructura de la oración. Pero si enmascaramos varias palabras, el modelo también puede aprender a generar datos con ligeras variaciones en la estructura de las oraciones. De esta forma, nuestro enfoque de aumento de datos será muy similar al enfoque basado en BERT.
2) Otra forma de usar T5 para el aumento de datos es ajustarlo en la tarea de generación parafraseada .
Parafrasear significa generar una oración de salida que tiene el mismo significado que la de entrada, pero una estructura de oración y una palabra clave diferentes. Esto es exactamente lo que necesitamos para el aumento de datos.
Vamos a utilizar el conjunto de datos de PAWS para encontrar el ajuste T5 para la generación de paráfrasis. PAWS significa parafrasear a los adversarios de la codificación de palabras. Este conjunto de datos contiene miles de paráfrasis y está disponible en seis idiomas además del inglés.
Entonces, nuestro enfoque de aumento de datos usando T5 será el siguiente:
Paso 1: Implica un preprocesamiento de datos que convertirá el conjunto de datos de PAWS al formato requerido para entrenar T5.
Paso 2: El próximo paso será afinar, T5. Para afinar, nuestra entrada al modelo estará en el formato, generará texto de entrada parafraseado y la salida será una paráfrasis del texto de entrada.
Una vez que tenemos un modelo ajustado, podemos usarlo para generar paráfrasis de cualquier texto de entrada. Podemos proporcionar una entrada con el prefijo generar paráfrasis y el modelo generará su paráfrasis.
El modelo se puede configurar para generar múltiples paráfrasis. De esta manera, podemos crear muy fácilmente nuestro propio modelo de generación de paráfrasis para el aumento de datos.
El modelo T5 preentrenado está disponible en cinco tamaños diferentes.
- T5 pequeño (60 millones de parámetros)
- Base T5 (220 parámetros)
- T5 grande (770 parámetros)
- T5 3 B (3 B Parámetros)
- T5 11 B (11 B Parámetros)
El modelo más grande da mejores resultados, pero también requiere más poder de cómputo y lleva mucho tiempo entrenarlo. Pero es un proceso de una sola vez. Una vez que tenga un modelo de generación de paráfrasis ajustado y de buena calidad entrenado en un conjunto de datos apropiado, puede usarse para el aumento de datos en varias tareas de NLP.
Implementación de Data Augmentation usando T5
Vamos a implementar el aumento de datos usando un transformador de transferencia de texto a texto usando la biblioteca de transformadores simples. Esta biblioteca se basa en la biblioteca de transformadores Hugging face. Facilita el ajuste fino de los modelos basados en transformadores.
- Paso 1: vamos a cargar el conjunto de datos de PAWS (parafraseando a los adversarios de la codificación de palabras) que necesitamos para afinar.
- Paso 2: Necesitamos preparar el conjunto de datos para el entrenamiento para que podamos comenzar a ajustar el modelo.
- Paso 3: Crearemos y guardaremos el modelo ajustado en Google Drive.
- Paso 4: finalmente, cargaremos el modelo guardado y generaremos paráfrasis que se pueden usar para el aumento de datos
1) Instalar dependencias
Python3
!pip install simpletransformers import pandas as pd from simpletransformers.t5 import T5Model from pprint import pprint import logging
2) Preparar el conjunto de datos para el entrenamiento
Puede descargar el conjunto de datos desde este enlace Conjunto de datos etiquetados de la wiki de PAWS. Tiene tres archivos train , dev y test.tsv . Solo vamos a usar archivos de entrenamiento y desarrollo . Este conjunto de datos tiene tres columnas, oración uno, oración dos y etiqueta. La etiqueta es una de dos oraciones que son paráfrasis y cero en caso contrario.
Python
df = pd.read_csv('train.tsv',sep='\t') df.head(5)
Cuando se pueden mantener tasas de flujo comparables , los resultados son altos. La oración correspondiente2 muestra que los resultados son altos cuando se pueden mantener caudales comparables. Estas dos oraciones son paráfrasis, por lo que la etiqueta es una.
Vamos a afinar T5 para la generación de paráfrasis. Entonces solo necesitamos parafrasear de este conjunto de datos. Esto significa que solo las muestras que tienen una etiqueta son útiles para nuestra tarea.
Python
df.describe()
El tamaño de este conjunto de datos es 49401.
Mantengamos solo los pares que tienen la etiqueta uno.
Python
paraphrase_train = df[df['label']==1] paraphrase_train.head(5) paraphrase_train.describe()
Ahora el tamaño se reduce a casi la mitad. T5 se puede entrenar para múltiples tareas. Entonces, al dar entrada al modelo, necesitamos agregar algún prefijo específico de la tarea. Para eso, estamos agregando un nuevo prefijo de columna en nuestro marco de datos con la paráfrasis generada por el valor.
Necesitamos cambiar el nombre de la oración uno y la oración de dos columnas también. Tenga en cuenta que el cambio de nombre debe ser «texto_de_entrada» y «texto_de_destino»; de lo contrario, mostrará un error de tiempo de ejecución.
Python
paraphrase_train["prefix"] = "Generate Paraphrase for this line" paraphrase_train= paraphrase_train.rename( columns={"sentence1": "input_text", "sentence2": "target_text"})
Los mismos pasos, debemos aplicar a dev.tsv.
Python
df = pd.read_csv('dev.tsv',sep='\t') paraphrase_dev = df[df['label']==1] paraphrase_dev["prefix"] = "Generate Paraphrase for this line" paraphrase_dev = paraphrase_dev.rename( columns={"sentence1": "input_text", "sentence2": "target_text"})
3) Afinar T5 para la generación de paráfrasis
Primero, necesitamos decidir algunos parámetros de configuración. Puede consultar la documentación de Simple Transformer para comprender todos estos parámetros.
El último parámetro es determinar cuántas paráfrasis generar para cada entrada. Las paráfrasis se generan utilizando una combinación de muestreo top-k y muestreo de núcleo top-p .
Para crear un objeto de la clase de modelo T5, necesitamos pasar los parámetros de configuración y el tipo de modelo T5. T5 está disponible en varios tamaños, vamos a utilizar la versión pequeña de T5.
Python
model_args = { "reprocess_input_data": True, "overwrite_output_dir": True, "max_seq_length": 128, "train_batch_size": 16, "num_train_epochs": 10, "num_beams": None, "do_sample": True, "max_length": 20, "top_k": 50, "top_p": 0.95, "use_multiprocessing": False, "save_steps": -1, "save_eval_checkpoints": True, "evaluate_during_training": True, "evaluate_during_training_verbose": True, "num_return_sequences": 5 }
Python
model = T5Model("t5","t5-small", args=model_args) model.train_model(paraphrase_train, eval_data=paraphrase_dev)
Guardando el mejor modelo en Google Drive:
Python
//import drive from google.colab import drive drive.mount('/content/gdrive') //copy path of best_model !cp -r /content/outputs/best_model/ /content/gdrive/'My Drive'/T5/ //load model pre_trained_model = T5Model("/content/gdrive/My Drive/T5/best_model", model_args)
4) Genere paráfrasis escribiendo el prefijo como «Generar paráfrasis para esta línea»
En algunos casos, puede que no dé buenos resultados, pero hay muchas posibilidades de mejorar el modelo en lugar de usar la versión pequeña de T5. Si usamos una versión más grande y la ajustamos en un conjunto de datos más grande, podemos obtener resultados mucho mejores.
Además, puede ir al repositorio de modelos de caras abrazadas y buscar T5 allí. Puede encontrar algún modelo T5 ajustado en la generación de paráfrasis. También puede probar estos modelos o ajustarlos aún más en el conjunto de datos específico de su dominio.
Esta es la ventaja de esta técnica de aumento de datos.
Publicación traducida automáticamente
Artículo escrito por immortalishika2001 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA