Si quieres aprender un poco sobre el modelo de red neuronal que te permite hacer cosas como; predecir cuál será el valor de una acción, clasificar un texto, generar un texto completamente nuevo o analizar que esta pasando en un vídeo, este articulo es para ti.

Las redes neuronales "normales" (Por redes neuronales normales me refiero a estas Dar clic aquí) nos han ayudados a solucionar una gran variedad de problemas, su estructura tan sencilla y elegante ha demostrado ser grandiosa para generar algoritmos que aprenden por su cuenta. Se han generados varias estructuras de redes neuronales que sacan provecho de los elementos básicos de una red neuronal “común” pero que construyen por encima para añadir funcionalidades extras.

Una limitante que tienen las redes neuronales normales es que no tienen memoria, si le damos a una red un dato para que genere una predicción, el resultado no dependerá en lo absoluto de las predicciones que previamente realizó, eso es algo bueno, a menos que queramos procesar datos secuenciales, es decir datos en los cuales hay una relación entre un elemento y los que vinieron antes o después de este.

Buenos ejemplos de datos secuenciales serían los precios de una acción, en la cual los valores anteriores tienen una relación directa con los valores actuales o también el lenguaje, en el cual una palabra se define por su contexto, las palabras que vienen antes y después de una son las que ayudan a que entendamos que estamos leyendo. Por ejemplo, en una red neuronal debe de haber una memoria la cual en la frase “Pásame la sal” sepa que la palabra “sal” es el condimento y no el verbo de salir ¿Cómo hace esto? manteniendo una memoria de lo que se ha procesado previamente, y esto lo logramos gracias a las redes neuronales recurrentes.

Es por eso que se inventaron las RNNs las cuales tienen un “estado oculto” que sirve como una memoria para recordar los elementos que se procesaron previamente y así tener un mejor contexto de la data que se está procesando.

De manera general las RNNs funcionan de la siguiente manera:

Imaginemos que tenemos una red neuronal la cual queremos que complete una frase. Así que empezamos dándole la primera palabra de la frase, en ese ejemplo la frase será "El auto tiene cuatro [llantas/ruedas]"

La red neuronal va a procesar la palabra "El" y va a actualizar su "estado oculto", después de esto en el siguiente momento del tiempo la red neuronal va a recibir la palabra "auto" y el estado oculto del tiempo anterior (que contiene la memoria), va a procesar estos datos y los enviará al siguiente momento del tiempo, donde se procesara la palabra "tiene" mas el estado oculto que tiene la memoria de haber procesado "El" y "auto". Asi sucesivamente hasta llegar a la palabra "cuatro", aquí la red neuronal va a procesar la palabra "cuatro" más el estado oculto que tiene contexto de "El auto tiene", pero ahora en vez de enviar el resultado al siguiente paso del tiempo va a generar una predicción, diciendo que la palabra mas probable a seguir dada la palabra "cuatro" y el historico de "El auto tiene" seria llantas o ruedas.

Hay 4 maneras en las que una RNN puede procesar los datos:

  • Uno a uno
  • Uno a muchos
  • Muchos a muchos
  • Muchos a muchos (desfazado)