Introducción a las Redes Neuronales Recurrentes

En este primer post de la serie “Redes Neuronales Recurrentes” haremos una introducción general a esta importante arquitectura del Deep Learning, hablaremos de sus principales características y veremos algunos ejemplos de aplicación.

¡Así que listo, comencemos!

Video

Como siempre, en el canal de YouTube se encuentra el video de este post:

Introducción

Las Redes Neuronales Recurrentes son una de las principales arquitecturas del Machine Learning, muy usadas por ejemplo en los sistemas de reconocimiento de voz o en el análisis video, o en el procesamiento del lenguaje natural.

Anteriormente hemos visto que las Redes Neuronales o las Redes Convolucionales permiten procesar un solo dato a la vez (como un sonido o una imagen), pero si tenemos una secuencia de sonidos (una conversación) o de imágenes (un video), este tipo de arquitecturas no estarán en capacidad de procesar este tipo de secuencias.

Las Redes Neuronales Recurrentes resuelven este inconveniente, pues son capaces de procesar diferentes tipos de secuencias (como videos, conversaciones, texto) y, a diferencia de las redes neuronales o convolucionales, no se utilizan para clasificar un dato en particular sino que también están en capacidad incluso de generar nuevas secuencias.

Las Redes Neuronales Recurrentes vs. otras arquitecturas

La diferencia entre una red recurrente y otras arquitecturas como las Redes neuronales o Convolucionales, radica en el tipo de datos que pueden analizar. Las Redes Recurrentes están en capacidad de analizar secuencias de datos, las otras dos arquitecturas no:

Las Redes Neuronales Recurrentes son capaces de procesar secuencias
Las Redes Neuronales Recurrentes son capaces de procesar secuencias

Veamos en detalle en qué consiste esta diferencia.

Si a una Red Neuronal o Convolucional se le presenta, por ejemplo, una imagen o una palabra, con el entrenamiento adecuado estas arquitecturas lograrán clasificar un sinnúmero de datos logrando a la vez una alta precisión:

Las Redes Neuronales o Convolucionales son capaces de clasificar datos
Las Redes Neuronales o Convolucionales son capaces de clasificar datos

¿Pero qué pasa si en lugar de una única imagen o palabra, se introduce a la red una secuencia de imágenes (un video) o una secuencia de palabras (una conversación)?

En este caso, ninguna de las redes será capaz de procesar los datos.

En primer lugar porque estas arquitecturas están diseñadas para que los datos de entrada y de salida siempre tengan el mismo tamaño. Sin embargo, un video o una conversación se caracterizan por ser un tipo de dato con un tamaño variable: una cantidad variable de frames, en el caso del video, o una cantidad variable de palabras en el caso de la conversación.

En segundo lugar, en un video o en una conversación los datos están correlacionados. Esto quiere decir que la siguiente palabra pronunciada, o la siguiente imagen en la secuencia de video, dependerá de la palabra o imagen anterior. E incluso estas palabras e imágenes estarán relacionadas con aquellas que se presenten más adelante en la secuencia.

Una Red Neuronal o Convolucional no está en capacidad de analizar la relación entre varias palabras/imágenes de la secuencia:

Las Redes Neuronales o Convolucionales no son capaces de interpretar una secuencia de datos (como una conversación, la música o un video)
Las Redes Neuronales o Convolucionales no son capaces de interpretar una secuencia de datos (como una conversación, la música o un video)

Las Redes Neuronales Recurrentes no presentan este inconveniente, y por tanto son capaces de analizar secuencias.

Para entender cómo funcionan estas Redes Neuronales Recurrentes necesitamos primero entender qué es una secuencia.

Pero, ¿qué es una secuencia?

Una secuencia es por ejemplo un texto escrito: para comprender su contenido no basta con que leamos cada palabra de manera individual, pues realmente nuestro cerebro concatena todas las palabras leídas hasta el momento permitiéndonos comprender la idea central de dicho texto:

