¿Qué son los algoritmos recurrentes de redes neuronales?

La idea detrás de los RNN es hacer uso de información secuencial. En una red neuronal tradicional suponemos que todas las entradas (y salidas) son independientes entre sí. Pero para muchas tareas es una muy mala idea. Si desea predecir la siguiente palabra en una oración, es mejor que sepa qué palabras llegaron antes. Los RNN se denominan recurrentes porque realizan la misma tarea para cada elemento de una secuencia, y la salida depende de los cálculos anteriores. Otra forma de pensar acerca de los RNN es que tienen una “memoria” que captura información sobre lo que se ha calculado hasta ahora. En teoría, los RNN pueden hacer uso de la información en secuencias arbitrariamente largas, pero en la práctica se limitan a mirar hacia atrás solo unos pocos pasos (más sobre esto más adelante). Así es como se ve un RNN típico:

Una red neuronal recurrente y el despliegue en el tiempo del cómputo involucrado en su cómputo directo. Fuente: naturaleza

El diagrama anterior muestra un RNN desenrollado (o desplegado) en una red completa. Al desenrollar simplemente queremos decir que escribimos la red para la secuencia completa. Por ejemplo, si la secuencia que nos interesa es una oración de 5 palabras, la red se desenrollaría en una red neuronal de 5 capas, una capa para cada palabra. Las fórmulas que rigen el cálculo que ocurre en un RNN son las siguientes:

  • es la entrada en el paso de tiempo. Por ejemplo, podría ser un vector único que corresponde a la segunda palabra de una oración.
  • es el estado oculto en el paso de tiempo. Es la “memoria” de la red. se calcula en función del estado oculto anterior y la entrada en el paso actual:. La función generalmente es una no linealidad como tanh o ReLU. , que se requiere para calcular el primer estado oculto, generalmente se inicializa a todos los ceros.
  • es la salida en el paso. Por ejemplo, si quisiéramos predecir la siguiente palabra en una oración, sería un vector de probabilidades en nuestro vocabulario. .

Para más información puedes consultar AI Journal

Puede consultar el siguiente video para obtener una explicación detallada:

Comencemos por entender por qué necesitamos redes neuronales recurrentes.

Suponga que desea que su red prediga la siguiente palabra en una oración. Para hacer eso, necesita las salidas / palabras anteriores, para predecir la siguiente palabra.

En las redes Feedforward, cada salida es independiente de la salida anterior. Básicamente, la salida en el tiempo ‘t’ es independiente de la salida en el tiempo ‘t-1’. Entonces, claramente no podemos usar una red Feedforward.

Para tales problemas de datos dependientes de la secuencia, necesitamos redes neuronales recurrentes.

Aquí la salida en la marca de tiempo anterior se da como la entrada a la siguiente marca de tiempo. En la ecuación, para obtener la nueva ‘ h ‘, debe multiplicar ‘ Wr ‘ con el valor ‘ h ‘ en la marca de tiempo anterior, luego agregar el sesgo ‘ Bh ‘ junto con la multiplicación de ‘ Wi ‘ e ingresar ‘ X ‘. Finalmente, pase este valor a través de una función para obtener el nuevo valor ‘ h ‘, de modo que pueda obtener la salida para esa marca de tiempo utilizando la ecuación ‘ y ‘.

Las redes neuronales recurrentes son un tipo de red neuronal artificial diseñada para reconocer patrones en secuencias de datos, como texto, genomas, escritura a mano, la palabra hablada o datos de series de tiempo numéricas que emanan de sensores, mercados bursátiles y agencias gubernamentales.

A diferencia de FNN, RNN permite que cada neurona o unidad en la red obtenga información de una neurona previa.

En cuanto a todo en el campo de la informática, es más fácil entender el propósito a través del ejemplo que de la teoría.

Considere que está haciendo un programa de reconocimiento de voz que se basa en algún tipo de red para procesar los resultados de la entrada.

Consideremos un árbol con el nodo raíz de A y dos nodos secundarios: B y C.

Si el peso en el nodo raíz A (nodo de entrada) cambia el peso a favor de C, entonces la entrada pasa a C. Además, podemos definir recursivamente C como la ruta al nodo raíz A. Esto puede no parecer útil al principio mirada, pero en redes más grandes hace que la codificación sea mucho más fácil.

Personalmente intenté desarrollar una IA de reconocimiento de voz usando FNN, pero fallé en mi intento. Además, entrenar a un RNN es exponencialmente más fácil.

Espero que esto ayude..

More Interesting

¿Qué tan útil es la regresión del proceso gaussiano? ¿Tienes un buen ejemplo?

¿Debo usar TensorFlow o Caffe2 para comenzar a aprender el aprendizaje automático y el aprendizaje profundo?

¿Cuáles son los conceptos básicos de los campos aleatorios condicionales?

Conciencia del contexto: ¿Qué es el descubrimiento de noticias anticipatorio?

¿Puedo usar el algoritmo de aprendizaje automático en mi proyecto de investigación aunque no soy un experto en él?

¿Existe algún proyecto de datos abiertos que utilice el aprendizaje automático y la ciencia de datos para proporcionar información sobre los datos de incidentes de aplicación de la ley disponibles públicamente?

¿Cómo aprendo el aprendizaje automático y el procesamiento de imágenes para aplicaciones móviles? Por ejemplo, para usar los mismos efectos de filtro en aplicaciones iOS y Android, ¿debería usar Python?

¿Se puede utilizar el análisis semántico latente para la clasificación de documentos?

¿Qué hacen los ingenieros de aprendizaje automático diariamente?

¿Cuál es una mejor manera de comenzar a aprender Ciencia de Datos, a través de cursos en línea o en un Instituto de capacitación?

¿Cómo se conecta la regresión lineal a los filtros de Kalman?

¿La mayoría de los algoritmos de aprendizaje automático se ejecutan en lotes, o se ejecutan cada vez que obtienen un nuevo bit de datos?

Cómo llegar a un problema de aprendizaje automático para un proyecto personal

¿La investigación actual sobre el procesamiento del lenguaje natural gira principalmente en torno al aprendizaje profundo? Si no, ¿cuáles son las técnicas modernas alternativas?

Cómo especificar si quiero ejecutar una función de paquete Caret para clasificación o regresión