Sparse Autoencoders (SAE)
Um autoencoder esparso (SAE) divide as ativações de uma rede em muitos recursos, dos quais apenas alguns ficam ativos ao mesmo tempo; é uma ferramenta essencial para interpretar LLMs.
Um autoencoder esparso (SAE) é um autoencoder treinado para reconstruir a sua entrada por meio de uma camada oculta em que apenas algumas unidades ficam ativas para cada entrada. Na pesquisa atual em IA, os SAE são treinados com as ativações internas de um modelo de linguagem de grande porte (LLM) ou de um modelo de visão, com muito mais unidades ocultas do que dimensões de entrada, de modo que cada unidade oculta, chamada característica ou latente, tende a disparar para um conceito reconhecível por humanos. São uma ferramenta central da interpretabilidade mecanística: no trabalho Scaling Monosemanticity de 2024, a Anthropic treinou SAE com até 34 milhões de características nas ativações do Claude 3 Sonnet e encontrou características de conceitos como a Golden Gate Bridge, erros de código e engano.
Por que características esparsas ajudam na interpretabilidade#
Neurónios individuais em modelos grandes são muitas vezes polissémicos e respondem a vários conceitos sem relação entre si. A hipótese da superposição, estudada em Toy Models of Superposition da Anthropic, explica porquê: uma camada com d dimensões pode representar muito mais do que d conceitos como direções quase ortogonais, desde que apenas alguns estejam ativos de cada vez. Um SAE procura esse conjunto sobrecompleto de direções. O seu código esparso para uma ativação indica quais poucas direções estão presentes e com que intensidade, sendo muito mais fácil de interpretar do que milhares de valores de neurónios misturados.
Como funciona um autoencoder esparso#
O codificador mapeia um vetor de ativação para um vetor de latentes muito mais amplo, seguido de uma ReLU, e o descodificador reconstrói a ativação como uma soma ponderada das suas colunas; assim, cada coluna do descodificador corresponde à direção de uma característica. O treinamento minimiza o erro de reconstrução mais uma restrição de esparsidade. A opção clássica é uma penalização L1 nos latentes, uma forma de regularização; os SAE TopK da OpenAI mantêm apenas os k maiores latentes por entrada e foram escalados para um SAE com 16 milhões de latentes nas ativações do GPT-4; já os SAE JumpReLU da Google DeepMind zeram cada latente abaixo de um limiar aprendido. Depois de treinados, os latentes de um SAE são usados principalmente de duas formas:
O exemplo simples abaixo compacta 64 direções de características conhecidas em 32 dimensões, de modo que nenhuma dimensão individual corresponda a uma característica, e treina um SAE TopK para as recuperar:
import torch
import torch.nn.functional as F
torch.manual_seed(0)
# Toy activations: 64 feature directions packed into 32 dimensions (superposition), ~3 active per sample
features = F.normalize(torch.randn(64, 32), dim=1)
acts = (torch.rand(8192, 64) * (torch.rand(8192, 64) < 0.05)) @ features
encoder, decoder = torch.nn.Linear(32, 256), torch.nn.Linear(256, 32) # 256 latents: 8x overcomplete
optimizer = torch.optim.Adam([*encoder.parameters(), *decoder.parameters()], lr=1e-3)
for step in range(3000):
# TopK sparsity: keep each sample's 4 largest latents and zero the rest
values, idx = encoder(acts).topk(4, dim=-1)
latents = torch.zeros(len(acts), 256).scatter(-1, idx, F.relu(values))
loss = (decoder(latents) - acts).pow(2).sum(-1).mean()
optimizer.zero_grad()
loss.backward()
optimizer.step()
directions = F.normalize(decoder.weight.T, dim=1) # one learned direction per latent
print(f"Unexplained variance: {loss.item() / (acts - acts.mean(0)).pow(2).sum(-1).mean().item():.3f}")
print(f"Features matching a single neuron: {(features.abs().max(dim=1).values > 0.9).sum().item()} of 64")
print(f"Features matching an SAE latent: {((directions @ features.T).max(dim=0).values > 0.9).sum().item()} of 64")Com no máximo 4 latentes ativos por amostra, o SAE deixa 7,1% da variância sem explicação. Nenhuma das 64 características inseridas se alinha com uma única dimensão de entrada com similaridade de cosseno superior a 0,9, enquanto as 64 se alinham com a direção do descodificador de algum latente do SAE.
Aplicações#
- Descoberta de características: Os investigadores rotulam cada latente recolhendo as entradas que mais o ativam, muitas vezes recorrendo a um LLM para escrever o rótulo, e usam as características para auditar o que um modelo representa.
- Direcionamento: Fixar uma característica num valor elevado altera o comportamento, tal como adicionar um vetor de direcionamento. Em maio de 2024, a Anthropic lançou brevemente o Golden Gate Claude, uma versão com a característica da ponte amplificada, de modo que a ponte surgia em quase todas as respostas.
- Rastreamento de circuitos: Os grafos de atribuição de 2025 da Anthropic usam transcodificadores entre camadas, uma variante de SAE que lê as ativações de uma camada e reconstrói as saídas das camadas MLP posteriores, para rastrear cálculos de várias etapas dentro do Claude 3.5 Haiku.
- Conjuntos abertos de SAE: A Gemma Scope da Google DeepMind lançou SAE JumpReLU para cada camada do Gemma 2 2B e 9B, e a Gemma Scope 2 acrescenta SAE e transcodificadores para os modelos Gemma 3, de 270M a 27B parâmetros. A biblioteca SAELens treina e carrega estes SAE.
- Modelos de visão: Os SAE treinados com ativações do CLIP e do Vision Transformer também encontram conceitos visuais interpretáveis. Um SAE precisa de um conjunto de dados de vetores de ativação, e
model.embed()no Ultralytics YOLO26 devolve um vetor de ativação com pooling médio por imagem, a partir de qualquer índice de camada; por predefinição, usa a penúltima camada.
Limitações#
Os SAE reconstroem as ativações de forma imperfeita, e substituir as ativações de uma camada pela reconstrução aumenta de forma mensurável a perda do modelo. As características encontradas dependem do tamanho do dicionário e da execução do treinamento, já que SAE mais largos dividem uma característica em várias mais específicas e alguns latentes nunca são ativados. Em março de 2025, a equipa de interpretabilidade da Google DeepMind informou que sondas baseadas em características de SAE tiveram resultados piores do que sondas lineares simples na deteção de intenção prejudicial em prompts fora da distribuição e afirmou que estava a dar menor prioridade à pesquisa fundamental sobre SAE, mantendo-os como uma entre várias ferramentas.
SAE e conceitos relacionados#
- Autoencoder padrão: Comprime os dados através de um gargalo mais estreito do que a entrada, para compressão ou redução da dimensionalidade. Um SAE amplia a camada oculta e impõe esparsidade para separar conceitos.
- Sondagem linear: Treina um classificador supervisionado para detetar um conceito escolhido antecipadamente. Um SAE é não supervisionado e descobre características sem rótulos.
- Engenharia de representações (RepE): Encontra direções de conceitos contrastando ativações em prompts pareados, enquanto as características de SAE resultam apenas da reconstrução.
- Codificação esparsa: Método mais antigo de aprendizagem de dicionários que os SAE aproximam com uma única passagem pelo codificador, em vez de otimizar cada entrada. Olshausen e Field (1996) mostraram que um código esparso aprendido com imagens naturais produz filtros localizados, orientados e semelhantes a arestas, que se assemelham aos campos recetivos das células simples do córtex visual primário.










