Logo NascimentoIgor Nascimento / Blog
Deep Learning

A recusa mora numa direção: o que a geometria do residual stream ensina sobre alinhamento

Modelos de linguagem pensam em conceitos ou só decoram padrões? A interpretabilidade mecanística tem uma resposta parcial e desconfortável: comportamentos complexos, como recusar uma instrução, se concentram em poucas direções do espaço de ativação, e podem ser deslocados com álgebra linear durante a inferência. Uma conversa sobre o que isso revela, o que isso custa e o que isso muda para quem coloca modelo em produção.

Deep LearningIA aplicada15 min de leituraIgor Nascimento

A pergunta que a interpretabilidade tenta responder

Quando um modelo de linguagem se recusa a atender uma instrução, o que aconteceu lá dentro? A resposta intuitiva é "ele aprendeu, em bilhões de parâmetros, que esse tipo de pedido merece um não". É uma resposta que não explica nada, porque não diz onde essa decisão vive nem como ela se manifesta. A interpretabilidade mecanística é a área que insiste nessa pergunta: em vez de tratar o Transformer como caixa-preta e medir só entrada e saída, ela abre a rede e procura, nos estados internos, as estruturas que governam o comportamento.

O que se descobriu nos últimos anos é mais específico do que eu esperava quando comecei a acompanhar o tema. Comportamentos que parecem difusos e de alto nível, como recusar, estão, em boa medida, concentrados em direções específicas do espaço de ativação. Não espalhados por toda parte. Concentrados. E isso tem consequências práticas que vão muito além da curiosidade acadêmica.

O residual stream como um mapa

Para entender a descoberta é preciso entender onde ela foi feita. Um Transformer não é uma sequência de transformações em que cada camada substitui a anterior. Ele tem um fluxo residual: um vetor por token, de dimensão fixa (4.096 num modelo de 7 a 8 bilhões de parâmetros, por exemplo), que atravessa todas as camadas. Cada bloco de atenção e cada bloco feed-forward lê desse vetor, calcula alguma coisa, e soma o resultado de volta. Nada é apagado, tudo é acumulado.

Isso faz do residual stream uma espécie de barramento compartilhado. Camadas iniciais escrevem coisas sintáticas, camadas intermediárias escrevem coisas semânticas, camadas finais preparam a predição do próximo token. E o que uma camada escreve, qualquer camada posterior pode ler. A hipótese da representação linear, que organiza boa parte da pesquisa, diz que conceitos tendem a ser codificados como direções nesse espaço: um conceito está mais ou menos presente conforme o vetor de ativação tem componente maior ou menor naquela direção.

Uma analogia que ajuda

Pense no residual stream como uma mesa de trabalho onde cada camada deixa bilhetes. Os bilhetes se sobrepõem, e qualquer camada seguinte lê a mesa inteira de uma vez. A hipótese linear diz que "esta instrução é perigosa" é um bilhete com um formato reconhecível, que fica na mesma posição da mesa toda vez. Se isso for verdade, dá para achar o formato. E se dá para achar, dá para apagar ou reforçar.

A descoberta: a recusa como uma coordenada

O trabalho que cristalizou isso foi Refusal in Language Models Is Mediated by a Single Direction (Arditi e colegas, 2024), testado em treze modelos abertos de várias famílias, de poucos bilhões até 72 bilhões de parâmetros. A receita experimental é simples de enunciar. Você monta dois conjuntos de instruções: um de pedidos que o modelo normalmente atende, outro de pedidos que o modelo normalmente recusa. Passa os dois pelo modelo, e em uma camada intermediária, numa posição de token fixa, coleta os vetores do residual stream. Calcula a média de cada grupo e subtrai:

\[ \vec r = \mu_{\text{recusa}} - \mu_{\text{aceite}} \]

Esse vetor, a diferença de médias, é a "direção de recusa". A afirmação do trabalho não é que ela existe, porque qualquer par de conjuntos tem uma diferença de médias. A afirmação é o que acontece quando você intervém nela:

Matematicamente, a remoção é uma projeção ortogonal. Com \(\hat r\) sendo a direção normalizada:

