Blog
Curso de Redes Neuronales Recurrentes
- Publicado por: Rafael Fernandez
- Categoría: Deep Learning
-En esta lección obtendrá un curso intensivo en Redes Neuronales Recurrentes para un aprendizaje profundo, adquiriendo el conocimiento suficiente para empezar a utilizar las redes LSTM en Python con Keras.
-Las limitaciones de las percepciones multicapa a las que se enfrentan las redes neuronales recurrentes.
-Los problemas que deben ser abordados para que las redes neuronales recurrentes sean útiles.
-Los detalles de las redes de memoria a corto plazo utilizadas en el aprendizaje profundo aplicado.
Hay un tipo de red neuronal que domina los problemas de aprendizajes que involucran secuencias de entradas llamadas Redes Neuronales Recurrentes. Estas redes neuronales soportan conexiones que tienen bucles, añadiendo retroalimentación y memoria a las redes con el tiempo. Esto permite a este tipo de red aprender y generalizar a través de secuencias de entradas en lugar de los patrones individuales.
Un poderoso tipo de Red Neural Recurrente es la llamada Red de Memoria a Largo Corto Plazo por sus siglas en inglés LSTM ha demostrado ser particularmente eficaz cuando se apila en una congestión profunda, logrando resultados de vanguardia en una amplia gama de problemas, desde la traducción de idiomas hasta la traducción automática de imágenes y vídeos.
Soporte para Secuencias en Redes Neuronales
Hay algunos tipos de problemas que involucran ya sea una secuencia como una entrada o una salida. Por ejemplo, considere un problema de series de tiempo univariadas, como el precio de una acción sobre tiempo.
Este conjunto de datos se puede enmarcar como un problema de predicción para una red de Perceptron multicapa anticipada clásica definiendo un tamaño de ventana (por ejemplo, 5) y entrenando la red para aprender a hacer predicciones a corto plazo desde la ventana de entradas de tamaño fijo. Esto funcionaría, pero es muy limitado. La ventana de entradas añade memoria al problema, pero se limita a un número limitado de puntos y debe ser elegido con conocimiento de causa del problema. Una ventana ingenua no captaría las tendencias más amplias en minutos, horas y días que podrían ser relevantes para hacer una predicción. De una predicción a la siguiente, la red sólo conoce las entradas específicas que se le proporcionan. La predicción de series de tiempo univariadas es importante, pero hay problemas aún más interesantes que involucran las secuencias. Considere la siguiente taxonomía de problemas de secuencia que requieren un mapeo de una entrada a una salida:
- Uno a Muchos: salida de secuencia, para clasificación de imágenes.
- Muchos a Uno: entrada de secuencia, para la clasificación de sentimientos.
- Muchos a Muchos: secuencia de entrada y salida, para traducción automática.
- Mucho a Mucho sincronizado: secuencias sincronizadas de entrada y salida, para la videoclasificación.
También podemos ver que un ejemplo individual de entrada a salida sería un ejemplo de una red neuronal de alimentación clásica para una tarea de predicción como la clasificación de imágenes. El soporte para en las redes neuronales es una clase importante del problema y una en la que el aprendizaje profundo ha tenido resultados impresionantes. Los resultados más recientes han sido el uso de un tipo de red especialmente diseñado para problemas de secuencia llamadas Redes Neuronales Recurrentes.
Redes Neuronales Recurrentes
Las redes neuronales recurrentes o RNNs son un tipo especial de red neuronal diseñada para la secuenciación de problemas. Dada una red de alimentación estándar de Perceptrón multicapa, una red neuronal recurrente se puede pensar en la red como la adición de bucles a la arquitectura. Por ejemplo, cada neurona puede pasar su señal lateralmente (hacia los lados) además de enviarla a la siguiente capa. La salida de la red puede retroalimentarse como una entrada a la red con la siguiente entrada de vector y así sucesivamente.
Las conexiones recurrentes añaden estado o memoria a la red y le permiten aprender de forma más amplia abstracciones de las secuencias de entrada. El campo de las redes neuronales recurrentes está bien establecido con métodos populares. Para que las técnicas sean efectivas sobre problemas reales hay dos cuestiones principales para que la red fuera útil:
- Cómo entrenar la red con propagación hacia atrás o retropropagación (Backpropagation).
- Cómo evitar que los gradientes desaparezcan o exploten durante el entrenamiento.
Cómo entrenar redes neuronales recurrentes
La técnica básica para entrenar las redes neuronales de retroalimentación es retropropagar el error y actualizar los pesos de la red. La retropropagación se descompone en una red neuronal recurrente, debido a las conexiones recurrentes o en bucle. Esto fue solucionado con una modificación de la técnica de Backpropagation llamada Backpropagation Through Time o BPTT.
En lugar de realizar retropropagación en la red recurrente como se indica, la estructura de la red se desenrolla, donde se crean copias de las neuronas que tienen conexiones recurrentes.
Por ejemplo, una sola neurona con una conexión consigo misma (A->A) podría ser representada como dos neuronas con los mismos valores de peso (A->B). Esto permite que el gráfico cíclico de una red neuronal recurrente se convierta en un gráfico acíclico como una red neuronal clásica de retroalimentación, y se puede aplicar la retropropagación.
Cómo tener gradientes estables durante el entrenamiento
Cuando la retropropagación se utiliza en redes neuronales muy profundas y en redes neuronales recurrentes desenrolladas, los gradientes que se calculan para actualizar los pesos pueden volverse inestables. Pueden convertirse en números muy grandes llamados gradientes de explosión o en números muy pequeños los cuales generan el problema llamado el problema del gradiente de desaparición. Estos números grandes a su vez se utilizan para actualizar las ponderaciones en la red, lo que hace que la formación sea inestable y la red poco fiable. Este problema se alivia en las redes multicapa profundas de Perceptron mediante el uso de la función de Rectifier o con pre-entrenamientos. En las arquitecturas de redes neuronales recurrentes, este problema ha sido aliviado usando un nuevo tipo de arquitectura llamada Redes de Memoria a Corto-Largo Plazo que permiten entrenar a las redes recurrentes profundas.
Redes LSTM de Memoria a Corto-Largo
La red LSTM (Long Short-Term Memory) es una red neuronal recurrente que se entrena utilizando la retropropagación a través del tiempo y supera el problema del gradiente de desaparición. Como tal, puede utilizarse para crear grandes redes recurrentes, que a su vez pueden utilizarse para resolver problemas de secuencias difíciles en el aprendizaje de la máquina y lograr resultados de última generación. En lugar de las neuronas, las redes LSTM tienen bloques de memoria que están conectados en capas.
Un bloque tiene componentes que lo hacen más inteligente que una neurona clásica y una memoria para secuencias recientes. Un bloque contiene puertas que gestionan el estado y la salida del bloque. Una unidad opera sobre una secuencia de entrada y cada puerta dentro de una unidad utilizando la función de activación sigmoide para controlar si se disparan o no, haciendo condicional el cambio de estado y la adición de información a través de la unidad. Hay tres tipos de puertas dentro de esta unidad de memoria:
- Puerta olvidada: decide condicionalmente qué información descarta de la unidad.
- Puerta de entrada: decide condicionalmente qué valores de la entrada actualizan el estado de memoria.
- Puerta de salida: decide condicionalmente lo que se va a emitir basándose en la entrada y la unidad de memoria.
Cada unidad es como una mini máquina de estado donde las puertas de las unidades tienen pesos que son aprendidos durante el procedimiento de entrenamiento. Usted puede ver cómo puede lograr un aprendizaje sofisticado y memoria de una capa de LSTMs, y no es difícil imaginar cómo las abstracciones de orden superior pueden estar recubiertas con múltiples capas de este tipo.
➡ ¿Quieres aprender mas de Deep Learning? Ingresa a nuestro curso:
[…] Un poderoso tipo de red neuronal diseñada para manejar secuencias la dependencia se llaman Redes Neuronales Recurrentes. Las redes de memoria larga-corto plazo por sus siglas LSTM es un tipo de red neuronal recurrente […]
[…] Un poderoso tipo de red neuronal diseñada para manejar secuencias la dependencia se llaman Redes Neuronales Recurrentes. Las redes de memoria larga-corto plazo por sus siglas LSTM es un tipo de red neuronal recurrente […]
[…] descubrirá cómo crear un modelo generativo de texto, carácter por carácter, utilizando las redes neuronales recurrentes de LSTM en Python con Keras. Después de completar este proyecto usted […]