Por qué debemos entrenar un modelo de Machine Learning preentrenado


[You can read this post in english here]

El procesamiento de lenguaje natural, o NLP, según sus siglas en inglés, llegó hace tiempo para quedarse. Gracias a los modelos predictivos de aprendizaje automático, o ML según sus siglas en inglés, sobre los que se basa el NLP podemos automatizar tareas como clasificar incidencias, traducir textos, detectar el sentimiento en una llamada telefónica, responder preguntas o incluso escribir código de programación.

Una de las técnicas más prometedoras es conocida como red neuronal. Una red neuronal está formada por un sistema de neuronas artificiales que, a partir de una entrada, devuelve una salida. Son, dicho de una manera muy simplificada, modelos estadísticos. Es decir, a partir de una entrada determinada, el modelo va a seleccionar la salida más probable, que será la predicción ofrecida como respuesta.

Un modelo de NLP necesita una cantidad ingente de datos para poder llegar a ofrecer predicciones aceptables. El modelo GPT-3 evalúa alrededor de 175 mil millones de parámetros y un dataset inicial de 45 TB de texto comprimido. Otras arquitecturas, como BERT, nos ofrecen modelos preentrenados genéricos, que podemos afinar para que se especialicen en una tarea en particular.

Los modelos preentrenados suponen un grandísimo punto de partida para los proyectos basados en deep learning e inteligencia artificial. Nos ofrecen modelos que comprenden los fundamentos básicos de la lengua. Sin embargo, estos modelos están preparados para realizar tareas generalistas y no solucionar tareas específicas de cada negocio.

Aquí es donde entra el entrenamiento del modelo. Esta palabra, entrenamiento, no está elegida al azar. Un modelo se entrena, no con pesas, haciendo artes marciales o corriendo cuantos más kilómetros mejor, sino mediante ejemplos. Como no son atletas de competición sino modelos estadísticos, los entrenamientos a los que se pueden ver sometidos son de dos tipos, supervisados o no supervisados, según la tarea para la que se esté preparando el modelo. En otras palabras, un modelo no va a dar lo mejor de sí si no se entrena previamente para el escenario en el que se va a desplegar.

Usar un modelo de ML no es una panacea capaz de solucionar problemas automáticamente. Es posible que un modelo de ML en producción no pueda llegar a solucionar las necesidades de una compañía. Una de las posibles razones es que utilizan modelos preentrenados pero no realizan un entrenamiento específico para su negocio. Si no entrenamos un modelo no estamos aprovechando los modelos, podríamos utilizar soluciones más sencillas, como una selección arbitraria de una respuesta, y el resultado sería el mismo.

Este artículo trataremos de ver cómo de importante es la afinación de un modelo preentrenado para una tarea. Nuestra tarea va a ser la clasificación de textos, y para eso utilizaremos un modelo preentrenado, y cuatro versiones de este mismo modelo, entrenado cada vez con pequeños datasets de diferente tamaño, desde 100 hasta poco más de 2000 ejemplos. Compararemos estas cinco versiones del modelo con la exactitud de una elección arbitraria de la etiqueta y confirmaremos, o no, si merece la pena entrenar un modelo para este caso de uso.


Explicando nuestro caso de uso

Como comentábamos previamente, queremos demostrar cómo de importante es entrenar un modelo y por ello vamos a explicar qué diferencias de rendimiento tiene un modelo preentrenado con respecto a otro entrenado con más o menos cantidad de ejemplos.

Para ello, vamos a entrenar un modelo que nos permita, para un titular de noticia, nos diga a qué categoría IPTC pertenece. IPTC son las siglas​​ del Consejo Internacional de Telecomunicaciones de Prensa (International Press Telecommunications Council), y la lista de categorías es la siguiente: arts, culture, entertainment and media; conflict, war and peace; crime, law and justice; disaster, accident and emergency incident; economy, business and finance; education; environment; health; human interest; labour; lifestyle and leisure; politics; religion and belief; science and technology; society; sport; y weather.

