26 · GRU: un LSTM más simple
GRU fusiona los gates de olvido y entrada del LSTM en un único gate de actualización — menos parámetros, rendimiento comparable en la mayoría de tareas, reemplazo directo.
GRU fusiona los gates de olvido y entrada del LSTM en un único 'gate de actualización' — menos parámetros, rendimiento comparable en la mayoría de tareas.
Sin esto:
LSTM es la respuesta conocida; GRU es la alternativa más ligera que a menudo la iguala.
El LSTM resolvió el problema del gradiente desvanecido, pero la solución vino con cuatro conjuntos de pesos de gates — aproximadamente cuatro veces el conteo de parámetros de una RNN vanilla. En 2014, Cho et al. se preguntaron: ¿es realmente necesaria toda esa complejidad?
La Unidad Recurrente con Gates (GRU) es su respuesta. GRU reduce el LSTM a su mecanismo esencial. Observa que el gate de olvido y el gate de entrada son complementarios — si olvidas mucho, deberías estar escribiendo mucha información nueva, y viceversa. GRU impone esta restricción explícitamente usando un único gate de actualización z_t que simultáneamente controla cuánto del estado antiguo conservar y cuánto del nuevo candidato escribir. El valor del gate de actualización z_t controla el olvido y la escritura; 1 - z_t es el coeficiente complementario.
GRU también elimina el estado de celda separado. Solo existe un estado oculto h_t, y desempeña el papel tanto del estado de celda como del estado oculto en LSTM. Esta simplificación reduce el número de matrices de pesos de gates de 4 (LSTM) a 3 (GRU), reduciendo parámetros en aproximadamente un 25%.
El resultado es una arquitectura que es:
- Más rápida de entrenar — menos parámetros, grafo de computación más simple.
- Más eficiente en memoria — sin tensor de estado de celda separado para almacenar.
- Empíricamente competitiva — en muchos benchmarks GRU y LSTM están dentro del 1% entre sí.
Ecuaciones GRU: 2 gates (actualización + reset), sin estado de celda separado
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
GRU vs LSTM: arquitectura, conteo de parámetros y comparación empírica
Read-along de PyTorch: nn.GRU como reemplazo directo de nn.LSTM
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
¿En qué se diferencia GRU de LSTM arquitectónicamente?
- GRU tiene 2 gates (actualización + reset) y sin estado de celda separado — un estado oculto h_t desempeña ambos roles.
- GRU tiene ~25% menos parámetros que LSTM (3 matrices de pesos vs 4) para el mismo tamaño oculto y es un reemplazo directo mediante nn.GRU.
- En la práctica: prueba GRU primero para velocidad; prueba LSTM si sospechas dependencias de muy largo alcance y tienes suficientes datos para explotar la capacidad adicional.
GRU es la opción preferida en producción donde importa la latencia — menos parámetros significa inferencia más rápida. Los GRUs bidireccionales potencian muchos sistemas de voz y traducción en dispositivo. El paper original de traducción automática neuronal seq2seq (Cho et al. 2014) usó GRUs.
Si lo quitas: Solo conocerías LSTM como la opción con gates, perdiendo una alternativa más ligera que es estándar en despliegues con recursos limitados y en la literatura seq2seq.