Recurrent Neural Network (RNN)

Una red neuronal recurrente (RNN) es un tipo de red neuronal artificial que utiliza datos secuenciales o datos de series de tiempo. Estos algoritmos de aprendizaje profundo se utilizan comúnmente para problemas ordinales o temporales, como la traducción de idiomas, el reconocimiento de voz y subtítulos de imágenes.

Cabe mencionar que están incorporados en aplicaciones populares como Siri, búsqueda por voz y Google Translate. Al igual que las redes neuronales feedforward y convolucionales (CNN), las redes neuronales recurrentes utilizan datos de entrenamiento para aprender. Se distinguen por su "memoria", ya que toman información de entradas anteriores para utilizarse en los datos de entrada y en los resultados. Si bien las redes neuronales profundas tradicionales asumen que los datos de entrada y los resultados son independientes entre sí, los resultados de las redes neuronales recurrentes depende de los elementos anteriores dentro de la secuencia. Aunque los eventos futuros también serían útiles para determinar los resultados de una secuencia dada, las redes neuronales recurrentes unidireccionales no pueden tener en cuenta estos eventos en sus predicciones.

Tipos de redes neuronales recurrentes

Las redes "feedforward" mapean una entrada a una salida, y aunque hemos visualizado las redes neuronales recurrentes de esta manera en los diagramas anteriores, en realidad no tienen esta restricción.

En cambio, sus entradas y salidas pueden variar en longitud, y se utilizan diferentes tipos de RNN para diferentes casos de uso, como la generación de música, la clasificación de sentimientos y la traducción automática.

Diagrama de diferentes tipos de redes neuronales recurrentes:

Arquitecturas variantes de RNN

Redes neuronales bidireccionales recurrentes (BRNN): Se trata de una variante de la arquitectura de redes de las RNN. Mientras que los RNN unidireccionales solo pueden extraerse de datos de entrada anteriores para hacer predicciones sobre el estado actual, los RNN bidireccionales extraen datos futuros para mejorar su precisión. Si volvemos al ejemplo de "tener mala pata" anteriormente en este artículo, el modelo puede predecir mejor que la segunda palabra en esa frase es "mala" si supiera que la última palabra en la secuencia es "pata".

Memoria a largo plazo a corto plazo (LSTM): Esta es una arquitectura RNN popular, que fue introducida por Sepp Hochreiter y Juergen Schmidhuber como una solución al problema del gradiente que desaparece. En su artículo científico (PDF,  388 KB) (enlace externo a IBM), ellos abordan el problema de las dependencias a largo plazo. Es decir, si el estado anterior que influye en la predicción actual no es del pasado reciente, es posible que el modelo RNN no pueda predecir con precisión el estado actual. Como ejemplo, digamos que queríamos predecir las palabras en cursiva a continuación, "Alice es alérgica a las nueces. Ella no puede comer mantequilla de maní . " El contexto de una alergia a las nueces puede ayudarnos a anticipar que los alimentos que no se pueden comer contienen nueces. Sin embargo, si ese contexto fuera unas pocas oraciones antes, entonces sería difícil, o incluso imposible, para la RNN conectar la información. Para remediar esto, los LSTM tienen "celdas" en las capas ocultas de la red neuronal, que tienen tres puertas: una puerta de entrada, una puerta de salida y una puerta de olvido. Estas puertas controlan el flujo de información que se necesita para predecir el resultado en la red.  Por ejemplo, si los pronombres de género, como "ella", se repitieron varias veces en oraciones anteriores, puede excluirlo del estado de celda.

Unidades recurrentes cerradas (GRU): Esta variante de RNN es similar a los LSTM, ya que también funciona para abordar el problema de la memoria a corto plazo de los modelos RNN. En lugar de utilizar una información de regulación de "estado de celda", utiliza estados ocultos y, en lugar de tres puertas, tiene dos: una puerta de reinicio y una puerta de actualización. Al igual que las puertas dentro de los LSTM, las puertas de reinicio y actualización controlan cuánta y qué información retener.