El texto escrito es un ejemplo de una secuencia
El texto escrito es un ejemplo de una secuencia

Así, una secuencia es una serie de datos (imágenes, palabras, notas musicales, sonidos) que siguen un orden específico y tienen únicamente significado cuando se analizan en conjunto y no de manera individual:

Diferentes ejemplos de secuencias: un video, el ADN, texto y música
Diferentes ejemplos de secuencias: un video, el ADN, texto y música

Por ejemplo, la palabra “secuencia” está conformada por diferentes caracteres (“s”-“e”-“c”-“u”-“e”-“n”-“c”-“i”-“a”). Dichos caracteres, analizados de forma individual o en un orden diferente (por ejemplo, “n”-“s”-“e”-“i”-“c”-“c”-“u”-“a”), carecen de significado:

En una secuencia se debe tener en cuenta el orden específico de sus elementos
En una secuencia se debe tener en cuenta el orden específico de sus elementos

Es evidente que una secuencia no tiene un tamaño predefinido, pues no podemos saber con antelación el número de palabras pronunciadas por una persona en una conversación, ni tampoco garantizar que un texto escrito tenga siempre un número fijo de palabras/caracteres.

Las Redes Neuronales Recurrentes resuelven precisamente este inconveniente, pues pueden procesar, tanto a la entrada como a la salida, secuencias sin importar su tamaño y además teniendo en cuenta la correlación existente entre los diferentes elementos de la secuencia.

Así que veamos su principio de funcionamiento.

Las Redes Neuronales Recurrentes: principio básico de funcionamiento

Para lograr procesar una secuencia, las Redes Neuronales Recurrentes usan el concepto de recurrencia: para generar la salida, que en adelante llamaremos activación, la red usa no solo la entrada actual sino la activación generada en la iteración previa. En pocas palabras, las Redes Neuronales Recurrentes usan un cierto tipo de “memoria” para generar la salida deseada.

Una Red Neuronal Recurrente usa el principio de recurrencia para procesar los elementos de la secuencia
Una Red Neuronal Recurrente usa el principio de recurrencia para procesar los elementos de la secuencia

Tipos de Redes Neuronales Recurrentes

Las Redes Neuronales Recurrentes vienen en varios sabores. Veamos los principales.

One-to-many

En primer lugar tenemos las Redes Neuronales Recurrentes “one to many” en donde la entrada es un único dato y la salida es una secuencia.

Un ejemplo de esta arquitectura es el “image captioning” en donde la entrada es una imagen y la salida es una secuencia de caracteres (un texto) que describe el contenido de la imagen:

El image captioning, un ejemplo de las Redes Recurrentes one-to-many
El image captioning, un ejemplo de las Redes Recurrentes one-to-many

Many-to-one

Una segunda arquitectura son las Redes Neuronales Recurrentes “many to one”, en donde la entrada es una secuencia y la salida es por ejemplo una categoría.

Un ejemplo de esto es la clasificación de sentimientos en donde por ejemplo la entrada es un texto que contiene una crítica a una película y la salida es una categoría indicando si la película le gusto al crítico o no:

El análisis de sentimientos es un ejemplo de las Redes Recurrentes many-to-one
El análisis de sentimientos es un ejemplo de las Redes Recurrentes many-to-one

Many-to-many

También existe la arquitectura “many to many” en donde tanto a la entrada como a la salida se tienen secuencias.

Un ejemplo de este tipo de red recurrente son los traductores automáticos. En este caso la secuencia de salida no se genera al mismo tiempo que la secuencia de entrada, pues para poder traducir, por ejemplo, una frase del Inglés al Español se requiere primero conocer la totalidad del texto en Inglés:

La traducción de texto de un lenguaje a otro es un ejemplo de las Redes Recurrentes many-to-many
La traducción de texto de un lenguaje a otro es un ejemplo de las Redes Recurrentes many-to-many

