Modelos de Espaço de Estados

Visão geral

Modelos de Espaço de Estado (State Space Models, SSMs) são uma família de modelos de sequência construídos em torno de uma ideia simples: em vez de relacionar diretamente cada token (ou passo de tempo) a todos os outros tokens (como na atenção), manter um estado oculto compacto que evolui ao longo do tempo. A cada passo, o modelo atualiza esse estado e produz uma saída.

No aprendizado profundo (deep learning) moderno, os SSMs se tornaram especialmente interessantes porque podem ser computacionalmente eficientes em sequências muito longas — frequentemente escalando de forma linear com o comprimento da sequência — e podem oferecer suporte a streaming (processamento token a token) com baixo uso de memória. Isso os torna uma alternativa ou um complemento atraente à Arquitetura Transformer para tarefas em que o contexto pode ser extremamente longo (áudio, séries temporais, documentos longos, logs, trajetórias de aprendizado por reforço).

Este artigo oferece uma visão de alto nível, porém completa, sobre SSMs, como eles se conectam a sistemas dinâmicos clássicos e por que certos projetos de SSM podem ser eficientes para sequências longas na prática.

A ideia central: um estado latente que resume o passado

Um SSM assume que existe um estado latente (oculto) (x_t) que resume tudo o que é necessário do passado para prever o futuro. No passo de tempo (t):

  • o modelo recebe uma entrada (u_t) (por exemplo, embedding de token)
  • atualiza o estado (x_t)
  • emite uma saída (y_t)

Um SSM padrão (linear) em tempo discreto é:

[ x_{t+1} = A x_t + B u_t,\quad y_t = C x_t + D u_t ]

Onde:

  • (x_t \in \mathbb{R}^N) é o estado latente (tamanho (N))
  • (u_t \in \mathbb{R}^d) é a entrada
  • (y_t \in \mathbb{R}^d) é a saída
  • (A, B, C, D) são parâmetros aprendíveis (ou funções de parâmetros)

Isso se parece com uma RNN simples, mas há duas diferenças importantes nos SSMs modernos de aprendizado profundo:

  1. A atualização costuma ser projetada para ser estável e bem condicionada para memória de longo alcance (por exemplo, parametrizações cuidadosas de (A)).
  2. A computação muitas vezes pode ser reorganizada para permitir paralelismo ao longo do tempo (mais sobre isso abaixo), evitando algumas das dificuldades de treinamento de recorrências ingênuas.

De onde vêm os SSMs (e como o aprendizado profundo os utiliza)

Raízes clássicas: teoria de controle e filtragem

SSMs são fundamentais em controle e processamento de sinais. Em um cenário linear-gaussiano (linear-Gaussian), eles sustentam:

  • filtros de Kalman (inferência de (x_t) dadas observações ruidosas)
  • identificação de sistemas
  • previsão e suavização

Nesses cenários, (A,B,C,D) podem ser conhecidos ou estimados, e a inferência é probabilística.

Visão do aprendizado profundo: SSMs como camadas de sequência

No aprendizado profundo, “SSM” frequentemente se refere a camadas SSM usadas dentro de redes neurais:

Muitas “arquiteturas SSM” populares são construídas a partir de núcleos dinâmicos lineares mais invólucros não lineares (gating, normalização, MLPs), de modo semelhante a como um bloco Transformer envolve atenção com MLPs e conexões residuais.

Por que SSMs podem ser eficientes para sequências longas

A história de eficiência vem de como computação e memória escalam com o comprimento da sequência (L).

O custo quadrático da atenção (a comparação de referência)

Em Transformers padrão, a autoatenção forma interações par a par entre posições. Isso normalmente custa:

  • Computação: (O(L^2 \cdot d))
  • Memória: (O(L^2)) para a matriz de atenção (durante o treinamento)

Isso se torna caro à medida que (L) cresce (dezenas de milhares ou mais), mesmo com muitas otimizações.

SSMs podem ser de tempo linear e compatíveis com streaming

Uma recorrência SSM básica processa tokens sequencialmente:

  • Computação: (O(L \cdot N)) (ou (O(L \cdot N d)), dependendo da implementação)
  • Memória de estado para inferência (streaming): (O(N)), porque você só mantém (x_t)

