Red-Neuronal-Recurrente (RNN)

Neuronal-Networking

Nota: (Las Recurrent-Neural-Network (RNN) son una clase muy útiles para modelar datos de secuencia. La Red-Neuronal-Recurrente (RNN) tiene un comportamiento similar al funcionamiento de los cerebros humanos. Las Recurrent-Neural-Network (RNN) producen resultados predictivos en datos secuenciales que otros algoritmos no pueden utilizan, en definitiva, datos secuenciales para resolver problemas temporales comunes, que se encuentra en la traducción de idiomas y el reconocimiento de voz).

 

Que es Red-Neuronal-Recurrente (RNN)

-. Una Recurrent-Neural-Network (RNN) es una clase donde las conexiones entre nodos pueden crear un ciclo, lo que permite que la salida de algunos nodos afecte la entrada posterior a los mismos nodos. Tiene un comportamiento dinámico temporal, derivados de redes neuronales feedforward , La Recurrent-Neural-Network (RNN) pueden usar su estado interno (Memoria) para procesar secuencias de entradas de longitud variable. Esto los hace ideales pa tareas como reconocimiento de escritura a mano o reconocimiento de voz . Las Recurrent-Neural-Network (RNN) puede ejecutar programas arbitrarios para procesar secuencias arbitrarias de entradas.

Nota: La Red-Neuronal-Feedforward es un tipo específico de red neuronal artificial que no tiene retroalimentación.

-. Tanto las Redes-Recurrentes de impulsos finitos como las de impulsos infinitos pueden tener estados almacenados adicionales, y el almacenamiento puede estar bajo el control directo de la Red-Neuronal. El almacenamiento también se puede reemplazar por otra Red o gráfico si incorpora retrasos de tiempo o tiene bucles de retroalimentación. Dichos estados controlados se denominan estado cerrado o memoria cerrada, y forman parte de las redes de memoria a corto plazo (LSTM) y unidades recurrentes cerradas .

Nota: El concepto impulso infinito o finito en, Recurrent-Neural-Network (RNN) se utiliza para referirse a la clase de redes con una respuesta de impulso infinito y la Red-Neuronal-Convolucional (CNN) se refiere a la clase de respuesta de impulso finita. Ambas clases de redes tienen un comportamiento dinámico temporal . Una Red-Recurrente de impulsos finitos es un gráfico acíclico dirigido que se puede desenrollar y reemplazar con una red neuronal estrictamente realimentada, mientras que una Red-Convolucional de impulsos infinitos es un gráfico cíclico dirigido que no se puede desenrollar.

-. Las Redes-Recurrentes dependen de los cálculos anteriores y de lo que se ha calculado previamente, podemos hablar de una Red-Neuronal desenrollada en el tiempo, Cada capa de entrada en cada paso de tiempo, se le aplica la salida, por lo tanto, el estado del paso de tiempo anterior, como entrada. Las conexiones entre nodos en una Redes-Recurrentes forman un ciclo dirigido, creando una memoria interna, que ayuda al modelo a aprovechar largas cadenas de dependencias.

-. Este tipo de Red-NeuronalArtificial-Recurrente ayuda a realizar predicciones de lo que sucederá en un futuro a partir de datos históricos. La arquitectura del este modelos Recurrente permite que la inteligencia artificial pueda recordar y olvidar información. Es capaz de recordar el texto procesado hace decenas de frases y asociar conceptos con las nuevas frases que va analizando.

Nota: En este diagrama tenemos; Recurrent-Neural-Network (RNN), plegada y desplegar, cada Nodo se compone de Capa-entrada (x) , Capa-salida (y) , Capa-oculta (h) y lo llamare (memoria), este modelo entonces podemos decir que es una cadena de dependencia desarrollada en un tiempo dado.

 

Tipos-Recurrent-Neural-Network

-. Las Recurrent-Neural-Network (RNN) y sus entradas y salidas pueden variar en longitud, y se utilizan diferentes tipos de RNN para diferentes casos de uso. Los diferentes tipos de RNN generalmente se expresan utilizando los siguientes diagramas (Tipos).

Uno a Uno :

Este tipo de Recurrent-Neural-Network (RNN). Se usa para problemas generales de aprendizaje automático, que tiene una sola entrada y una sola salida.

Uno a Muchos :

Este tipo de Recurrent-Neural-Network (RNN), tiene una sola entrada y múltiples salidas. Un ejemplo de esto es el título de la imagen.