\[ x' = x - \hat r\, \hat r^{\top} x \]

E a adição é uma soma escalada, \(x' = x + \alpha \hat r\), em que \(\alpha\) controla a intensidade. Nada disso toca nos pesos. É uma operação sobre o vetor em trânsito, durante o forward pass. A decisão de recusar, que parecia um julgamento complexo, se comporta quase como uma coordenada linear no espaço latente.

O detalhe que mais me impressiona é a última etapa do trabalho: como a projeção é uma operação linear, ela pode ser incorporada nas matrizes que escrevem no residual stream. Chama-se ortogonalização de pesos. O resultado é um modelo que se comporta como se a direção tivesse sido removida, sem nenhum gancho em tempo de execução e sem nenhum passo de treinamento. Fine-tuning não foi necessário. Um gradiente sequer foi calculado.

Steering versus fine-tuning: o que cada um compra

A intervenção por ativação, ou activation steering, se tornou uma família de técnicas. Além da diferença de médias, há variações que usam vetores contrastivos por par de exemplos, que combinam várias camadas, e a Engenharia de Representação (RepE, Zou e colegas, 2023), que aplica a mesma lógica a honestidade, emoção, viés e até à tendência de buscar poder em cenários simulados. A pergunta de engenharia é: quando isso é preferível a treinar?

Fine-tuning (SFT, RLHF, DPO)

  • Reescreve matrizes de pesos inteiras
  • Precisa de dados, GPU e um ciclo de validação
  • Risco de esquecimento catastrófico e de regressão em outras capacidades
  • Resultado permanente, difícil de desfazer e de explicar

Steering por ativação

  • Não altera pesos; opera no vetor em trânsito
  • Precisa de algumas centenas de exemplos contrastivos e um forward pass
  • Reversível: é um interruptor com um escalar
  • Resultado explicável: "somei isto, nesta camada, com este peso"

Dito assim parece que steering ganha sempre. Não ganha, e os limites são importantes:

O que isso ensina sobre alinhamento

Aqui está a parte desconfortável, e é a que mais vale a conversa. Se um comportamento de segurança pode ser deslocado por uma projeção, isso diz algo sobre como esse comportamento foi instalado. As técnicas atuais de alinhamento, RLHF e DPO entre elas, são aplicadas depois do pré-treinamento, com relativamente poucos dados, e ajustam o modelo na margem. O que a geometria sugere é que elas frequentemente criam uma camada comportamental externa, uma espécie de verniz que decide "recusar" ou "atender" com base em poucas features, em vez de alterar as representações conceituais profundas da rede.

Isso tem um nome na literatura: alinhamento superficial. O modelo que recusa continua tendo, nas camadas internas, toda a capacidade e todo o conhecimento necessários para atender. A recusa é um portão colocado na frente, e um portão de uma direção só.

Há evidência complementar que aponta na mesma direção: Qi e colegas (2024) mostraram que boa parte do efeito do alinhamento se concentra na distribuição dos primeiros tokens da resposta. O modelo aprendeu, sobretudo, a começar de um certo jeito quando detecta um pedido problemático. Ataques que forçam o início da resposta exploram exatamente essa rasura.

A leitura correta disso exige cuidado, e é onde muita gente erra. Não significa que o modelo não tem o conceito. Significa que o conceito ("isto é um pedido perigoso") e a política ("portanto eu recuso") são representações separadas, e que o alinhamento atual mexe quase só na segunda. Depois da ablação, o modelo continua sabendo identificar o risco; ele apenas deixa de converter o reconhecimento em comportamento. Dito de outro jeito: o alinhamento instala um classificador raso sobre representações conceituais que o pré-treino já tinha construído.

Por que isso importa para quem não pesquisa alinhamento

Porque é uma lição sobre onde o seu comportamento de segurança vive. Se você constrói um produto em cima de um modelo aberto e confia na recusa do modelo como barreira, você está confiando num verniz que uma projeção remove. A barreira de verdade precisa estar fora do modelo: em filtros de entrada e saída, em permissões do sistema, em auditoria do que foi gerado. O modelo é uma camada de defesa, nunca a única. Isso já era boa prática antes; a geometria explica por que é indispensável.

Há também um lado construtivo. Se a recusa é uma direção, ela é observável. Um classificador linear barato, uma probe, treinado sobre o residual stream, consegue dizer em tempo real "o modelo está no estado interno de recusa" ou "o modelo está no estado interno de incerteza", antes mesmo de o texto sair. Isso abre uma forma de monitoramento que não existe quando se olha só a saída: observabilidade do estado interno, com custo de um produto escalar por token. É a mesma ideia de um health check, só que dentro da rede.

E há o caminho que a Anthropic mostrou com os autoencoders esparsos: em vez de extrair uma direção por contraste, decompor as ativações num dicionário de milhões de features mais interpretáveis, cada uma correspondendo a um conceito mais ou menos legível. O experimento do "Golden Gate Claude", em 2024, foi exatamente steering sobre uma feature dessas: amplificar a feature da ponte Golden Gate fazia o modelo trazê-la para qualquer assunto. É steering com um mapa mais detalhado. E mais caro: treinar o dicionário custa muito mais do que calcular uma diferença de médias.

Os trade-offs de usar isso em produção

UsoO que ganhaO que arrisca
Controle de tom ou personaAjuste reversível sem retreino; um escalar por comportamentoDegradação de coerência fora da janela; interação entre vários vetores é pouco previsível
Redução de viés de expressãoBarato, rápido de iterarMascarar não é remover; o viés pode reaparecer sob outro prompt
Monitoramento com probesObservabilidade do estado interno a custo quase zeroProbe treinada numa distribuição falha em outra; precisa de recalibração
Reforçar a recusa em domínio sensívelPortão mais rígido sem tocar nos pesosFalso positivo em pedidos legítimos; o vetor não entende contexto de negócio

Em todos os casos, o padrão é o mesmo: steering é uma ferramenta de ajuste fino em tempo de execução, não um substituto para alinhamento bem feito nem para barreiras fora do modelo. O que ela faz melhor do que qualquer outra é ser honesta sobre o que está fazendo. "Somei este vetor nesta camada" é uma explicação que fine-tuning nunca vai conseguir dar.

Há ainda a questão do uso dual, que não dá para ignorar. A mesma álgebra que permite reforçar a recusa permite removê-la, e modelos abertos com a direção ortogonalizada circulam publicamente. Os autores do trabalho original discutiram isso abertamente, e a conclusão deles é a que eu assino: a fragilidade existe quer se publique quer não, e conhecê-la é a condição para construir alinhamento que não dependa de um portão de uma direção só.

Voltando à pergunta inicial

Modelos pensam em conceitos ou decoram padrões? A geometria do residual stream dá uma resposta que não é nem uma coisa nem outra. Há estrutura: conceitos têm direções, comportamentos têm coordenadas, e isso é mais do que memorização estatística bruta. Mas a estrutura é linear demais e rasa demais nos lugares em que gostaríamos que fosse profunda. Um modelo cuja noção de "isto é perigoso" cabe numa projeção não tem a noção; tem um detector.

Entender essa geometria é o caminho para modelos mais transparentes e mais controláveis. E, no curto prazo, é o argumento mais forte que conheço para não depositar no modelo uma responsabilidade que ele carrega numa direção só.

Resumo da conversa