# Red neuronal recurrente

Red Neuronal Recurrente (RNN): La estructura de una red neuronal artificial es relativamente simple y se refiere principalmente a la multiplicación de matrices. Durante el primer paso, las entradas se multiplican por pesos inicialmente aleatorios, y sesgo, transformados con una función de activación y los valores de salida se utilizan para hacer una predicción. Este paso da una idea de lo lejos que está la red de la realidad.
| Red neuronal clásica | Red neuronal recurrente |
| Los vectores de entrada producen vectores de salida | Tratan datos secuenciales de forma eficiente |
| No mezclan información entre ejecuciones | Recuerdan las salidas anteriores como entrada |
| Tratan una secuencia de datos de una sola vez | Pueden tratar secuencias muy largas, elemento a elemento |
El entrenamiento de una red neuronal recurrente debe prolongarse para cada paso temporal, lo que es muy costoso en tiempo de proceso y memoria RAM. Esto se simplifica “desenrollando” la red en tantas capas como pasos temporales o de datos se dispone en la secuencia temporal de entrenamiento, como si fuese una red no recurrente (feed-forward). Cada capa desenrollada tiene los mismos pesos para acelerar el proceso.
Como cuanto más larga sea la secuencia temporal a analizar, mayor será el número de capas debe desenrollar, puede aparecer el problema de desvanecimiento de gradiente (vanishing gradient). Esto se soluciona incorporando capas de tipo LSTM o GRU que permiten el backpropagation through time conectando eventos que aparezcan muy alejados en los datos de entrada, sin que su peso se diluye entre las capas.

## Historia

Las redes neuronales recurrentes fueron basadas en el trabajo de David Rumelhart en 1986. Las redes de Hopfield, un tipo especial de red recurrente, fueron descubiertas por John Hopfield en 1982. En 1993, un sistema compresor de historia neural resolvió una tarea "Very Deep Learning" que requirió desplegar más de 1000 capas de una red recurrente en un tiempo dado.

### LSTM

Las memorias largas a corto plazo (LSTM) fueron inventadas por Hochreiter ySchmidhuber en 1997 y establecieron récords de eficiencia en distintos ámbitos de aplicación.
Alrededor de 2007, las LSTM empezaron a revolucionar el reconocimiento del habla, superando ciertos modelos tradicionales en el campo. En 2009, una red LSTM entrenada con Connectionist Temporal Classification (CTC) fue la primera RNN en ganar una competición de reconocimiento de patrones, ganando distintas competiciones en reconocimiento de lenguaje escrito En 2014, la compañía china Baidu usó RNNs entrenadas con CTC para romper el dataset de reconocimiento del habla 2S09 Switchboard Hub5'00 sin emplear ningún método tradicional de reconocimiento de lenguaje hablado.
Las LSTM también han mejorado el reconocimiento del habla con vocabulario extenso y síntesis de text-to-speech y fueron utilizadas en Google Android. En 2015, el reconocimiento de voz de Google experimentó una mejora en su rendimiento del 49%, de acuerdo con sus fuentes gracias a una red LSTM CTC.
Las LSTM rompieron records en traducción automática, modelado de lenguaje, y procesamiento de lenguaje multilingüe. Una combinación de LSTM con redes neuronales convolucionales (CNNs) mejoró el subtitulado automático de imágenes.