En nuestro experimento usaremos
· un modelo de tipo BERT preentrenado en italiano, dbmdz/bert-base-italian-xxl-uncased,
· un dataset de entrenamiento en italiano de frases etiquetadas siguiendo la taxonomía IPTC, formado por 2199 frases, y
· un dataset de evaluación, también en italiano con titulares del periódico italiano La Repubblica etiquetadas siguiendo la taxonomía IPTC, compuesto por 6 frases de cada una de las 17 categorías,

Haremos cinco iteraciones de la prueba:

· La primera iteración consiste en la evaluación del modelo preentrenado con el dataset de prueba,
· La segunda iteración es la evaluación de un modelo entrenado con 120 frases, escogidas al azar del dataset de entrenamiento,
· La tercera iteración es lo mismo que lo anterior pero con 600 frases escogidas al azar,
· En la cuarta iteración haremos la evaluación con un modelo entrenado con 1000 frases,
· En la quinta iteración usaremos el dataset entero para entrenar el modelo.

Cada modelo ha sido entrenado con el número de frases indicadas, durante 6 epochs, o repeticiones del entrenamiento.

Para ver la eficiencia nos fijaremos en la accuracy de cada uno de los modelos y en la pérdida de la evaluación para saber cuánto se ajusta el modelo al dataset de validación. Para ello usaremos la clase Trainer de Hugging Face.

Nuestra referencia de exactitud inicial es una selección arbitraria de la etiqueta. Debemos tener en cuenta que si decidiéramos ignorar los modelos y devolver siempre un resultado al azar, tendríamos una exactitud de 100/17 = 5,88%. Cualquier valor por debajo de este número nos indicaría que el modelo rinde peor que si prescindiéramos de él y eligiéramos aleatoriamente la etiqueta. Si la exactitud es igual a 5,88% estaríamos usando todo un modelo de ML para obtener un resultado equivalente a una simple operación.


Exploramos del dataset de entrenamiento

El dataset de IPTC que hemos usado como base está formado por 2199 titulares, que se distribuyen entre 17 etiquetas, con una media de 133 titulares por etiqueta y una desviación típica de 59,45.

Si nos fijamos en la suma y porcentajes de distribución por categoría, vemos que las categorías con más ejemplos son sport, con 236; politics, con 227; y economy/business and finance, con 207. Las categorías con menos ejemplos son weather, con 68 ejemplos; science and technology, con 66 ejemplos, y human interest, también con 66 ejemplos. Los porcentajes han sido redondeados a dos dígitos.


Como podemos ver en el Gráfico 1, el dataset tiene una distribución irregular en los ejemplos asignados a cada una de las etiquetas. La etiqueta human interest es la que tiene menos ejemplos, con 66, mientras que sport es la categoría con más ejemplos, con 236.


Los modelos, evaluados

A partir de los modelos mencionados previamente, es decir, un modelo preentrenado base y cuatro modelos, cada uno entrenado con un número diferente de frases del dataset de entrenamiento del IPTC, vamos a evaluar su exactitud con respecto a un dataset de prueba de 6 frases x 17 etiquetas = 102 frases.

La exactitud la mostraremos como porcentaje, mientras que la pérdida de evaluación es un número que, cuanto mayor sea, peor rendimiento se ha obtenido. Incluiremos también la matriz de confusión de cada uno de los entrenamientos.

Nuestro valor de referencia inicial para saber si el entrenamiento tiene sentido es 5,88%, que calculamos previamente. Corresponde con 100 / 17, es decir, qué porcentaje de acierto obtendríamos si asignáramos una etiqueta arbitrariamente a la frase de ejemplo.


Resultados del modelo preentrenado, sin afinar

Empezamos evaluando el modelo preentrenado, sin aplicarle ninguna afinación que le permita prepararse para la tarea de clasificación. El modelo, dbmdz/bert-base-italian-xxl-uncased, ha obtenido una exactitud del 5,88%, exactamente igual al valor obtenido si asignamos arbitrariamente una frase a una etiqueta.