Y desde luego, en esta misma arquitectura “many to many” podemos encontrar los conversores de voz-a-texto o texto a voz, que son Redes Neuronales Recurrentes cuya entrada y salida es también una secuencia.

Para finalizar, veamos algunos ejemplos realmente interesantes del potencial que tienen las redes recurrentes.

Algunas aplicaciones de las Redes Neuronales Recurrentes

Image captioning

Una de las primeras aplicaciones es el image captioning, en donde se usan dos modelos en conjunto: una Red Convolucional seguida por una Red Neuronal Recurrente. El resultado: el modelo entrenado es capaz de generar automáticamente texto que describe el contenido de la imagen.

Algunos ejemplos de image captioning usando Redes Recurrentes en combinación con Redes Convolucionales
Algunos ejemplos de image captioning usando Redes Recurrentes en combinación con Redes Convolucionales

Reconocimiento de escritura

Recientemente Google desarrolló un módulo, ya disponible en los dispositivos Android, que permite el reconocimiento de escritura: le permite al usuario escribir directamente sobre la pantalla táctil de su dispositivo móvil, y el sistema es capaz de reconocer lo que la persona está escribiendo.

Reconocimiento automático de escritura
Reconocimiento automático de escritura

Este sistema usa una arquitectura conocida como LSTM (Long-Short-Term memory), una variante de las Redes Neuronales Recurrentes de la cual hablaremos en detalle más adelante en otro post de esta serie.

Comprensión del lenguaje

Microsoft también ha desarrollado aplicaciones que permiten entender el lenguaje humano, y tomar decisiones con base en el contenido de una conversación.

Esto tiene aplicaciones en las áreas de automatización e internet de las cosas.

Ejemplo de comprensión automática del lenguaje
Ejemplo de comprensión automática del lenguaje

Análisis de sentimientos

También es posible realizar el análisis de sentimientos: a partir de una conversación o texto, el sistema es capaz de determinar si lo que intenta expresar la persona es positivo, negativo o neutral.

Para ello, el modelo basado en Redes Recurrentes detecta palabras clave dentro del texto o conversación, que permiten luego asociar a las mismas un sentimiento en particular.

Ejemplo de análisis de sentimientos
Ejemplo de análisis de sentimientos

Generación de música

También es posible usar las Redes Neuronales Recurrentes para generar música, como en este demo desarrollado por Google, en donde el usuario introduce algunas notas y el sistema automáticamente es capaz de generar la melodía correspondiente.

Detección de modificaciones en el ADN

Incluso en las áreas de la genética, la biología y la medicina se han desarrollado aplicaciones haciendo uso de las Redes Neuronales Recurrentes.

Un ejemplo de esto es la detección de modificaciones en la secuencia de ADN con una precisión cercana al 99%, lo que facilitará el análisis modificaciones en el ADN en diversas especies.

Ejemplo de detección de modificaciones en la secuencia de ADN
Ejemplo de detección de modificaciones en la secuencia de ADN

Conclusión

Bien, en este primer post de la serie hemos visto una introducción general a las Redes Neuronales Recurrentes, una arquitectura que (a diferencia de las redes neuronales y convolucionales) permite el procesamiento de secuencias.

El potencial de esta arquitectura es inmenso, pues gran cantidad de los datos que existen en la actualidad son precisamente secuencias. Así, esta arquitectura ofrece la posibilidad de analizar otros tipos de datos, como videos, o imágenes, texto, conversaciones e incluso secuencias de ADN.

En el siguiente post de la serie veremos en detalle cómo es la estructura interna de una red neuronal recurrente y cómo se realiza el proceso de entrenamiento.

Si te gustó este post y te gusta el contenido que publico periódicamente, te invito a visitar mi canal de YouTube y a suscribirte al sitio web para recibir notificaciones cuando publique nuevo contenido.

Los otros posts de la serie

comments powered by Disqus