Conceitos
Self-attention e a arquitetura Transformer
Intuição
Imagine ler uma frase longa de duas formas: palavra por palavra, só entendendo a próxima depois de terminar a anterior, ou olhando a frase inteira de uma vez e deixando cada palavra consultar diretamente todas as outras para descobrir quais importam para o seu sentido. O primeiro jeito é fiel à ordem, mas é lento e faz a informação de uma palavra distante passar por muitos intermediários. O segundo conecta qualquer par de palavras em um único passo, e como no treino todas as palavras da frase são tratadas ao mesmo tempo, esse trabalho pode ser dividido entre muitos processadores em paralelo.
Como funciona
As redes recorrentes (como LSTM e GRU) calculam o estado da posição t a partir do estado da posição anterior e da entrada em t, o que, segundo os autores, impede a paralelização dentro de um mesmo exemplo de treino. O Transformer dispensa recorrência e convoluções e usa só atenção: ela mapeia uma consulta (query) e um conjunto de pares chave-valor para uma soma ponderada dos valores, e o peso vem da compatibilidade entre a consulta e cada chave. No paper isso é o produto escalar escalado, em que o produto da consulta com todas as chaves é dividido pela raiz da dimensão das chaves e passa por um softmax; na self-attention, consultas, chaves e valores vêm da saída da camada anterior, então cada posição atende a todas as posições. Em vez de uma única atenção, a multi-head projeta consultas, chaves e valores h vezes com projeções lineares aprendidas, aplica a atenção em paralelo, concatena e projeta de novo (h = 8 cabeças de dimensão 64 na configuração base), o que permite atender a diferentes subespaços de representação em diferentes posições. Como não há recorrência nem convolução, a ordem entra por codificações posicionais de senos e cossenos somadas aos embeddings de entrada; embeddings posicionais aprendidos deram resultados quase idênticos. No decodificador, a atenção própria é mascarada para que a posição i dependa só de posições anteriores. A Tabela 1 compara as camadas, com n o comprimento da sequência e d a dimensão da representação: self-attention custa O(n² · d) por camada, com O(1) operações sequenciais e caminho máximo O(1) entre duas posições; a camada recorrente custa O(n · d²), com O(n) operações sequenciais e caminho O(n). Por isso a self-attention é mais rápida que a recorrente quando n é menor que d, mas o termo n² faz o custo crescer rápido em sequências longas.
Na prática
No paper, essa arquitetura foi avaliada em tradução automática: o modelo grande alcançou 28,4 BLEU no inglês-alemão do WMT 2014, mais de 2 BLEU acima dos melhores resultados anteriores, e o modelo base levou cerca de 12 horas de treino em 8 GPUs P100. Os autores indicam que n menor que d é comum nas representações de sentenças usadas em tradução (word-piece e byte-pair), e para entradas muito longas propõem como trabalho futuro restringir a atenção a uma vizinhança de tamanho r, com custo O(r · n · d), ao preço de um caminho máximo maior, O(n/r). O paper não descreve usos posteriores da arquitetura.
Use em um desenho
Pratique na escola de System Design os casos que dependem deste conceito.