Si vemos la matriz de confusión, el modelo ha decidido que la inmensa mayoría de frases han ido a la categoría labour. Este resultado nos encaja con que la exactitud, 5,88%, coincida con el valor base de 5,88% que obtenemos si asignamos una categoría al azar.


Evaluación del modelo afinado con 120 frases

El modelo dbmdz/bert-base-italian-xxl-uncased mejora si aplicamos un entrenamiento de 120 frases elegidas al azar del dataset. La exactitud asciende hasta el 13,73%, con una pérdida de la evaluación de 2,785.

Los resultados de la matriz de confusión nos muestran cómo los resultados han ido mayoritariamente a las categorías sport, conflict/war and peace, economy/business and finance y disaster/accident and emergency incident. Sin embargo, de estas categorías, sport ha acertado 4 de 6, economy/business and finance 4 de 6, disaster/accident and emergency incident ha acertado 3 de 6 y, por último, conflict/war and peace ha acertado 2 de 6.


Evaluación del modelo afinado con 600 frases

Este modelo ha obtenido una exactitud de 54,90%, con una pérdida de evaluación de 1,672. La mejora es importante con respecto al anterior modelo. Hemos conseguido acertar más de la mitad de los ejemplos de evaluación, con una pérdida bastante menor al anterior modelo revisado, el de 120 frases.

La matriz de confusión nos muestra cómo ha mejorado el modelo. Podemos ver cómo las categorías arts/culture/entertainment and media y health han acertado todos los ejemplos, y sport, society, labour y environment han acertado 5 de 6.




Evaluación del modelo afinado con 1000 frases

El siguiente modelo evaluado ha sido entrenado con 1000 frases, y vemos que la exactitud es del 50,99%, con una pérdida de evaluación de 1,623. La exactitud es ligeramente inferior al modelo entrenado con 600 utterances, y el valor de pérdida muy similar.

Viendo la matriz de confusión encontramos que hay más dos categorías que han hecho pleno, arts/culture/entertainment and media y health, y cuatro categorías que han logrado 5 de 6: economy/business and finance, environment, politics y society. Curiosamente, vemos que human interest se ha etiquetado 5 veces como society y una vez como environment



Evaluación del modelo afinado con el dataset completo

La exactitud del modelo entrenado con las 2199 frases ha sido del 70,59%, muy superior al valor obtenido en todos los modelos anteriores, con una pérdida de 1,279. Es decir, casi ha acertado tres de cada cuatro ejemplos suministrados.

Respecto a los resultados por categoría, vemos en la matriz de confusión que se han acertado todos los ejemplos de arts/culture/entertainment and media, politics y sport. Se han acertado 5 de 6 en los casos de disaster/accident and emergency incident, economy/business and finance, education, health, labour y weather. Curiosamente, la categoría human interest no tiene ningún acierto: 4 fueron a arts/culture/entertainment and media, 1 fue a crime/law and justice y otra a education.


Análisis

Para analizar los resultados, vamos a comparar primero las mejoras de las exactitudes y después cómo los modelos han etiquetado los ejemplos del dataset de prueba de La Repubblica.


Tabla de resumen de exactitudes


En la tabla 2 podemos ver cómo la exactitud del modelo sin entrenar es muy baja, apenas acierta un 5,88%, exactamente el valor esperado si la asignación fuera arbitraria. Este resultado mejora hasta el 13,73% con un entrenamiento mínimo de 120 frases, escogidas al azar de todo el dataset, que tampoco nos permite saber si se han elegido etiquetas con una proporción relativa a la distribución de etiquetas. Si hacemos un entrenamiento con 600 frases la mejora es considerable porque el modelo acierta un 54,90% de las veces. Con 1000 frases el resultado es ligeramente inferior, con un 50,99% de aciertos, con una pérdida de evaluación equivalente. En cuanto usamos el dataset completo, de 2199 frases, vemos cómo la exactitud sube hasta el 66,3% y la pérdida de evaluación baja hasta 1,357.


