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 Wild1 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 corrompida Joã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 token João?” e recebe a resposta do primeiro token Joã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 token João, informando que esse token é repetido e que o primeiro João está na 1ª posição.
  • Heads de mover nomes: o token atual (para) pergunta “Alguém tem um nome que não seja João e não esteja na 1ª posição?” e recebe resposta do token Maria. 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”.

  1. 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. ↩︎ ↩︎

  2. Meng, K., Bau, D., Andonian, A., & Belinkov, Y. (2022). Locating and Editing Factual Associations in GPT. Advances in Neural Information Processing Systems, 36. ↩︎