A atenção multi-cabeça é um componente central da arquitetura Transformer (architecture) em Deep learning. Ela estende o mecanismo de atenção básico ao calcular várias operações de atenção em paralelo, cada uma com suas próprias projeções aprendidas de consultas, chaves e valores. Isso permite que o modelo capture diferentes tipos de relações e padrões dentro da sequência de entrada, como dependências sintáticas, correferências ou pistas posicionais, em múltiplos subespaços de representação. As saídas desses cabeçotes de atenção paralelos são então concatenadas e projetadas linearmente para produzir o resultado final, permitindo que o modelo atenda conjuntamente a informações de diferentes subespaços de representação em diferentes posições.
O conceito foi introduzido no artigo de 2017 "Attention Is All You Need" por pesquisadores do Google, incluindo Jakob Uszkoreit, Lukasz Kaiser e Niki Parmar. O artigo propôs o Transformer, que depende inteiramente de mecanismos de atenção e dispensa recorrências e convoluções, levando a melhorias significativas na velocidade de treinamento e no desempenho em tarefas de sequência para sequência. Desde então, a atenção multi-cabeça tornou-se um elemento fundamental de modelos de Large language model como GPT, BERT e T5, sendo amplamente utilizada em Natural language processing, visão computacional e reconhecimento de fala.
Mecanismo
No mecanismo de atenção, cada token de entrada é representado como um vetor, frequentemente chamado de incorporação de token. Para uma sequência de tokens, o modelo calcula três matrizes: consultas (Q), chaves (K) e valores (V). A pontuação de atenção entre uma consulta e uma chave é tipicamente calculada como um produto escalar, escalado pela raiz quadrada da dimensão das chaves. Essas pontuações são normalizadas usando uma função softmax para produzir pesos de atenção, que são então usados para calcular uma soma ponderada dos valores.
A atenção multi-cabeça executa esse processo várias vezes em paralelo, cada uma com diferentes projeções lineares aprendidas das consultas, chaves e valores originais. Por exemplo, com 8 cabeças, o modelo calcula 8 saídas de atenção separadas, cada uma focando em diferentes aspectos da sequência. As saídas são concatenadas e passadas por uma camada linear final. Esse design permite que o modelo atenda a informações de diferentes subespaços de representação, o que é particularmente útil para capturar padrões linguísticos diversos.
Diferentemente de pesos "fixos", que são definidos durante o treinamento, os pesos de atenção são "suaves" e calculados durante a passagem direta, o que significa que mudam a cada entrada. Isso permite que o modelo foque dinamicamente em partes relevantes da entrada, como ilustrado no exemplo de alinhamento em tradução automática: ao traduzir "I love you" para o francês, o modelo atribui altos pesos de atenção a "I" ao gerar "je", a "you" ao gerar "t'", e a "love" ao gerar "aime".
História
O mecanismo de atenção foi desenvolvido para abordar fraquezas em Recurrent neural networks (RNNs), que tendem a favorecer informações no final de uma frase e atenuar a importância de palavras anteriores. Mecanismos de atenção iniciais, como a atenção aditiva estilo Bahdanau (2014) e a atenção multiplicativa estilo Luong (2015), foram incorporados a arquiteturas de RNN codificador-decodificador para tradução automática. Esses permitiam que o decodificador acessasse diretamente todos os estados ocultos do codificador, em vez de depender apenas do estado oculto final.
O grande avanço veio com a autoatenção, onde cada elemento da sequência de entrada atende a todos os outros, permitindo que o modelo capture dependências globais. Essa ideia foi central para o Transformer, que substituiu completamente a recorrência por mecanismos de atenção. A arquitetura paralelizável do Transformer permitiu acelerações significativas no treinamento, levando à sua adoção em modelos como BERT, T5 e transformers gerativos pré-treinados (GPT).
Variantes
Várias variantes de atenção foram desenvolvidas, muitas implementando pesos suaves. Estas incluem:
- Programadores de pesos rápidos (1992): Uma rede neural "lenta" gera os pesos "rápidos" de outra rede neural através de produtos externos. Isso foi posteriormente renomeado para "autoatenção linearizada".
- Atenção estilo Bahdanau (atenção aditiva): Usa uma rede feed-forward para calcular pontuações de alinhamento.
- Atenção estilo Luong (atenção multiplicativa): Usa produtos escalares entre estados do decodificador e do codificador.
- Atenção posicional e atenção posicional fatorada: Incorporam informações posicionais nos cálculos de atenção.
- Atenção espacial e de canal para redes neurais convolucionais: Operam em dimensões espaciais ou canais de características.
Essas variantes recombinam entradas do lado do codificador para redistribuir efeitos a cada saída alvo, frequentemente usando uma matriz de correlação de produtos escalares para re-ponderar coeficientes.
Otimizações
O tamanho da matriz de atenção é proporcional ao quadrado do número de tokens de entrada, o que pode ser intensivo em memória para sequências longas. A atenção flash é uma implementação que reduz as necessidades de memória e aumenta a eficiência sem sacrificar a precisão. Ela particiona o cálculo da atenção em blocos menores que cabem na memória on-chip mais rápida da GPU, reduzindo a necessidade de armazenar grandes matrizes intermediárias.
A FlexAttention, desenvolvida pela Meta, é um kernel de atenção que permite aos usuários modificar as pontuações de atenção antes do softmax e escolher dinamicamente o algoritmo de atenção ideal, proporcionando flexibilidade para padrões de atenção personalizados.
Aplicações
A atenção é amplamente utilizada em processamento de linguagem natural, visão computacional e reconhecimento de fala. Em PNL, ela melhora a compreensão de contexto em tarefas como resposta a perguntas e sumarização. Em visão, a atenção visual ajuda modelos a focar em regiões relevantes da imagem, aprimorando detecção de objetos e legendagem de imagens.
Em Computer vision, transformers de visão (ViT) aplicam atenção multi-cabeça a patches de imagem. Mapas de atenção, que visualizam as pontuações de atenção como mapas de calor, tornaram-se uma forma comum de inspecionar o processo de decisão de modelos ViT. A propagação de atenção é um algoritmo recursivo que combina mapas de atenção de todas as camadas, calculando o produto escalar de mapas de atenção sucessivos.
Como transformers de visão são tipicamente treinados de forma autossupervisionada, os mapas de atenção geralmente não são sensíveis a classes específicas. Quando um cabeçote de classificação é anexado, mapas de atenção discriminativos por classe (CDAM) combinam mapas de atenção e gradientes em relação ao token de classe para fornecer explicações específicas de classe.
Impacto
A atenção multi-cabeça foi fundamental para o surgimento de Generative AI e Large language models. Ela permite que modelos processem sequências longas com eficiência e capturem dependências complexas, tornando-se um componente chave em sistemas desenvolvidos por organizações como OpenAI, Anthropic e Google DeepMind. A arquitetura também influenciou o design de hardware, com empresas como NVIDIA e Cerebras otimizando chips para cálculos baseados em atenção.
A pesquisa continua em melhorias de eficiência e interpretabilidade da atenção. Técnicas como atenção esparsa, atenção linear e métodos baseados em kernels visam reduzir a complexidade quadrática da atenção, enquanto ferramentas de interpretabilidade ajudam a entender o que os modelos aprendem. A atenção multi-cabeça permanece uma área vibrante de estudo em Machine learning e Artificial intelligence.