Una RNN, o red neuronal recurrente, es una red neuronal diseñada para secuencias como texto, voz o series temporales. En cada paso, combina la entrada actual con un estado oculto del paso anterior, de modo que la salida puede depender de lo que ocurrió antes.

Esa es la idea clave: una RNN tiene una memoria en marcha. Una LSTM es un tipo de RNN con compuertas que gestiona esa memoria con más cuidado cuando la información importante debe mantenerse durante muchos pasos.

Qué hace una RNN en cada paso temporal

En el paso temporal tt, una RNN simple actualiza su estado oculto con una regla como

ht=tanh(Wxxt+Whht1+b).h_t = \tanh(W_x x_t + W_h h_{t-1} + b).

Aquí xtx_t es la entrada actual, ht1h_{t-1} es el estado oculto anterior y hth_t es el nuevo estado oculto. Las matrices WxW_x y WhW_h y el sesgo bb se aprenden durante el entrenamiento.

Si el modelo también produce una salida en cada paso, una forma común es

yt=Wyht+c.y_t = W_y h_t + c.

La regla exacta de salida depende de la tarea. Algunos problemas necesitan una salida por paso, mientras que otros usan solo el estado oculto final.

Por qué importa el estado oculto

Una red feedforward ve una entrada y sigue adelante. Una RNN reutiliza parte de su cálculo anterior. Esa reutilización es lo que la hace útil para texto, voz, series temporales y otros datos ordenados.

Puedes pensar en el estado oculto como una nota compacta que el modelo se escribe a sí mismo después de cada paso. El siguiente paso lee esa nota, la actualiza y pasa la versión revisada hacia adelante.

Si cambias el orden de las mismas entradas, los estados ocultos normalmente también cambian. El orden de la secuencia importa.

Ejemplo resuelto de RNN

Las RNN reales suelen usar vectores y activaciones no lineales. Para que las cuentas sean fáciles de seguir, usa un ejemplo simple con un estado de un solo número:

ht=0.5ht1+xt,h0=0.h_t = 0.5 h_{t-1} + x_t, \quad h_0 = 0.

Ahora procesa la secuencia x1=2x_1 = 2, x2=1x_2 = -1, x3=3x_3 = 3.

Primer paso:

h1=0.5(0)+2=2.h_1 = 0.5(0) + 2 = 2.

Segundo paso:

h2=0.5(2)+(1)=0.h_2 = 0.5(2) + (-1) = 0.

Tercer paso:

h3=0.5(0)+3=3.h_3 = 0.5(0) + 3 = 3.

Lo importante aquí no es la fórmula exacta. Es la dependencia del estado anterior. En el paso 2, la actualización no usa solo x2x_2; también usa lo que se arrastró desde el paso 1. Esa es la idea central de una RNN.

Si cambias el orden y usas x1=1x_1 = -1, x2=2x_2 = 2, x3=3x_3 = 3, entonces

h1=1,h2=0.5(1)+2=1.5,h3=0.5(1.5)+3=3.75.h_1 = -1, \quad h_2 = 0.5(-1) + 2 = 1.5, \quad h_3 = 0.5(1.5) + 3 = 3.75.

El estado final es distinto aunque aparezcan los mismos números. Esa es exactamente la razón por la que las RNN son modelos de secuencia y no modelos de bolsa de entradas.

Por qué las RNN básicas tienen dificultades con secuencias largas

En una RNN básica, la información antigua tiene que sobrevivir a muchas actualizaciones repetidas. Si la secuencia es larga, eso puede ser difícil. Las señales útiles pueden desvanecerse y, durante el entrenamiento, los gradientes también pueden reducirse demasiado o explotar a lo largo de muchos pasos.

Por eso las RNN simples suelen tener problemas cuando la tarea depende de información que apareció mucho antes en la secuencia. El problema no es que la recurrencia esté mal. El problema es que la memoria a largo plazo es difícil de mantener con una actualización simple del estado oculto.

Cómo LSTM mejora la memoria de una RNN

Una LSTM, abreviatura de long short-term memory, es una RNN con compuertas. Introduce una ruta de memoria más estructurada, normalmente llamada estado de celda, además de compuertas que controlan qué información se olvida, qué información nueva se escribe y qué parte se expone como salida.

No necesitas las ecuaciones completas de las compuertas para entender la idea. El diseño le da al modelo más control sobre la memoria. Si un detalle debe sobrevivir durante muchos pasos, una LSTM está mejor preparada para conservarlo que una RNN simple.

Eso no significa que una LSTM recuerde todo para siempre. Significa que la arquitectura aprende mejor cuándo conservar información y cuándo descartarla.

RNN vs. LSTM en lenguaje sencillo

Una RNN básica tiene un único estado en marcha y lo actualiza repetidamente. Una LSTM añade un mecanismo de memoria más potente alrededor de esa idea.

Si la secuencia es corta y la dependencia es local, una RNN simple puede ser suficiente. Si la tarea depende de información de mucho antes en la secuencia, una LSTM suele ser la opción más segura.

Errores comunes sobre RNN y LSTM

Pensar que una RNN ve toda la secuencia de una vez

Normalmente no. La imagen estándar es un procesamiento paso a paso, con el estado llevándose hacia adelante.

Suponer que LSTM resuelve la memoria perfectamente

Ayuda con las dependencias de largo alcance, pero sigue siendo un modelo entrenado con capacidad finita y límites prácticos.

Ignorar el orden de la secuencia

Las RNN están hechas para datos ordenados. Reordenar los elementos de la secuencia cambia el cálculo.

Tratar el estado oculto como si fuera memoria legible por humanos

El estado oculto es una representación numérica aprendida, no un resumen limpio parecido a una frase.

Cuándo se usan las RNN y las LSTM

Se usan en problemas de secuencias como modelado del lenguaje, voz, escritura a mano, flujos de sensores y predicción de series temporales. Hoy en día, muchas tareas de lenguaje usan transformers en su lugar, pero las RNN y las LSTM siguen siendo importantes porque enseñan con claridad la memoria en secuencias y todavía pueden ser útiles en contextos más pequeños o especializados.

Prueba tu propia versión

Escribe una secuencia de cuatro pasos y aplica la regla simple ht=0.5ht1+xth_t = 0.5 h_{t-1} + x_t. Luego intercambia el orden de dos entradas y compara el estado final. Ese pequeño experimento deja mucho más claro el papel de la recurrencia que el acrónimo por sí solo.

Si quieres explorar otro caso, compara esta página con una explicación sobre transformers o cadenas de Markov y fíjate en qué hace cada modelo con la información pasada.

¿Necesitas ayuda con un problema?

Sube tu pregunta y obtén una solución verificada, paso a paso, en segundos.

Abrir GPAI Solver →