Long Short-Term Memory (LSTM)
Uma LSTM é uma rede recorrente cujo estado celular com portas transporta informações ao longo de sequências extensas. Abrange suas portas, equações, comparação com GRU e código.
A memória de longo e curto prazo (LSTM) é uma arquitetura de rede neural recorrente (RNN) que acrescenta uma memória controlada por portas, o estado da célula, ao estado oculto de uma RNN simples. Assim, pode transportar informação ao longo de centenas ou milhares de passos temporais. Sepp Hochreiter e Jürgen Schmidhuber apresentaram-na em 1997 para resolver o problema do gradiente evanescente, que impede as RNNs simples de aprender dependências de longo alcance; o artigo demonstrou a ligação de intervalos temporais superiores a 1.000 passos. Na década de 2010, as LSTMs impulsionaram o reconhecimento de voz, a tradução automática e o reconhecimento de escrita manual, até os transformers assumirem a maioria das tarefas de linguagem. Continuam a ser comuns na análise de séries temporais, em fluxos de dados de sensores e em modelos executados no dispositivo, onde são importantes um estado de tamanho constante e um custo constante por passo.
Como funciona uma célula LSTM#
Em cada passo temporal t, uma LSTM lê a entrada xₜ e o estado oculto anterior hₜ₋₁ e calcula três portas e um candidato, cada um com os seus próprios pesos. As portas usam a função sigmoide, pelo que cada elemento fica entre 0 e 1; o candidato usa tanh, pelo que fica entre −1 e 1:
- Porta de esquecimento: fₜ = σ(W_f xₜ + U_f hₜ₋₁ + b_f) decide quanto manter de cada elemento do estado antigo da célula.
- Porta de entrada: iₜ = σ(W_i xₜ + U_i hₜ₋₁ + b_i) decide quanto do candidato escrever.
- Candidato: gₜ = tanh(W_g xₜ + U_g hₜ₋₁ + b_g) propõe novo conteúdo.
- Porta de saída: oₜ = σ(W_o xₜ + U_o hₜ₋₁ + b_o) decide quanto do conteúdo da célula expor.
Em seguida, os dois estados são atualizados como cₜ = fₜ ⊙ cₜ₋₁ + iₜ ⊙ gₜ e hₜ = oₜ ⊙ tanh(cₜ), em que ⊙ representa a multiplicação elemento a elemento. O estado da célula é a memória de longo prazo, e o estado oculto é a saída de curto prazo que alimenta a camada seguinte e o passo seguinte.
A atualização da célula é aditiva. O gradiente de cₜ em relação a cₜ₋₁ é fₜ, elemento a elemento; assim, quando a porta de esquecimento se mantém próxima de 1, o sinal de erro propaga-se para trás por muitos passos quase sem alterações, um percurso que o artigo original chamou de carrossel de erro constante. A LSTM de 1997 não tinha porta de esquecimento e as suas células só podiam acumular informação. Em 2000, Felix Gers, Schmidhuber e Fred Cummins acrescentaram a porta de esquecimento para permitir reiniciar as células; atualmente, todas as LSTMs padrão incluem uma. Inicializar o enviesamento da porta de esquecimento em 1, como Rafal Jozefowicz e colegas recomendaram em 2015, mantém a porta aberta no início do treino, para que a rede comece por se lembrar.
LSTM em PyTorch#
nn.LSTM do PyTorch executa a célula numa sequência completa e devolve o estado oculto em cada passo, além dos estados finais oculto e da célula. O trecho de código abaixo classifica clipes de vídeo curtos a partir de vetores de características por fotograma, como os que uma rede neural convolucional (CNN) extrai de cada fotograma:
import torch
from torch import nn
# 8 video clips, 16 frames each, 512 features per frame: (batch, time, features)
clips = torch.randn(8, 16, 512)
# One LSTM layer with a 128-dim hidden state, and a classifier over 5 actions
lstm = nn.LSTM(input_size=512, hidden_size=128, batch_first=True)
classifier = nn.Linear(128, 5)
# output holds h at every step; h_n and c_n are the final hidden and cell states
output, (h_n, c_n) = lstm(clips)
logits = classifier(h_n[-1])
print(f"output {tuple(output.shape)}, h_n {tuple(h_n.shape)}, c_n {tuple(c_n.shape)}, logits {tuple(logits.shape)}")
# Each weight matrix stacks four blocks of 128 rows: input gate, forget gate, candidate, output gate
print(f"Input weights {tuple(lstm.weight_ih_l0.shape)}, recurrent weights {tuple(lstm.weight_hh_l0.shape)}")O código imprime output (8, 16, 128), h_n (1, 8, 128), c_n (1, 8, 128), logits (8, 5) e Input weights (512, 512), recurrent weights (512, 128). O estado oculto final resume cada clipe de 16 fotogramas para o classificador de cinco classes, e cada matriz de pesos tem 4 × 128 = 512 linhas, porque PyTorch armazena os quatro blocos de portas numa única matriz.
LSTM e arquiteturas relacionadas#
- RNN simples: Reescreve todo o estado através de uma única camada tanh em cada passo, pelo que os gradientes diminuem ou aumentam geometricamente com o comprimento da sequência e é difícil aprender dependências de longo alcance.
- GRU: Combina os estados da célula e oculto e usa duas portas em vez de três, com três blocos de pesos em vez de quatro e três quartos dos parâmetros de uma LSTM com a mesma dimensão. Nenhuma das duas vence consistentemente em todas as tarefas.
- Transformer: Processa todas as posições em paralelo com autoatenção, o que permite um treino muito mais rápido em GPUs e acesso direto a contextos distantes. Por isso, os transformers substituíram as LSTMs na modelação de linguagem e na tradução. O custo da atenção aumenta com o comprimento do contexto, enquanto uma LSTM usa a mesma computação e memória em cada novo passo.
- xLSTM: A xLSTM, criada pelo grupo de Hochreiter em 2024, acrescenta portas exponenciais e uma memória matricial que permite o treino em paralelo. O seu modelo de linguagem com 7 mil milhões de parâmetros, xLSTM 7B, foi apresentado na ICML 2025 com desempenho comparável ao de transformers de dimensão semelhante e inferência mais rápida.
Aplicações#
- Reconhecimento de voz: Em 2015, a Google passou a usar modelos acústicos LSTM treinados com classificação temporal conexionista (CTC) na pesquisa por voz; os sistemas de reconhecimento executados no dispositivo dependeram durante muito tempo de LSTMs empilhadas.
- Tradução automática: O Google Neural Machine Translation, lançado em 2016, empilhava oito camadas LSTM no codificador e oito no descodificador.
- Previsão de cheias: O sistema de previsão de cheias da Google, descrito na Nature em 2024, usa redes LSTM para prever o caudal dos rios com base em dados meteorológicos e prevê cheias extremas em bacias hidrográficas sem estações de medição até cinco dias antes.
- Reconhecimento de ações: Uma CNN codifica cada fotograma de vídeo e uma LSTM lê a sequência de características dos fotogramas para classificar o clipe; é esta a estrutura usada no trecho de código acima.
- Previsão de trajetórias: A Social LSTM executa uma LSTM por peão e agrega os estados ocultos das pessoas próximas para prever trajetórias em multidões. O YOLO26 no modo de rastreamento atribui a cada pessoa um ID persistente entre fotogramas de vídeo, transformando deteções por fotograma nos históricos de posição usados por esse tipo de previsor.










