Lección 12 del módulo “Redes Transformer” del curso Fundamentos de Deep Learning con Python.
En la lección anterior hablamos de la etapa de salida del decodificador de una Red Transformer y con ello terminamos de ver en detalle todos los elementos que constituyen esta arquitectura.
En esta primera práctica de este módulo resolveremos un problema similar al que dio origen a estas Redes Transformer: la traducción de texto de un idioma a otro (o Machine Translation).
En particular implementaremos en Python una Red Transformer capaz de tomar una frase en Inglés y que aprenderá a generar la correspondiente frase en Español.
Comencemos entonces entendiendo el problema a resolver y viendo cómo preparar el set de datos:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Como acabamos de ver, en este proyecto usaremos un set de datos con 120,000 pares de frases en inglés y español, almacenado en un archivo de texto.
La limpieza del set incluye la separación de frases por idioma, la conversión a minúsculas, la eliminación de caracteres atípicos y signos de puntuación y la creación de tokens para cada palabra, añadiendo tokens de inicio y finalización a las frases en Español.
Después lo que hicimos fue crear diccionarios para representar cada token numéricamente y posteriormente aplicamos padding para garantizar que todas las frases que se introduzcan al modelo tengan la misma longitud.
Y finalmente, convertimos las secuencias «tokenizadas» a su representación numérica y dividimos el set resultante en entrenamiento (75%) y prueba (25%).
Veamos ahora cómo crear y entrenar la Red Transformer:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
La Red Transformer original tiene casi 60 millones de parámetros, lo que implica un alto consumo de recursos.
Sin embargo, debido a las limitaciones de Google Colab, en este proyecto hacemos uso arquitectura simplificada con la librería keras-transformer lo que nos permite tener un modelo con menos parámetros y que requerirá aproximadamente 3 minutos por cada iteración de entrenamiento.
Con el modelo ya construído y entrenado sólo nos resta ponerlo a prueba. Veamos entonces cómo generar traducciones Inglés-Español con esta Red Transformer:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Muy bien, con ayuda de Python y la librería Keras ¡hemos logrado crear y entrenar nuestra primera Red Transformer!
Y su desempeño es bastante bueno, pues, como acabamos de ver en el video anterior, el modelo es capaz de interpretar el significado de la frase y generar la traducción correcta de Inglés a Español, incluso si hacemos ligeros cambios entre una frase y otra.
Así que en las próximas lecciones veremos nuevas arquitecturas que han tomado como punto de partida la Red Transformer original que acabamos de implementar para resolver diversos problemas de procesamiento de secuencias.
En particular, en la próxima lección hablaremos de una de estas primeras arquitecturas, que se conoce como BERT y que introduce el concepto de transferencia de aprendizaje al área del Procesamiento del Lenguaje Natural, lo que ha permitido desarrollar aplicaciones muy interesantes en este campo.
Todas las lecciones del curso Fundamentos de Deep Learning con Python