Tabla resumen de aciertos

Las matrices de confusión nos muestran resultados muy diferentes según las categorías analizadas. En la tabla 3 hemos mostrado los resultados de las matrices y hemos escrito en negrita los resultados igual a 5 o 6, que consideraremos satisfactorio.

Primero, vemos claramente que, cuanto más afinación, mejores resultados se obtienen. El modelo base, sin afinar, tiene 1 resultado satisfactorio, pero ningún otro acierto. El modelo afinado con 120 frases tiene 0 resultados satisfactorios. Los modelos afinados con 600 y 1000 frases nos han dado 6 resultados satisfactorios, mientras que el modelo afinado con el dataset completo alcanzó 9 resultados satisfactorios.

Si nos fijamos en las categorías que no han recibido ningún resultado satisfactorio en ningún entrenamiento, marcadas en rojo en la tabla, vemos que, salvo crime/law and justice, todas tienen un porcentaje del dataset inferior al 5%, y que podemos considerarlas como categorías difícil de distinguir entre ellas. Tendríamos que mirar con más detalle los datasets de entrenamiento, pero es probable que estas categorías sean ambiguas y se necesiten más ejemplos para diferenciarlas de otras.

También vemos que no hay una relación clara entre el porcentaje del dataset y el número de aciertos satisfactorios. Por ejemplo, la categoría health, con el 3,27% del dataset, se acierta satisfactoriamente a partir del modelo con 600 ejemplos, mientras que la categoría human interest, con un porcentaje del dataset similar, un 3,00%, apenas recibe aciertos.


Conclusión


En una tarea de clasificación de texto, el modelo preentrenado que hemos usado no es más eficaz que una asignación arbitraria de una etiqueta. Los modelos preentrenados no están preparados para solucionar tareas específicas. Es necesario afinarlos y revisar que el dataset esté balanceado para tener un resultado satisfactorio en todas las categorías y que nos pueda servir para ayudarnos en una tarea de preanotación de un dataset mayor.

Un modelo, por sí solo, necesita ayuda para poder hacer una tarea específica, como la categorización de un texto. Cuando se aplica a una tarea específica obtenemos un resultado igual a que si hiciéramos una asignación arbitraria del resultado. Se necesita un dataset anotado, aunque sea pequeño, y una afinación para que pueda ofrecer resultados. Con un dataset mínimo de 120 frases hemos obtenido una mejora pequeña, sin embargo el resultado empieza a ser interesante con un dataset de 600 frases.

Necesitamos hacer más pruebas para ver cuántos ejemplos son necesarios para una mejora continuada de la exactitud de un modelo. Si con 600 y con 1000 ejemplos obtenemos un resultado similar, con 2199 alcanzamos una exactitud del 70,59%, casi tres de cada cuatro frases se etiquetan correctamente. Un porcentaje así nos permitiría automatizar una tarea de etiquetado reduciendo gran parte de la misma a revisar que el etiquetado del modelo sea correcto.

También vemos que hay etiquetas que, por tener pocos ejemplos y por su propia ambigüedad, se le hace difícil a un modelo acertar. Con un dataset con más ejemplos de los casos con peor rendimiento, se podría mejorar la exactitud del modelo.

Para concluir, si queremos que un modelo pueda ayudarnos en las tareas de anotación de un dataset, necesitamos aportar primero un dataset más pequeño con el que entrenarlo. Más adelante habrá que iterar para mejorar el entrenamiento en aquellas categorías que se necesiten hasta lograr un modelo que sea capaz de predecir con exactitud casi todo un dataset.


Lecturas recomendadas
‍‍

· Fine-tuning a pretrained model, por Hugging Face.
· State-of-the-Art of Natural Language Processing, por Papers with code.
· OpenAI GPT-3: Everything You Need to Know, por Kindra Cooper.
· GPT-3 Vs BERT For NLP Tasks, por Sejuti Das.8

Try it for freeBook a demo