8  Redes Recorrentes

Dados sequenciais possuem ordem e dependências entre posições. Em uma frase, o significado de uma palavra depende das anteriores; em uma série temporal, uma medida recente ajuda a interpretar a seguinte. Uma rede feedforward comum recebe um vetor de tamanho fixo e não mantém, por si só, um estado entre passos.

Uma rede neural recorrente (RNN) introduz um estado oculto que é atualizado ao longo da sequência. A mesma transformação é reutilizada em todos os instantes, permitindo processar sequências de diferentes comprimentos.

8.1 Rede recorrente de Elman

Seja \(x_t\in\mathbb R^{d_x}\) a entrada no instante \(t\) e \(h_t\in\mathbb R^{d_h}\) o estado oculto. Uma RNN simples de Elman calcula

\[ h_t =\phi(W_{xh}x_t+W_{hh}h_{t-1}+b_h), \tag{8.1}\]

\[ o_t=W_{hy}h_t+b_y, \qquad \widehat y_t=\psi(o_t). \tag{8.2}\]

Os parâmetros possuem formatos

\[ W_{xh}\in\mathbb R^{d_h\times d_x}, \quad W_{hh}\in\mathbb R^{d_h\times d_h}, \quad W_{hy}\in\mathbb R^{d_y\times d_h}. \]

A ativação \(\phi\) costuma ser tanh em uma RNN simples. A função \(\psi\) depende da tarefa: identidade para regressão, sigmoide para saída binária ou softmax para classes exclusivas.

O estado inicial \(h_0\) pode ser zero, um parâmetro aprendido ou um vetor fornecido por outro modelo. Essa escolha faz parte da especificação da arquitetura.

8.1.1 Memória como estado

A equação Equation 8.1 combina a observação atual com um resumo do passado. O estado não armazena literalmente todos os itens anteriores; ele é uma representação de dimensão fixa, atualizada recursivamente:

\[ h_t=F_\theta(x_t,h_{t-1}). \]

Duas sequências com o mesmo último elemento podem produzir estados diferentes porque percorreram históricos distintos. Ao mesmo tempo, um estado pequeno pode perder detalhes relevantes de sequências longas.

8.1.2 Desdobramento no tempo

Embora o diagrama recorrente contenha um ciclo, para uma sequência finita podemos desdobrá-lo em uma cadeia. Cada cópia visual representa a mesma célula em um instante diferente; os parâmetros são compartilhados.

Uma RNN recorrente e seu desdobramento: os mesmos parâmetros são reutilizados em todos os passos.

O compartilhamento traz duas consequências:

  • o número de parâmetros não cresce com o comprimento da sequência;
  • gradientes de todos os instantes contribuem para as mesmas matrizes.

Uma RNN com \(T=100\) passos não possui cem matrizes \(W_{hh}\); possui uma matriz usada cem vezes.

8.1.3 Formatos de entrada e saída

Redes recorrentes podem ser organizadas de acordo com a tarefa:

  • sequência para sequência: um rótulo por passo, como etiquetagem de palavras;
  • sequência para vetor: uma saída após ler toda a sequência, como classificação de texto;
  • vetor para sequência: uma condição inicial gera vários passos;
  • sequência para sequência com comprimentos diferentes: um codificador produz uma representação usada por um decodificador.

Em lote, uma entrada costuma ter formato \(B\times T\times d_x\): exemplos, tempo e atributos. Sequências de comprimentos diferentes podem ser preenchidas até um tamanho comum, mas uma máscara deve impedir que posições artificiais contribuam para a perda ou para métricas.

Preenchimento não cria informação. Além disso, processar uma sequência muito além de seu comprimento real pode alterar estados se a implementação não respeitar a máscara.

8.1.4 Propagação para frente

import numpy as np


def rnn_elman(X, W_xh, W_hh, b_h, W_hy, b_y, h0=None):
    """X tem formato (lote, tempo, atributos)."""
    B, T, _ = X.shape
    d_h = W_hh.shape[0]
    h = np.zeros((B, d_h)) if h0 is None else h0.copy()
    estados, saidas = [], []

    for t in range(T):
        h = np.tanh(X[:, t, :] @ W_xh.T + h @ W_hh.T + b_h)
        o = h @ W_hy.T + b_y
        estados.append(h.copy())
        saidas.append(o)

    H = np.stack(estados, axis=1)
    O = np.stack(saidas, axis=1)
    return O, H