Isso é uma grande vantagem para inferência com contexto longo: você pode processar uma sequência com um milhão de passos sem armazenar um milhão de ativações intermediárias (ignorando o armazenamento de retropropagação no tempo de treinamento).

No entanto, recorrência ingênua é sequencial e pode ser lenta em GPUs. Trabalhos modernos com SSMs resolvem isso com formulações paralelizáveis.

Duas visões equivalentes de SSMs lineares: recorrência e convolução

Um fato-chave: se o SSM é linear e invariável no tempo (mesmos (A,B,C,D) em cada passo), você pode reescrevê-lo como uma convolução.

Desenrolando a recorrência (assumindo (x_0 = 0) por simplicidade):

[ y_t = \sum_{k=0}^{t} K_k , u_{t-k} + D u_t ] onde [ K_k = C A^{k} B ]

Assim, o SSM define um núcleo de resposta ao impulso (K = (K_0, K_1, \dots)). Isso faz uma camada SSM agir como um filtro aprendido de longo alcance — semelhante em espírito a uma convolução 1D, mas potencialmente com memória efetiva muito longa (núcleos longos) sem armazenar explicitamente um vetor de núcleo enorme.

Por que isso importa para eficiência

Convoluções podem ser computadas de forma eficiente:

  • Convolução direta: (O(L \cdot \text{kernel_length}))
  • Convolução via FFT: (O(L \log L)) para núcleos longos

Assim, um SSM pode ser computado de duas formas:

  1. Sequencialmente (scan/recorrência): bom para inferência em streaming
  2. Em paralelo (convolução/FFT ou scan paralelo): bom para throughput de treinamento em GPU

Arquiteturas SSM modernas exploram ambos os modos.

Fazendo SSMs funcionarem bem no aprendizado profundo: estabilidade e parametrização

Um desafio prático central é que multiplicar repetidamente por (A) pode:

  • explodir (se autovalores de (A) tiverem magnitude > 1)
  • desvanecer (se autovalores forem pequenos demais)
  • tornar-se numericamente instável

Isso está intimamente relacionado a por que RNNs “vanilla” têm dificuldade com dependências de longo prazo (uma motivação para RNNs/LSTMs).

SSMs modernos tipicamente usam parametrizações que incentivam:

  • estabilidade (dinâmicas limitadas)
  • expressividade (memória rica em múltiplas escalas de tempo)
  • computação rápida (matrizes estruturadas)

Parametrização em tempo contínuo (comum em SSMs modernos)

Muitos SSMs profundos começam de um sistema em tempo contínuo:

[ \frac{dx(t)}{dt} = A x(t) + B u(t),\quad y(t) = C x(t) + D u(t) ]

Depois discretizam com passo (\Delta) para obter:

[ x_{t+1} = \bar{A} x_t + \bar{B} u_t ]

Onde (\bar{A} = e^{A\Delta}) e (\bar{B}) vem de integrar o efeito da entrada ao longo do passo. Essa abordagem facilita impor estabilidade ao restringir (A) (por exemplo, partes reais negativas dos autovalores).

Matrizes de estado estruturadas para velocidade

Para tornar a computação eficiente, muitas variantes de SSM restringem (A) a uma forma que suporte multiplicação rápida e/ou computação rápida do núcleo, como:

  • diagonal ou bloco-diagonal
  • baixa ordem (low-rank) mais diagonal
  • outras matrizes estruturadas que admitem algoritmos eficientes

Essas escolhas podem permitir núcleos de longo alcance sem pagar (O(N^2)) por passo.

“Invólucros” não lineares

Mesmo que a dinâmica central seja linear, a rede como um todo é não linear via:

  • gating (modulação dependente da entrada)
  • conexões residuais
  • MLPs
  • camadas de normalização

Isso é análogo a como convoluções se tornam poderosas em CNNs quando combinadas com não linearidades e empilhamento profundo.

Famílias modernas de SSMs em aprendizado profundo (alto nível)

Você frequentemente verá nomes como S4, S5, DSS, Mamba etc. Os detalhes diferem, mas todos compartilham um objetivo: modelagem eficiente de sequências longas com dinâmicas do tipo SSM.

