Actualizándome con los Transformers: Un ejemplo sencillo
- fjroar
- 27 jul 2023
- 3 Min. de lectura
El año 2014 fue importante para mí porque me di cuenta que algo nuevo estaba pasando con la estadística que convenía aprender y agregarlo a la base de conocimiento, esa cosa nueva era el Machine Learning que ya desde el 2010 tanto en R como en Python se iban implementando en librerías que cada vez serían más sólidas.
Pues bien, a día de hoy vuelvo a sentirme desactualizado y ya casi a mis cuarenta y todos, creo que hay que ponerse al día con el tema de los Transformers.

Figura 1: Clasificación textual de “Party at my house, tomorrow afternoon” mediante un transformer entrenado con textos del dataset emotions
Aunque se puede fijar su fecha de aparición en el 2017, creo que ya existían cosas que se podían usar desde el 2020 y además, atacando a temas que a mí siempre me ha gustado como ha sido el Natural Language Processing NLP.
Así pues, que me pongo a ello y lo mejor para ello, más que poner por Linkedin y demás sitios referencias de otros autores es hacer algo e ir aprendiendo de la mano de algún libro bueno. Esta obra (seguramente ya entre otras muchas) recomendable es la titulada como “Natural Language Processing with Tranformers” de la editorial O’Reilly y los autores Lewis tunstall, Leandro von Werra & Thomas Wolf, de donde gran parte del código al que referencio aquí, lo he tomado de ahí.
Para este primer post de Transformers, he creído interesante hablar de mi primer “hola mundo” que de lo que son en sí, para lo cual, entre muchos recursos en español remito a https://www.aprendemachinelearning.com/como-funcionan-los-transformers-espanol-nlp-gpt-bert/
En este primer “hola mundo” siguiendo el mencionado libro, he sido capaz de crear mi primer transforme totalmente entrenado con una base de texto y puesto a disposición de quién lo quiera usar bajo la plataforma Hugging Face, así pues, con un conjunto de datos accesible vía Hugging Face, donde se parte de una clasificación de 16.000 textos procedentes en inglés etiquetados en 6 categorías o emociones, llegué a crear un modelo predictivo donde manipulé todos los hiperparámetros que me permitieron ajustar la parte de la red encoder a mi caso particular. Creando un modelo con la siguiente capacidad predictiva:

Figura 2: Matriz de confusión del modelo entrenado
Es instructivo seguir los códigos y adaptar los elementos del libro, ya que hay muchas dificultades de cosas que hay que retocar para que finalmente funcione además de que en la plataforma Hugging Face debe crearse un repositorio para alojar el modelo, así pues, para entender bien el libro conviene tener una base de Python, Git y ser hábil buscando soluciones técnicas tanto en Chat GPT como en Stack Overflow (no todo lo sabe Chat GPT …) y así logro un Google Colab que funciona (tras casi 4 horas de entrenamiento ya que no pago licencia y los recursos son los que son …) mi propio modelo, cuyo código de desarrollo que dejo aquí por si es de utilidad para alguien: https://colab.research.google.com/drive/1OPzGA5j5wsNOtiGvdSVzWZFbgYgxhvKU?hl=es#scrollTo=yVAixWnM-WMQ (ojo, que tendréis que daros de alta en la plataforma Hugging Face y pedir vuestro token y desde luego si alguien tiene problemas en su ejecución me puede pedir ayuda porque el tema de hacer un “push” a la plataforma no está muy fino y tras casi 4h de entrenamiento perderlo todo, tampoco es cosa …)
Una vez hecho el modelo la plataforma permite hacer como una “puesta en producción” y la utilización por todo el mundo con las siguientes pocas líneas de código que podéis encontrar en mi github: https://github.com/FJROAR/Ejemplo-Transformers-Clasifica01

Figura 3: 16 líneas de código python para ejecutar y representar el resultado del modelo sobre un posible tweet genérico
Y que generaría la anterior Figura 1. Nótese que si se cambia la línea 10 por “The party at my house was canceled”, entonces todo cambia en el sentido correcto:

Figura 4: Cambio de sentido cuando se trata de clasificar un nuevo tweet
Finalmente, para no extenderme demasiado algunas conclusiones al respecto:
Los transformes están aquí, han venido para quedarse y hay que estar al día, hay que tocarlos y aplicarlos, no basta sólo con leer, os animo a que os actualicéis y sigáis aprendiendo.
El que no se actualice en esto, en 5 años quedará desfasado porque a saber con qué se estará trabajando ... De hecho tenía que haber empezado con esto incluso bastante antes, al igual que pasó cuando irrumpió el Machine Learning, estamos ante una revolución que ya lleva algún tiempo.
En mi opinión todavía se tienen que simplificar más algunos métodos y mejorar algunas cosas, pero se está en un momento “técnicamente dulce” donde con un poco de conocimiento, se puede crear modelos muy potentes, pero aún es necesario una mínima base técnica.
El NLP siempre me ha gustado mucho, pero me había dado resultados no muy buenos, el wordtovec y demás, no es que fuese una maravilla, pero esto me ha sorprendido gratamente y ojalá hubiera estado habilitado hace unos años.
Kommentare