O laço temporal é sequencial: \(h_t\) depende de \(h_{t-1}\). Dentro de cada passo, todos os exemplos e todas as unidades são vetorizados.

8.1.5 Retropropagação através do tempo

A retropropagação através do tempo (BPTT) aplica backpropagation ao grafo desdobrado. Se a perda total é

\[ E=\sum_{t=1}^{T}\ell_t(\widehat y_t,y_t), \]

o estado \(h_t\) pode influenciar a perda no próprio passo e todas as perdas futuras. Sua derivada acumula esses caminhos. Em uma forma simplificada,

\[ \frac{\partial E}{\partial h_t} = \frac{\partial\ell_t}{\partial h_t} + \frac{\partial E}{\partial h_{t+1}} \frac{\partial h_{t+1}}{\partial h_t}. \]

Para a recorrência de Elman,

\[ \frac{\partial h_{t+1}}{\partial h_t} = \operatorname{diag}\!\left( \phi'(z_{t+1}) \right)W_{hh}. \]

Produtos repetidos desses Jacobianos explicam dois problemas:

  • gradientes que desaparecem: normas menores que um são multiplicadas repetidamente, enfraquecendo dependências longas;
  • gradientes que explodem: normas maiores que um podem crescer rapidamente e desestabilizar o treinamento.

Clipping da norma do gradiente ajuda no segundo caso. Células LSTM e GRU criam caminhos de estado controlados por portas e foram projetadas para facilitar o aprendizado de dependências mais longas; elas reduzem, mas não eliminam, todas as dificuldades.

8.1.6 BPTT truncada

Guardar o grafo de uma sequência muito longa consome memória e aumenta o caminho das derivadas. Na BPTT truncada, processamos blocos de \(K\) passos, transportamos o valor do estado para o bloco seguinte, mas interrompemos o grafo de derivação na fronteira.

Isso reduz custo e memória, porém impede que o gradiente atribua crédito diretamente a eventos anteriores à janela. O comprimento \(K\) é, portanto, um hiperparâmetro computacional e estatístico.

8.1.7 Relação com redes feedforward

Uma RNN desdobrada se parece com uma rede profunda, mas possui duas diferenças essenciais:

  1. a profundidade efetiva depende do comprimento da sequência;
  2. os parâmetros das cópias temporais são compartilhados.

Redes feedforward também podem receber uma janela fixa de observações, mas a janela precisa ser escolhida previamente e cada posição costuma ter parâmetros distintos. RNNs oferecem uma regra recorrente aplicável a comprimentos variados.

Hoje, mecanismos de atenção e Transformers são alternativas importantes para muitos problemas sequenciais porque permitem caminhos mais curtos entre posições e maior paralelismo. Ainda assim, RNNs permanecem úteis em fluxos contínuos, modelos compactos e cenários com processamento passo a passo.

WarningOrdem temporal não é ordem do lote

Embaralhar a ordem dos exemplos independentes entre épocas costuma ser adequado. Embaralhar os passos dentro de cada sequência destrói a estrutura temporal que a recorrência deve aprender.

8.1.7.1 Exercícios

  1. Verifique os formatos em Equation 8.1 e Equation 8.2.
  2. Quantos parâmetros possui uma RNN com \(d_x=10\), \(d_h=32\) e \(d_y=5\)?
  3. Explique por que o número de parâmetros não depende de \(T\).
  4. Diferencie preenchimento, máscara e BPTT truncada.
  5. Mostre como produtos repetidos de um escalar \(|\lambda|<1\) ajudam a entender o desaparecimento do gradiente.
  6. Quando uma saída por passo é necessária e quando apenas \(h_T\) pode ser suficiente?

8.2 Mapas Auto-Organizáveis

Um mapa auto-organizável (Self-Organizing Map, SOM) é um método de aprendizado não supervisionado que representa dados de alta dimensão por uma grade, geralmente bidimensional, de protótipos. Pontos próximos no espaço dos dados tendem a ativar unidades próximas na grade.

O SOM não descobre rótulos verdadeiros nem aproxima uma “função divina”. Ele produz uma representação exploratória cuja interpretação depende dos dados, da escala dos atributos e dos hiperparâmetros.

8.2.1 Três objetos distintos

Considere dados \(x\in\mathbb R^d\) e \(M\) unidades. Cada unidade \(i\) possui:

  • uma posição fixa \(r_i\in\mathbb R^q\) na grade, normalmente \(q=2\);
  • um protótipo treinável \(w_i\in\mathbb R^d\) no espaço dos dados.

As distâncias \(\lVert x-w_i\rVert\) comparam um exemplo aos protótipos. As distâncias \(\lVert r_i-r_j\rVert\) comparam posições na grade. Misturar esses dois espaços torna o algoritmo incorreto.

Cada unidade ocupa uma posição fixa na grade e possui um protótipo no espaço dos dados; a vencedora e suas vizinhas movem-se em direção ao exemplo.

8.2.2 Unidade de melhor correspondência

Para um exemplo \(x_t\), a unidade vencedora, ou BMU (best matching unit), é

\[ c_t =\operatorname*{arg\,min}_{i=1,\ldots,M} \lVert x_t-w_i(t)\rVert^2. \tag{8.3}\]

Usar a distância ou seu quadrado produz a mesma vencedora e evita a raiz quadrada no cálculo.

8.2.3 Função de vizinhança

A influência da vencedora sobre a unidade \(i\) pode ser gaussiana:

\[ H_{c_ti}(t) =\exp\!\left( -\frac{\lVert r_i-r_{c_t}\rVert^2}{2\sigma(t)^2} \right). \tag{8.4}\]

Essa função não é uma métrica: ela é máxima em unidades próximas e diminui com a distância. O parâmetro \(\sigma(t)>0\) é o raio de vizinhança. O quadrado em \(\sigma(t)^2\) é necessário na forma gaussiana usual.

8.2.4 Regra de atualização

Todos os protótipos são atualizados por

\[ w_i(t+1) =w_i(t) +\eta(t)H_{c_ti}(t) \bigl(x_t-w_i(t)\bigr), \tag{8.5}\]

onde \(0<\eta(t)<1\) é a taxa de aprendizado. A BMU se move mais; suas vizinhas também se aproximam do exemplo, preservando ordem local na grade.

No início, raio e taxa maiores promovem organização global. Depois, ambos diminuem para permitir ajustes locais. Um cronograma exponencial possível para \(t=0,\ldots,T-1\) é

\[ \eta(t)=\eta_0 \left(\frac{\eta_f}{\eta_0}\right)^{t/(T-1)}, \qquad \sigma(t)=\sigma_0 \left(\frac{\sigma_f}{\sigma_0}\right)^{t/(T-1)}. \]

Os valores finais devem ser positivos. Reduzir o raio a zero cedo demais transforma o treinamento em competição independente e prejudica a organização topológica.

8.2.5 Algoritmo

  1. Padronizar os atributos quando suas escalas não forem comparáveis.
  2. Criar as posições \(r_i\) de uma grade e inicializar os protótipos \(w_i\).
  3. Para cada iteração:
    1. escolher um exemplo, normalmente com ordem embaralhada;
    2. encontrar a BMU por Equation 8.3;
    3. calcular a influência na grade por Equation 8.4;
    4. atualizar os protótipos por Equation 8.5;
    5. reduzir \(\eta(t)\) e \(\sigma(t)\).
  4. Associar cada exemplo à posição de sua BMU para visualizar o mapa.

Inicialização aleatória é simples; amostrar exemplos ou inicializar na direção das primeiras componentes principais pode acelerar a organização. Diferentes sementes podem produzir orientações distintas da grade sem que uma delas seja necessariamente errada.

8.2.6 Exemplo de uma atualização

Considere dois protótipos

\[ w_1=(0{,}5,0{,}6,0{,}8), \qquad w_2=(0{,}4,0{,}2,0{,}5) \]

e o exemplo \(x=(0{,}8,0{,}7,0{,}4)\). As distâncias quadráticas são

\[ \lVert x-w_1\rVert^2 =0{,}3^2+0{,}1^2+(-0{,}4)^2 =0{,}26, \]

\[ \lVert x-w_2\rVert^2 =0{,}4^2+0{,}5^2+(-0{,}1)^2 =0{,}42. \]

Logo, a BMU é a unidade 1. Com \(\eta=0{,}5\), influência \(H_{11}=1\) e, para simplificar, influência zero sobre a outra unidade,

\[ \begin{aligned} w_1' &=w_1+0{,}5(x-w_1)\\ &=(0{,}5,0{,}6,0{,}8) +0{,}5(0{,}3,0{,}1,-0{,}4)\\ &=(0{,}65,0{,}65,0{,}60). \end{aligned} \]

O protótipo se deslocou até o ponto médio entre seu valor anterior e o exemplo. Como somente a vencedora foi atualizada, este é o caso limite de aprendizado competitivo, semelhante ao k-means on-line. O comportamento distintivo do SOM aparece quando unidades vizinhas também recebem influência positiva.

Por exemplo, se \(H_{12}=0{,}4\), então

\[ w_2' =w_2+0{,}5\cdot0{,}4(x-w_2) =(0{,}48,0{,}30,0{,}48). \]

A unidade 2 também se move, mas por uma fração menor.

8.2.7 Implementação NumPy

import numpy as np


def passo_som(x, prototipos, posicoes, taxa, sigma):
    x = np.asarray(x, dtype=float)
    W = np.asarray(prototipos, dtype=float)
    R = np.asarray(posicoes, dtype=float)

    dist_dados = np.sum((W - x) ** 2, axis=1)
    bmu = np.argmin(dist_dados)

    dist_grade = np.sum((R - R[bmu]) ** 2, axis=1)
    influencia = np.exp(-dist_grade / (2 * sigma**2))

    W += taxa * influencia[:, None] * (x - W)
    return bmu, W

O índice \(\texttt{[:, None]}\) transforma a influência de formato \(M\) em uma coluna \(M\times1\), permitindo multiplicá-la pelas diferenças \(M\times d\) por broadcasting.

8.2.8 Avaliação e visualização

Como não há rótulo obrigatório, usamos critérios internos e inspeção:

  • erro de quantização: média da distância de cada exemplo ao protótipo de sua BMU;
  • erro topográfico: frequência com que a primeira e a segunda BMUs não são vizinhas na grade;
  • matriz U: visualização das distâncias entre protótipos vizinhos;
  • distribuição de exemplos por unidade, para detectar unidades vazias ou concentração excessiva.

Baixo erro de quantização não garante boa preservação topológica. Aumentar o número de unidades tende a melhorar quantização, mas também pode criar um mapa esparso e mais difícil de interpretar.

8.2.9 Limitações e uso responsável

SOMs são sensíveis à escala dos atributos, inicialização, ordem dos exemplos, tamanho da grade e cronogramas. A proximidade na grade é uma aproximação da estrutura dos dados, não prova de que dois grupos sejam categorias naturais.

Quando rótulos externos existem, eles podem ser projetados sobre o mapa após o treinamento para interpretação, mas não devem ser apresentados como rótulos descobertos sem incerteza. PCA, t-SNE, UMAP, k-means e autoencoders respondem a objetivos diferentes e constituem comparações úteis conforme a aplicação.

8.2.9.1 Exercícios

  1. Diferencie \(r_i\) e \(w_i\), incluindo seus espaços e papéis.
  2. Calcule \(w_2'\) do exemplo e confirme cada coordenada.
  3. O que acontece com Equation 8.5 quando \(\sigma(t)\to0\)?
  4. Explique por que padronização pode mudar completamente a BMU.
  5. Compare erro de quantização e erro topográfico.
  6. Implemente uma grade \(3\times3\), gere suas posições e execute uma época do algoritmo.

8.2.10 Síntese do capítulo

RNNs processam sequências mantendo um estado e compartilhando parâmetros ao longo do tempo; seu treinamento desdobra a recorrência e aplica BPTT. SOMs pertencem a outra família: aprendizado competitivo não supervisionado com protótipos organizados em uma grade. Em ambos os casos, a estrutura do modelo — tempo na RNN, vizinhança no SOM — incorpora uma hipótese sobre relações importantes nos dados.

8.3 Exercícios de múltipla escolha

As cinco primeiras questões tratam de redes recorrentes; as demais tratam de mapas auto-organizáveis. Cada item possui uma única resposta correta.

  1. Em uma rede recorrente de Elman, o estado oculto \(h_t\) depende tipicamente:

    1. apenas de \(x_t\).
    2. de \(x_t\) e do estado anterior \(h_{t-1}\).
    3. somente do rótulo final.
    4. de pesos diferentes e independentes em cada instante.
  2. “Desdobrar” uma RNN no tempo significa:

    1. representar as aplicações sucessivas da célula como um grafo ao longo dos instantes.
    2. duplicar fisicamente o conjunto de dados.
    3. remover todas as conexões recorrentes.
    4. ordenar os neurônios pelo valor do viés.
  3. O compartilhamento de parâmetros ao longo do tempo permite que a RNN:

    1. aplique a mesma regra de transição em diferentes posições da sequência.
    2. tenha um modelo totalmente distinto para cada comprimento.
    3. dispense qualquer estado.
    4. produza apenas sequências de tamanho um.
  4. Gradientes que desaparecem em sequências longas estão associados a:

    1. produtos repetidos de derivadas e matrizes com fatores contrativos.
    2. ausência completa da regra da cadeia.
    3. uso obrigatório de números inteiros.
    4. uma matriz de Gram muito grande.
  5. A BPTT truncada reduz custo computacional ao:

    1. limitar o número de passos temporais pelos quais o gradiente é propagado.
    2. remover a propagação para frente.
    3. treinar somente o viés da saída.
    4. tornar toda sequência independente do passado.
  6. Um mapa auto-organizável (SOM) é um método de aprendizado:

    1. supervisionado que exige um rótulo por exemplo.
    2. competitivo e não supervisionado.
    3. exclusivo para séries temporais rotuladas.
    4. baseado em retropropagação de entropia cruzada.
  7. A unidade de melhor correspondência (BMU) para uma entrada \(x\) é, em geral, o protótipo que:

    1. está mais distante de \(x\).
    2. possui menor distância a \(x\).
    3. ocupa sempre o canto superior esquerdo da grade.
    4. recebeu o maior rótulo de classe.
  8. Na atualização de um SOM, além da BMU, também são movidos:

    1. protótipos vizinhos na grade, com intensidade definida pela função de vizinhança.
    2. apenas exemplos do conjunto de teste.
    3. todos os protótipos pela mesma quantidade, obrigatoriamente.
    4. somente protótipos com rótulo correto.
  9. Ao longo do treinamento de um SOM, é comum reduzir gradualmente:

    1. a taxa de aprendizado e o raio de vizinhança.
    2. a dimensão de cada vetor de entrada.
    3. o número de classes verdadeiras.
    4. a quantidade de coordenadas da grade em cada época.
  10. O erro de quantização de um SOM mede principalmente:

    1. a distância média entre cada exemplo e sua BMU.
    2. a acurácia de rótulos usados no treinamento supervisionado.
    3. o número de gradientes explosivos.
    4. a probabilidade PAC de falha.
  1. b. O estado combina a entrada corrente com uma memória resumida do passado.
  2. a. O desdobramento explicita as dependências temporais e permite aplicar a regra da cadeia.
  3. a. Os mesmos pesos são reutilizados, o que expressa invariância da regra de processamento à posição temporal.
  4. a. Multiplicações sucessivas por fatores menores que um reduzem a magnitude do sinal de gradiente.
  5. a. A truncagem estabelece uma janela finita de retropropagação, trocando memória temporal longa por eficiência.
  6. b. O SOM aprende protótipos por competição e cooperação de vizinhança sem usar alvos durante o ajuste.
  7. b. A BMU minimiza a distância entre a entrada e os vetores protótipos.
  8. a. A cooperação local organiza protótipos próximos na grade para representar regiões próximas dos dados.
  9. a. Começar com vizinhança ampla favorece organização global; reduzi-la permite refinamento local.
  10. a. Essa distância resume a fidelidade com que os protótipos representam os dados, mas não mede sozinha a preservação topológica.