Em alto nível:

  • Modelos do tipo S4 enfatizam sistemas lineares estruturados que produzem núcleos de convolução longos e permitem treinamento paralelo.
  • SSMs seletivos / dependentes da entrada (por exemplo, “espaços de estado seletivos”) permitem que a dinâmica dependa da entrada atual, melhorando a expressividade enquanto mantém varredura (scan) em tempo linear.

Você não precisa desses detalhes para entender o ponto principal: SSMs modernos são projetados para manter o escalonamento favorável da recorrência enquanto recuperam paralelismo amigável a GPU e treinabilidade.

Um modelo mental prático: SSMs como filtros aprendidos de memória longa

Uma forma intuitiva de entender camadas SSM:

  • O estado latente (x_t) atua como um banco de traços de memória com diferentes taxas de decaimento / oscilações.
  • A saída (y_t) é uma mistura aprendida desses traços.
  • O modelo aprende como armazenar e recuperar informações ao longo de intervalos longos.

Em comparação com atenção, que pode “saltar” diretamente para um token anterior relevante via busca baseada em conteúdo, um SSM se comporta de forma mais natural como uma memória dinâmica aprendida: a informação persiste e se transforma ao longo do tempo de acordo com dinâmicas aprendidas.

Exemplo mínimo: implementando uma recorrência SSM

Abaixo está um esboço simplificado, no estilo PyTorch, de uma camada SSM linear operando em modo de varredura (scan) (sequencial). Isto não está otimizado, mas mostra a mecânica.

import torch
import torch.nn as nn

class SimpleSSM(nn.Module):
    def __init__(self, d_model, n_state):
        super().__init__()
        self.n_state = n_state
        self.A = nn.Parameter(torch.randn(n_state, n_state) * 0.01)
        self.B = nn.Parameter(torch.randn(n_state, d_model) * 0.01)
        self.C = nn.Parameter(torch.randn(d_model, n_state) * 0.01)
        self.D = nn.Parameter(torch.zeros(d_model, d_model))

    def forward(self, u, x0=None):
        # u: (batch, length, d_model)
        Bsz, L, d = u.shape
        x = torch.zeros(Bsz, self.n_state, device=u.device) if x0 is None else x0
        ys = []

        for t in range(L):
            x = x @ self.A.T + u[:, t, :] @ self.B.T     # state update
            y = x @ self.C.T + u[:, t, :] @ self.D.T     # output
            ys.append(y)

        return torch.stack(ys, dim=1), x  # (batch, length, d_model), final state

Na prática, camadas SSM de alto desempenho evitam multiplicações explícitas (N \times N) por passo e usam parametrizações estruturadas e kernels de scan otimizados.

Por que SSMs podem ser rápidos na prática (não apenas assintoticamente)

A eficiência de SSMs vem de várias vantagens práticas:

1) Escalonamento linear com o comprimento da sequência

Para sequências longas, (O(L)) ou (O(L \log L)) pode ser dramaticamente mais barato do que (O(L^2)).

2) Inferência em streaming com estado constante

Um SSM pode gerar ou processar tokens online:

  • manter apenas (x_t)
  • atualizar a cada novo token
  • sem necessidade de armazenar em cache todas as chaves/valores passados como na atenção autorregressiva

Isso é atraente para implantação com baixa latência ou restrições de memória.

3) Treinamento paralelo via convolução ou scan paralelo

Embora a recorrência seja sequencial, SSMs lineares invariáveis no tempo podem ser computados como convolução, e varreduras mais gerais podem ser paralelizadas usando primitivas de scan em GPU. Isso ajuda a diminuir a diferença de throughput em relação a Transformers.

4) Viés indutivo de longo alcance “embutido”

Muitos projetos de SSM são enviesados para representar sinais com uma ampla faixa de escalas de tempo (curta, média, longa). Em domínios como áudio ou fluxos de sensores, isso costuma combinar melhor do que similaridade token a token.

Aplicações em que SSMs se destacam

Previsão de séries temporais com contexto longo

Exemplos:

  • demanda de energia ao longo de meses
  • sensores de tráfego
  • manutenção preditiva a partir de logs de equipamento

