Una red neuronal recurrente, o RNN, es una arquitectura de red neuronal diseñada para procesar datos secuenciales manteniendo un estado oculto interno que se actualiza en cada paso y se traslada hacia adelante para influir en cómo se procesan las entradas posteriores. A diferencia de las redes feedforward, que mapean una entrada fija a una salida fija sin memoria de entradas previas, las RNN comparten los mismos pesos en cada paso de una secuencia y, en principio, pueden usar información de cualquier punto arbitrariamente lejano en esa secuencia para informar cada nueva predicción.
Historia
Las arquitecturas recurrentes tempranas incluían la red de Hopfield de 1982 de John Hopfield, un modelo de memoria asociativa, y la red recurrente simple propuesta por Jeffrey Elman en 1990, que mostró que una red podía aprender a representar la estructura gramatical en un flujo de palabras sin que se le dieran las reglas explícitamente. A lo largo de los años 1990 y 2000, las RNNs fueron la arquitectura predeterminada para tareas de secuencias en procesamiento de lenguaje natural y reconocimiento de voz, pero las RNNs simples resultaron difíciles de entrenar en secuencias largas porque los gradientes calculados mediante retropropagación a través del tiempo tienden a encogerse o explotar exponencialmente con la duración de la secuencia, un problema analizado formalmente por Sepp Hochreiter en 1991. Este problema de gradientes que desaparecen o explotan motivó la arquitectura LSTM en 1997 y, más tarde, la unidad recurrente cerrada más simple, ambas añadieron mecanismos de compuerta que permiten que los gradientes fluyan más establemente a través de muchos pasos.
Arquitectura y entrenamiento
Una RNN procesa una secuencia un elemento a la vez, combinando la entrada actual con el estado oculto llevado desde el paso anterior para producir un nuevo estado oculto y, opcionalmente, una salida en ese paso. El entrenamiento usa retropropagación a través del tiempo, que desenrolla el cálculo recurrente a través de todos los pasos de una secuencia y aplica el descenso de gradiente ordinario a la red resultante, efectivamente muy profunda, desenrollada. Este desenrollado es también el principal inconveniente computacional de las RNNs: como cada paso depende de la salida del anterior, la secuencia debe procesarse mayormente paso a paso en vez de en paralelo, haciendo que las RNNs sean lentas de entrenar en las secuencias largas y los conjuntos de datos grandes que se volvieron estándares en los años 2010.
Apogeo y declive
Las RNNs, y particularmente las variantes LSTM apiladas, impulsaron la primera generación de sistemas prácticos de traducción automática y de voz a través de arquitecturas como Seq2seq, introducidas en 2014, que emparejaban un RNN codificador que comprimía una secuencia de entrada en un vector fijo con un RNN decodificador que generaba la secuencia de salida a partir de él. Los mecanismos de atención, añadidos a los modelos seq2seq alrededor de 2015 para permitir que el decodificador se utilizara de regreso en todos los estados del codificador en lugar de depender de un solo vector comprimido, tanto mejoraron la calidad de la traducción como prepararon el escenario para la arquitectura Transformer (architecture) de 2017, que descartó la recurrencia por completo en favor de la auto-atención y podía entrenarse completamente en paralelo. Debido a que los transformadores superaron el rendimiento de las RNNs mientras se entrenaban mucho más rápido en el hardware de GPU (in AI) disponible en ese momento, desplazaron a las RNNs como la arquitectura de secuencias dominante para modelos de lenguaje grandes y la mayor parte del procesamiento del lenguaje natural en pocos años.
Legado
Las RNNs siguen siendo utilizadas en configuraciones con límites estrictos de memoria o latencia y en algunas aplicaciones de series temporales y control, y su idea central, que un estado oculto de tamaño fijo puede resolver un historial de longitud ilimitada, resurgió a mediados de los años 2020 en modelos de espacio de estados como Mamba, que buscan combinar una inferencia temporal lineal similar a una RNN con una eficiencia de entrenamiento más cercana a los transformadores.