4. Identificação de Objetos Indiretos (IOI)
Um circuito bastante conhecido no GPT-2 é o de identificação de objetos indiretos. Como o próprio nome indica, a tarefa performada por esse circuito consiste em completar objetos indiretos em sentenças. Por exemplo, na sentença João e Maria fugiram para a floresta. João confiava em
, é esperado que o modelo complete-a com token Maria
.
É bastante razoável questionar a importância de estudar esse circuito. Por que essa tarefa seria relevante? As razões do laboratório de Redwood Research para o desenvolvimento do artigo “Interpretability in the Wild” 1 se baseiam no fato de que o circuito é um dos primeiros a serem desenvolvidos (pela frequência dessa estrutura gramatical) e também na facilidade de mensurar essa capacidade.
Esperamos que a sequência da sentença João confiava em
seja Maria
, e não João
, e podemos medir a habilidade de resolução do problema calculando a diferença de probabilidade entre esses dois tokens. Além disso, a diferença de logits é bastante explicativa, pois evidencia a capacidade do modelo de identificar o objeto indireto da sentença, não apenas a repetição de nomes.
Nesse capítulo, trataremos simultaneamente do circuito de Identificação de Objetos Indiretos e de ferramentas importantes de Mechanistic Interpretability utilizadas para investigar e identificar esse circuito.
Técnicas para identificações de circuitos
Definição (Atribuição Direta de Logits (DLA)). Aplicação de um unembedding e LayerNorm (normalização da saída de uma camada) diretamente ao output de um nó, realizada com objetivo de compreender a contribuição de cada nó para a predição do próximo token.
Observações:
- No contexto de IOI, utilizamos a atribuição direta à diferença de logits.
- O mesmo processo pode ser realizado para obter a decomposição de importância em diferentes níveis: para cada bloco de atenção, para cada head de atenção.
- O DLA não leva em conta que nós posteriores dependem dos anteriores, e outputs de nós iniciais podem ser desconsiderados por nós posteriores, e portanto ter pouca ou nenhuma significância para o resultado final.
- É considerado um processo de denoising, pois removemos ruído ao decompor as saídas em contribuições de cada nó e analisar quais são mais relevantes.
Definição (Patching de ativações 2). O Patching de ativações é o processo de submeter o modelo a uma execução correta, em que obtemos uma predição de token certa, e uma execução corrompida, em que não obtemos o token certo. Posteriormente, há uma intervenção na execução corrompida em alguma ativação para inserção (patching) da ativação equivalente da execução correta. Ao final, mede-se o impacto da mudança na predição de tokens.
Observações:
- É considerado um processo de noising, pois adicionamos ruído ao experimentar diferentes patchings e avaliar o efeito na probabilidade do token correto.
- Podemos realizar patching em heads de atenção, em uma MLP, ou mesmo em valores do fluxo residual.
- No contexto de IOI, podemos considerar uma execução correta
João e Maria foram à floresta. João deu um pão a Maria
, e uma execução corrompidaJoão e Maria foram à floresta. João deu um pão a João
. Realizar um patching de ativação nos permite compreender que partes do modelo estão corretamente identificando objetos indiretos
Processo corrompido inicial e patching de ativação do processo correto no processo corrompido.
Definição (Patching de conexões). Processo de submeter o modelo a uma execução correta, em que obtemos uma predição de token certa, e uma execução corrompida, em que não obtemos o token certo. Posteriormente, há uma intervenção na execução corrompida em alguma interação entre ativações (uma aresta) para inserção (patching) da conexão equivalente da execução correta. Ao final, mede-se o impacto da mudança na predição de tokens.
Observações:
- Procura-se entender o que acontece quando o input direto da head
[A]
para a head[B]
é trocado pelo input de[A']
, o valor que a head teria sob outra distribuição, mantendo igual todo o resto. - O objetivo desse tipo de patching é mais específica: busca-se compreender a importância do circuito formado pela conexão entre duas heads de atenção.
- A implementação é complexa, já que a atualização desse valor ocorre dentro de processos maiores do fluxo residual, e não podemos alterar nenhuma outra interação.
Processo corrompido inicial e patching de conexões do processo correto no processo corrompido.
Funcionamento do circuito de IOI
Através das técnicas apresentadas anteriormente, foi possível compreender o funcionamento do circuito de IOI 1. Agora, traremos uma visão intuitiva do processo.
Vamos retomar a analogia da seção de Transformers de atenção. Imagine, novamente, a fila de pessoas em que cada um possui um token, e seu objetivo é descobrir o token da pessoa a sua frente. Retomamos as mesmas regras para realizar perguntas: cada pessoa pode passar perguntas para quem está atrás de si na fila e nunca para frente, e qualquer um atrás pode escolher responder, passando informação para quem fez a pergunta.
Teremos agora a frase João e Maria foram a floresta. João deu um pão para Maria
. Nesse caso, como tratamos de Identificação de Objeto Indireto, a pessoa que possui o token para
precisa concluir que o token a sua frente é Maria
.
- Cada pessoa na fila representa um vetor no fluxo residual. Inicialmente, só possuem informações do seu próprio token, mas conforme perguntam e recebem respostas passam a armazenar mais informações.
- A operação executada por um head de atenção é representada por um par pergunta-resposta, onde a pergunta representa a query, quem responderá é determinado pela key e a resposta será o value.
Agora podemos partir para o circuito IOI. Cada bullet representa uma classe de heads de atenção que faz parte da identificação do circuito:
- Heads de tokens duplicados: a pessoa com o segundo token
João
pergunta “Alguém mais tem um tokenJoão
?” e recebe a resposta do primeiro tokenJoão
, assim como sua posição. Agora ele sabe que o seu token é repetido e também a localização da primeira ocorrência. - Heads de inibição-S: o token atual (
para
) pergunta “Que nomes são repetidos?”, e recebe resposta do segundo tokenJoão
, informando que esse token é repetido e que o primeiroJoão
está na 1ª posição. - Heads de mover nomes: o token atual (
para
) pergunta “Alguém tem um nome que não sejaJoão
e não esteja na 1ª posição?” e recebe resposta do tokenMaria
. Utilizamos essa resposta como previsão. ]
Definição (circuito de IOI). Circuito composto por heads de tokens duplicados (DTH), heads de inibição-S (SIH) e heads de mover nomes (NMH) que realiza a predição de objetos indiretos.
Observações:
- O circuito pode ter variações. Por exemplo, o token seguinte ao primeiro
João
(e) poderia já ser ter informações do token atrás de si (head de token anterior), e portanto responder à query do DTH. - Existem heads de mover nomes de backup. Isto é, quando realizamos ablation nas NMH, estas heads passam a realizar o trabalho. Uma possível explicação é que essa capacidade tenha surgido para lidar com o dropout (regularização que remove aleatoriamente neurônios da rede a cada iteração), garantindo assim que o modelo ainda possa funcionar adequadamente mesmo quando algumas partes são “desativadas”.
Wang, K., Variengien, A., Conmy, A., Shlegeris, B., & Steinhardt, J. (2022). Interpretability in the Wild: a Circuit for Indirect Object Identification in GPT-2 small. ↩︎ ↩︎
Meng, K., Bau, D., Andonian, A., & Belinkov, Y. (2022). Locating and Editing Factual Associations in GPT. Advances in Neural Information Processing Systems, 36. ↩︎