SSMs modelam naturalmente dinâmica temporal e podem lidar com históricos muito longos de forma eficiente.

Áudio e fala

Áudio pode ter sequências de centenas de milhares a milhões de amostras. SSMs podem agir como filtros aprendidos poderosos com memória longa, úteis para:

  • geração de áudio
  • aprimoramento de fala
  • detecção de eventos em gravações longas

Modelagem de linguagem com contexto longo

SSMs têm sido explorados como alternativas à atenção para modelagem de linguagem com contexto longo, ou como componentes híbridos. Eles podem reduzir custos de computação/memória em contexto longo, embora a atenção ainda tenda a ser forte em recuperação endereçável por conteúdo.

Aprendizado por reforço e logs de robótica

Trajetórias podem ser longas e contínuas, e processamento em streaming é valioso. SSMs se alinham bem com:

  • sistemas parcialmente observados
  • modelagem de dinâmicas latentes
  • inferência online de política/valor

Como SSMs se comparam a outras famílias de arquiteturas

Versus Transformers

  • Transformers: fortes em recuperação baseada em conteúdo (encontrar um token anterior relevante) e interações globais flexíveis, mas o custo quadrático da atenção pode ser proibitivo em comprimentos muito grandes.
  • SSMs: fortes em processamento eficiente de longo alcance e streaming; frequentemente em tempo linear; podem ser menos diretos em comportamentos do tipo “lookup” sem adições arquiteturais.

Muitos sistemas modernos exploram híbridos: por exemplo, atenção para recuperação + SSMs para mistura eficiente de contexto global.

Versus RNNs/LSTMs

SSMs compartilham recorrência com RNNs, mas SSMs modernos frequentemente melhoram:

  • estabilidade via parametrizações melhores
  • paralelismo via truques de convolução/scan
  • memória de longo alcance via dinâmicas estruturadas

Em resumo: SSMs podem ser vistos como recorrências engenheiradas projetadas para serem treináveis e rápidas em hardware moderno.

Versus CNNs (convoluções 1D)

SSMs podem se comportar como convoluções muito longas, mas:

  • campos receptivos de CNNs frequentemente crescem com profundidade ou esquemas de dilatação
  • SSMs podem representar memória longa com um estado compacto e dinâmicas estruturadas

SSMs e CNNs também podem ser combinados; ambos são misturadores de sequência eficientes em comparação com atenção.

Limitações e trade-offs de projeto

SSMs não são “vitórias gratuitas” em todos os lugares. Trade-offs comuns incluem:

  • Endereçamento baseado em conteúdo é mais difícil: atenção pode comparar tokens diretamente; SSMs tipicamente misturam informação por meio de dinâmicas.
  • Tamanho do estado e parametrização importam: escolhas ruins para (A) podem levar a memória instável ou fraca.
  • Complexidade de implementação: SSMs de alto desempenho frequentemente exigem kernels especializados e cuidados numéricos.

Como resultado, a escolha de arquitetura costuma depender da tarefa e do comprimento, e SSMs frequentemente são usados junto com outros componentes (incluindo atenção, gating ou até blocos de Mistura de Especialistas (Mixture-of-Experts, MoE)) para equilibrar eficiência e capacidade.

Resumo

Modelos de Espaço de Estado representam sequências por meio de um estado latente que evolui ao longo do tempo, produzindo saídas a cada passo. Seu ressurgimento moderno no aprendizado profundo é impulsionado por uma vantagem principal: eles podem modelar sequências muito longas de forma eficiente.

Principais pontos:

  • SSMs lineares podem ser computados como recorrência (streaming, (O(L))) ou como convolução (paralelizável, frequentemente (O(L \log L))).
  • Com a parametrização correta, SSMs podem manter memória estável de longo alcance e treinar de forma eficaz.
  • Em comparação com a Arquitetura Transformer centrada em atenção, SSMs podem oferecer grandes economias de computação e memória em comprimentos de contexto longos, especialmente para streaming e dados do tipo sinal.

Na prática, SSMs são melhor vistos como uma primitiva poderosa e eficiente de mistura de sequências — especialmente atraente quando contexto longo é essencial e a atenção quadrática é custosa demais.