Muchos a Uno :

Este tipo de Recurrent-Neural-Network (RNN), muchas entradas de diferentes pasos de tiempo producen una sola salida. Estas se emplean en el análisis de sentimientos o la detección de emociones, donde la etiqueta de clase depende de una secuencia de palabras.

Muchos a Muchos :

Este tipo de Recurrent-Neural-Network (RNN), Tenemos muchas combinaciones para muchos a muchos. Las redes de muchos a muchos se aplican en la traducción automática, por ejemplo, sistemas de traducción de inglés al chino o viceversa.

 

Arquitectura-Recurrent-Neural-Network

-. Tenemos en las Recurrent-Neural-Network (RNN), diferentes Arquitectura, estas son tres, que a mi juicio son las mas interesantes y las aplicamos al entorno del Deep-Learning.

Redes-Neuronales-Recurrentes-Bidireccionales (BRNN):

  • Esta arquitectura BRNN es una variante de las Recurrent-Neural-Network (RNN), estas son unidireccionales solo pueden extraerse de entradas anteriores para hacer predicciones sobre el estado actual. Sin embargo las Redes-Neuronales-Recurrentes-Bidireccionales (BRNN), bidireccionales extraen datos futuros para mejorar su precisión. En BRNN, las entradas de pasos de tiempo futuros se utilizan para mejorar la precisión de la red. Es como saber la primera y la última palabra de una oración para predecir las palabras intermedias.

Unidades-Recurrentes-Cerradas (GRU):

  • Unidades-Recurrentes-Cerradas (GRU), es una variante de Recurrent-Neural-Network (RNN), es similar a las LSTM, ya que también funciona para abordar el problema de la memoria a corto plazo de los modelos RNN. Estas Unidades-Recurrentes-Cerradas (GRU) están diseñadas para manejar el problema del gradiente de fuga. Tienen una puerta de reinicio y actualización. Estas puertas determinan qué información se conservará para futuras predicciones.

Redes-Neuronales-Recurrentes-Memoria a largo plazo (LSTM):

  • Memoria a corto plazo (LSTM) esta es la variante mas popular de una Recurrent-Neural-Network (RNN), se presento como una solución al problema del gradiente de fuga. Para hacer esto, los LSTM tienen 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 la salida en la red. Al igual que GRU, estas puertas determinan qué información retener.

 

Implementación-Recurrent-Neural-Network (RNN)

-. Usaremos el laboratorio Nº5 (Keras) para implementar las Recurrent-Neural-Network (RNN) y sus dos versiones (GRU) y (LSTM) , generamos el modelo que cada uno tiene tres capas.

Recurrent-Neural-Network (RNN):

  • # Importar las Librerias
  • import tensorflow as tf
  • from tensorflow import keras
  • from tensorflow.keras import layers
  • #Creamos el modelo sequential
  • model = keras.Sequential()
  • # Generamos las tres capas
  • model.add(layers.SimpleRNN(64, input_shape=(32, 32)))
  • model.add(layers.BatchNormalization())
  • model.add(layers.Dense(10))
  • print(model.summary())

Unidades-Recurrentes-Cerradas (GRU):

  • # Importar las Librerias
  • import tensorflow as tf
  • from tensorflow import keras
  • from tensorflow.keras import layers
  • #Creamos el modelo sequential
  • model = keras.Sequential()
  • # Generamos las tres capas
  • model.add(layers.GRU(64, input_shape=(32, 32)))
  • model.add(layers.BatchNormalization())
  • model.add(layers.Dense(10))
  • print(model.summary())

Memoria a largo plazo (LSTM):

  • # Importar las Librerias
  • import tensorflow as tf
  • from tensorflow import keras
  • from tensorflow.keras import layers
  • #Creamos el modelo sequential
  • model = keras.Sequential()
  • # Generamos las tres capas
  • model.add(layers.LSTM(64, input_shape=(32, 32)))
  • model.add(layers.BatchNormalization())
  • model.add(layers.Dense(10))
  • print(model.summary())

 

Recopilando:

Si tenemos que algo que destacar de Keras es la simplicidad de uso, si tenemos en cuenta que estamos ablando del entorno Deep-Learning. Las Recurrent-Neural-Network (RNN) tienen cierta complicación en un principio, pero una vez en caminado la funcionalidad, el tema mejora notablemente.