En el tema anterior vimos que las RNN fueron un avance importante para el procesamiento de secuencias, pero también arrastraban una limitación seria: les costaba conservar información relevante durante muchos pasos.
Para enfrentar ese problema surgieron arquitecturas recurrentes más sofisticadas, entre las que se destacan LSTM y GRU. Ambas fueron diseñadas para manejar mejor la memoria en secuencias largas y estabilizar el aprendizaje.
Una RNN simple actualiza su estado oculto en cada paso, pero no controla de manera muy refinada qué información debe conservar y qué información debe descartar. Como consecuencia, las señales importantes pueden perderse con el tiempo.
Esto es especialmente problemático cuando la interpretación de una palabra depende de algo que apareció muchas posiciones antes. En teoría la RNN puede manejarlo, pero en la práctica suele fallar.
La innovación principal de LSTM y GRU fue introducir mecanismos explícitos para regular qué información entra, cuál se mantiene, cuál se actualiza y cuál se olvida.
En lugar de tratar toda la memoria interna como un bloque único que cambia en cada paso, estas arquitecturas incorporan compuertas que actúan como filtros dinámicos.
Estas compuertas no son reglas programadas a mano. Son partes aprendidas del modelo que se ajustan durante el entrenamiento.
Una compuerta puede pensarse como un mecanismo que decide cuánto de cierta información debe pasar y cuánto debe bloquearse. Gracias a estas decisiones, la red puede conservar señales importantes y evitar que otras irrelevantes saturen la memoria.
La palabra clave aquí es control. Mientras una RNN simple actualiza su estado de manera más directa, LSTM y GRU incorporan una gestión más fina del contexto.
LSTM significa Long Short-Term Memory. El nombre refleja su objetivo: combinar una memoria de corto plazo con un mecanismo que permita preservar información útil a más largo plazo.
La arquitectura introduce un estado de celda que funciona como canal principal de memoria, acompañado por compuertas que regulan cómo se actualiza ese estado.
La intuición es que la red no solo procesa la entrada actual, sino que decide activamente qué recordar y qué olvidar.
Sin entrar en toda la formulación matemática, una LSTM clásica suele incluir tres mecanismos conceptuales muy importantes:
Gracias a esta estructura, la red puede transportar información relevante durante más tiempo que una RNN simple.
El estado de celda de una LSTM puede verse como una cinta de memoria que atraviesa la secuencia. Las compuertas deciden cuánto modificar esa cinta en cada paso.
Si aparece información importante al comienzo de una oración, la arquitectura puede aprender a preservarla hasta más adelante, en lugar de dejar que se diluya rápidamente.
GRU significa Gated Recurrent Unit. También utiliza compuertas, pero con una estructura más compacta que la LSTM.
La idea general es similar: mejorar el flujo de información y reducir los problemas de dependencia larga. Sin embargo, GRU simplifica algunos componentes y fusiona ciertas funciones en menos mecanismos.
Esto hace que, en muchos casos, sea más ligera y más rápida de entrenar.
En términos conceptuales, una GRU suele trabajar con dos controles principales:
Aunque la formulación interna difiere de la LSTM, la meta es la misma: manejar mejor la memoria y facilitar el aprendizaje en secuencias.
Ambas arquitecturas buscan resolver el mismo problema, pero lo hacen con distintos niveles de complejidad.
En algunos problemas LSTM puede rendir mejor. En otros, GRU logra resultados comparables con una implementación más simple. No existe una ganadora universal.
La mejora principal es su mayor capacidad para conservar información útil a lo largo del tiempo. Esto reduce, aunque no elimina por completo, los problemas asociados al desvanecimiento del gradiente.
En consecuencia, LSTM y GRU suelen capturar dependencias más largas que una RNN simple y entrenarse de manera más estable en muchas tareas secuenciales.
Imaginemos una oración como "Aunque la trama parecía lenta al principio, la película termina siendo extraordinaria". Para interpretar correctamente el sentimiento final, el modelo necesita conservar información que aparece bastante después del comienzo.
Una arquitectura con mejor manejo de memoria tiene más posibilidades de integrar esas partes distantes de la secuencia sin perder el hilo general.
Antes del auge de Transformers, LSTM y GRU fueron muy utilizadas en modelado de lenguaje. Su capacidad de procesar secuencias y mantener contexto las volvió especialmente adecuadas para predecir el siguiente token.
También se emplearon ampliamente en generación de texto y en sistemas secuencia a secuencia.
En clasificación de documentos, una LSTM o GRU puede recorrer la secuencia y producir una representación final que resuma el texto. Esa representación se usa luego para decidir la clase.
Esto fue muy valioso en tareas como análisis de sentimiento, detección de intención y clasificación temática, especialmente cuando el orden de las palabras influye en la interpretación.
Estas arquitecturas también fueron aplicadas a tareas donde se necesita una salida por token, como reconocimiento de entidades o etiquetado gramatical. En esos casos, el modelo produce representaciones contextualizadas para cada posición.
Las versiones bidireccionales resultaron especialmente útiles, porque combinan información del pasado y del futuro relativo de cada palabra.
Al igual que con las RNN simples, tanto LSTM como GRU pueden utilizarse en forma bidireccional. Esto significa que una red procesa la secuencia de izquierda a derecha y otra de derecha a izquierda.
Luego se combinan ambas representaciones. Así, cada token queda descrito por contexto previo y posterior, algo muy útil cuando la interpretación depende de ambos lados.
LSTM y GRU fueron tan importantes porque ofrecieron ventajas claras sobre las RNN simples:
Aunque mejoraron mucho el panorama, LSTM y GRU no resolvieron todos los problemas. Seguían procesando la secuencia paso a paso, lo cual dificulta la paralelización y vuelve el entrenamiento más lento.
Además, aun con compuertas, manejar dependencias extremadamente largas seguía siendo complejo. Estas limitaciones prepararon el terreno para nuevas ideas como la atención.
En comparación con una RNN simple, una LSTM suele tener más parámetros y una estructura más compleja. GRU reduce parte de ese costo, pero ambas siguen siendo arquitecturas recurrentes con procesamiento secuencial.
Por eso, la elección entre RNN, LSTM y GRU siempre dependió del equilibrio entre capacidad, costo y dificultad del problema.
| Arquitectura | Fortaleza principal | Limitación principal |
|---|---|---|
| RNN simple | Modelo secuencial básico y directo. | Memoria débil en dependencias largas. |
| LSTM | Mayor control de memoria y contexto. | Más complejidad y más parámetros. |
| GRU | Diseño más compacto con buen rendimiento. | Menor expresividad estructural que LSTM en algunos casos. |
Este ejemplo usa la misma entrada para una LSTM y una GRU, lo que permite ver que ambas reciben secuencias de forma parecida, aunque internamente manejen la memoria de manera distinta.
import torch
import torch.nn as nn
x = torch.randn(3, 5, 10) # batch=3, longitud=5, features=10
lstm = nn.LSTM(input_size=10, hidden_size=16, batch_first=True)
gru = nn.GRU(input_size=10, hidden_size=16, batch_first=True)
salida_lstm, (h_lstm, c_lstm) = lstm(x)
salida_gru, h_gru = gru(x)
print("LSTM salida:", salida_lstm.shape)
print("LSTM hidden:", h_lstm.shape)
print("LSTM cell:", c_lstm.shape)
print("GRU salida:", salida_gru.shape)
print("GRU hidden:", h_gru.shape)
La comparación es útil porque deja ver que la LSTM mantiene explícitamente un estado adicional de celda, mientras que la GRU usa una estructura más compacta. Esa diferencia resume buena parte de la discusión conceptual del tema.
LSTM y GRU marcaron una etapa decisiva en la evolución del NLP neuronal porque mostraron que no bastaba con procesar secuencias: también hacía falta administrar la memoria de manera inteligente.
Gracias a sus compuertas, estas arquitecturas lograron mejorar notablemente el manejo del contexto y dominaron durante años buena parte de las tareas secuenciales en lenguaje natural.
En el próximo tema estudiaremos el mecanismo de atención, una idea que cambió otra vez el panorama al permitir que el modelo decida directamente en qué partes de la secuencia conviene enfocarse.