Gated Recurrent Unit (GRU)
Una unidad recurrente con compuertas (GRU) es una célula recurrente cuyas compuertas de actualización y reinicio controlan qué recuerda. Incluye sus ecuaciones, la comparación entre GRU y LSTM, y código.
Una unidad recurrente con compuertas (GRU) es una celda de red neuronal recurrente (RNN) que procesa una secuencia paso a paso y utiliza dos compuertas aprendidas, una de actualización y otra de reinicio, para decidir cuánta memoria conservar y cuánta sobrescribir en cada paso. Kyunghyun Cho y sus colegas la presentaron en 2014 en un codificador-decodificador RNN para la traducción automática. Las compuertas permiten que los gradientes fluyan a lo largo de muchos pasos temporales, por lo que una GRU aprende dependencias de más largo alcance que una RNN simple, afectada por el problema del desvanecimiento del gradiente. La GRU es una variante simplificada de la red de memoria a corto y largo plazo (LSTM), con un estado oculto en lugar de dos y tres bloques de pesos en lugar de cuatro, y se utiliza para el análisis de series temporales, el habla y otros datos secuenciales.
Cómo funciona una GRU#
En cada paso temporal t, una GRU combina la entrada actual xₜ con su estado oculto anterior hₜ₋₁. Dos compuertas utilizan la función sigmoide para generar valores entre 0 y 1 para cada elemento del estado:
- Compuerta de reinicio: rₜ = σ(Wᵣxₜ + Uᵣhₜ₋₁ + bᵣ) decide cuánto del estado anterior se utiliza al proponer contenido nuevo. Los valores cercanos a 0 permiten que la celda ignore su historial, lo que resulta útil en límites como el inicio de una frase nueva.
- Compuerta de actualización: zₜ = σ(W_z xₜ + U_z hₜ₋₁ + b_z) decide cuánto se conserva del estado anterior. Los valores cercanos a 1 copian el estado anterior casi sin cambios, lo que permite que la información perdure durante intervalos largos.
- Estado candidato: h̃ₜ = tanh(Wxₜ + U(rₜ ⊙ hₜ₋₁) + b) propone contenido nuevo a partir de la entrada y del historial escalado por el reinicio, y utiliza tanh para mantener los valores entre −1 y 1.
- Estado nuevo: hₜ = (1 − zₜ) ⊙ h̃ₜ + zₜ ⊙ hₜ₋₁ combina el estado candidato con el anterior, elemento a elemento.
Cuando la compuerta de actualización se mantiene cerca de 1, el estado nuevo es casi una copia del anterior y el gradiente retrocede por esa copia con poco decaimiento. Esta vía aditiva cumple la misma función que el estado de celda de una LSTM. Las ecuaciones anteriores siguen el artículo original, donde zₜ pondera el estado anterior; algunos textos intercambian las funciones de zₜ y 1 − zₜ, lo que describe la misma celda. La nn.GRU de PyTorch utiliza la misma combinación, pero aplica la compuerta de reinicio después de la multiplicación matricial, como rₜ ⊙ (Uhₜ₋₁ + b), una variante muy utilizada del estado candidato.
GRU en PyTorch#
El fragmento siguiente ejecuta una GRU sobre una secuencia de vectores de características, como las características por fotograma de un vídeo, y compara su tamaño con el de una LSTM del mismo ancho:
import torch
from torch import nn
# A sequence of 64-dim features from 5 video frames: (batch, time, features)
frames = torch.randn(1, 5, 64)
# A GRU with a 128-dim hidden state, and an LSTM of the same size for comparison
gru = nn.GRU(input_size=64, hidden_size=128, batch_first=True)
lstm = nn.LSTM(input_size=64, hidden_size=128, batch_first=True)
# outputs holds the hidden state at every step; h_n is the final state
outputs, h_n = gru(frames)
print(f"Outputs: {tuple(outputs.shape)}, final state: {tuple(h_n.shape)}")
# GRU weights cover 3 blocks (reset, update, candidate); LSTM weights cover 4
gru_params = sum(p.numel() for p in gru.parameters())
lstm_params = sum(p.numel() for p in lstm.parameters())
print(f"GRU: {gru_params:,} parameters, LSTM: {lstm_params:,} parameters")Imprime Outputs: (1, 5, 128), final state: (1, 1, 128) y GRU: 74,496 parameters, LSTM: 99,328 parameters. La GRU devuelve un estado de 128 dimensiones por fotograma, además del estado final, que resume toda la secuencia para un clasificador posterior, y necesita exactamente tres cuartas partes de los parámetros de la LSTM.
GRU, LSTM y Transformers#
- LSTM: Mantiene un estado de celda separado junto al estado oculto y utiliza tres compuertas (entrada, olvido y salida). La GRU combina ambos estados y elimina la compuerta de salida, por lo que se entrena más rápido en cada paso y tiene menos parámetros. En una comparación empírica de Junyoung Chung y sus colegas de 2014, las GRU igualaron a las LSTM en la modelización de música polifónica y señales de habla y, en la práctica, ninguna supera sistemáticamente a la otra en todas las tareas.
- RNN simple: Sobrescribe todo su estado en cada paso sin utilizar compuertas, por lo que sus gradientes se desvanecen o explotan en secuencias largas y le cuesta conectar acontecimientos separados por intervalos prolongados.
- Transformer: Procesa en paralelo todas las posiciones de una secuencia mediante atención, lo que acelera mucho el entrenamiento en GPU y permite gestionar mejor el contexto de largo alcance; por eso los Transformers sustituyeron a las redes recurrentes en la mayoría de las tareas lingüísticas. Una GRU conserva un estado de tamaño constante y un coste constante por paso, independientemente de la longitud de la secuencia, lo que sigue siendo adecuado para audio en streaming, datos de sensores y dispositivos pequeños.
Aplicaciones#
- Flujo óptico: RAFT, ganador del premio al mejor artículo de ECCV 2020, refina su estimación del flujo durante muchas iteraciones con una GRU convolucional, una GRU en la que las multiplicaciones matriciales se sustituyen por convoluciones, de modo que su estado es un mapa de características.
- Mantenimiento predictivo y previsión: Las GRU procesan flujos de datos de vibración, temperatura o demanda, y predicen fallos o valores futuros, a menudo en hardware integrado donde es importante que el modelo sea pequeño.
- Habla y audio: Los modelos de audio en el dispositivo utilizan GRU porque procesan el audio fotograma a fotograma con poca memoria fija. El supresor de ruido RNNoise ejecuta sus capas GRU en tiempo real en una CPU convencional.
- Reconocimiento de acciones: Una GRU procesa una secuencia de características o puntos clave por fotograma y genera una etiqueta de acción para el clip. YOLO26, en modo de seguimiento, asigna a cada persona un ID persistente entre fotogramas, lo que genera las secuencias por persona de cuadros delimitadores o puntos clave de pose que clasifica una GRU de este tipo.










