5.12 - Práctica 1: Machine Translation

Lección 12 de la sección “Redes Transformer” del curso Fundamentos de Deep Learning con Python.

Introducción

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 la sección resolveremos un problema similar al que dio origen a estas Redes Transformer: la traducción de texto (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.

Contenido exclusivo suscriptores

Suscríbete y accede al set de datos, código fuente y video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

Lectura, limpieza y pre-procesamiento del set de datos

Usaremos un set de datos disponible que contiene casi 120.000 pares de frases (Inglés-Español).

Lectura y limpieza del set de datos

Por tratarse de un set que se encuentra almacenado en un archivo de texto (extensión .txt), usaremos funciones básicas de Python para la lectura de archivos.

Por otra parte, en la limpieza intentaremos:

Para esto resultará útil el módulo string de la librería estándar de Python

Creación de diccionarios

Al ingresar a la Red Transformer, cada token debe ser representado numéricamente. Así que crearemos dos diccionarios:

Para ello usaremos la estructura de diccionarios de Python

Padding

Como las frases tienen longitudes diferentes, es necesario usar padding (rellenar con ceros) para garantizar que al ingresar a la Red Transformer todas tengan la misma longitud.

Calcularemos el tamaño máximo de las secuencias y usaremos este valor para realizar el padding.

Codificación numérica

Finalmente, con las secuencias tokenizadas y con los diccionarios, convertiremos cada token a su representación numérica.

Creación sets de entrenamiento y prueba

Usaremos el 75% de los datos para el entrenamiento y el 25% restante para prueba.

Red Transformer

Creación

Una de las desventajas de la Red Transformer es su elevado número de parámetros: en su versión original la red contiene casi 60 millones de parámetros.

Dadas las limitaciones de almacenamiento y capacidad de procesamiento de la máquina virtual de Google Colab, tendremos que usar una arquitectura simplificada.

Para implementarla usaremos la librería keras-transformer que fácilmente puede ser instalada usando el comando pip.

Entrenamiento

Para el modelo anterior se requieren un poco más de 3 min/epoch para el entrenamiento. Así que haremos un total de 10 iteraciones de entrenamiento y usaremos un tamaño de lote relativamente pequeño (64) para evitar problemas de almacenamiento en memoria.

Traducción con el modelo entrenado

Usaremos la función decode de la librería keras_transformer.

La traducción se lleva a cabo siguiendo estos pasos:

Usaremos frases escritas en minúscula y sin caracteres atípicos o signos de puntuación.

Contenido exclusivo suscriptores

Recuerda suscribirte para acceder al set de datos, código fuente y video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

Conclusión

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 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.

Ver todas las lecciones de este curso