thumb|Mecanismo de atenção, visão geral No aprendizado de máquina, a atenção é um método que determina a importância de cada componente numa sequência em relação aos outros componentes dessa sequência. No processamento de linguagem natural, a importância é representada por pesos "suaves" (soft) atribuídos a cada palavra numa frase. De forma mais geral, a atenção codifica vetores chamados embeddings de tokens através de uma sequência de largura fixa que pode variar de dezenas a milhões de tokens de tamanho.
Ao contrário dos pesos "rígidos" (hard), que são calculados durante a passagem de treinamento para trás (backwards pass), os pesos "suaves" existem apenas na passagem para a frente (forward pass) e, portanto, mudam a cada etapa da entrada. Projetos anteriores implementavam o mecanismo de atenção num sistema serial de tradução de idiomas com rede neural recorrente (RNN), mas um projeto mais recente, nomeadamente o transformer, removeu a RNN sequencial mais lenta e baseou-se mais fortemente no esquema de atenção paralela mais rápido.
Inspirado por ideias sobre a atenção nos seres humanos, o mecanismo de atenção foi desenvolvido para abordar as fraquezas do uso de informações das camadas ocultas de redes neurais recorrentes. As redes neurais recorrentes favorecem informações mais recentes contidas em palavras no final de uma frase, enquanto as informações do início da frase tendem a ser atenuadas. A atenção permite a um token acesso igual a qualquer parte de uma frase diretamente, em vez de apenas através do estado anterior.
História
Décadas de 1950–1960Psicologia e biologia da atenção. Efeito coquetel — foco no conteúdo filtrando o ruído de fundo. Modelo de filtro de atenção, paradigma de relato parcial e controle de sacada.Década de 1980Unidades sigma-pi, redes neurais de ordem superior.Década de 1990Controladores de pesos rápidos (fast weight controllers) e ligações dinâmicas entre neurônios, antecipando mecanismos de chave-valor (key-value) na atenção.1998O filtro bilateral foi introduzido no processamento de imagens. Ele usa matrizes de afinidade em pares (pairwise) para propagar a relevância entre os elementos.2005As médias não locais (non-local means) estenderam a filtragem baseada em afinidade na redução de ruído (denoising) de imagens, usando kernels de similaridade gaussiana como pesos fixos semelhantes à atenção.2014seq2seq com RNN + Atenção. A atenção foi introduzida para aprimorar a tradução do codificador-decodificador RNN, particularmente para frases longas. Veja a seção Visão geral. As Redes Neurais Atencionais introduziram um mecanismo de seleção de características aprendido usando modulação cognitiva top-down, mostrando como os pesos de atenção podem destacar entradas relevantes.2015A atenção foi estendida à visão para tarefas de legendagem de imagens.2016A autoatenção (self-attention) foi integrada em modelos baseados em RNN para capturar dependências intra-sequência. A autoatenção foi explorada em modelos de atenção decomponíveis para inferência de linguagem natural e embeddings estruturados de sentenças autoatentivas.2017A arquitetura Transformer introduzida no artigo de pesquisa Attention Is All You Need formalizou a autoatenção de produto escalar escalonado:
Redes de relação e Transformers de conjuntos aplicaram a atenção a conjuntos não ordenados e raciocínio relacional, generalizando modelos de interação em pares.2018As redes neurais não locais estenderam a atenção à visão computacional capturando dependências de longo alcance no espaço e no tempo. As redes de atenção em grafos aplicaram mecanismos de atenção a dados estruturados em grafos.2019–2020Transformers eficientes, incluindo Reformer, Linformer, e Performer, introduziram aproximações escaláveis de atenção para sequências longas.2019+As redes de Hopfield foram reinterpretadas como sistemas de atenção baseados em memória associativa, e os vision transformers (ViTs) alcançaram resultados competitivos na classificação de imagens. Transformers foram adotados em vários domínios científicos, incluindo AlphaFold para o dobramento de proteínas, CLIP para pré-treinamento de visão e linguagem, e modelos de segmentação densa baseados em atenção como CCNet e DANet.
Pesquisas (surveys) adicionais sobre o mecanismo de atenção em aprendizado profundo são fornecidas por Niu et al. e Soydaner.
O grande avanço veio com a autoatenção, onde cada elemento na sequência de entrada presta atenção a todos os outros, permitindo que o modelo capture dependências globais. Esta ideia foi central para a arquitetura Transformer, que substituiu a recorrência por mecanismos de atenção. Como resultado, os Transformers tornaram-se a base para modelos como o BERT, o T5 e os transformers generativos pré-treinados (GPT).
Visão geral A era moderna da atenção de máquina foi revitalizada ao enxertar um mecanismo de atenção (Fig. 1. laranja) a um Codificador-Decodificador. + thumb|Sequência animada de tradução de idiomas +LegendaRótuloDescrição100Comprimento máx. da frase300Tamanho do embedding (dimensão da palavra)500Comprimento do vetor oculto9k, 10kTamanho do dicionário das linguagens de entrada e saída, respetivamente.x, YVetores de dicionário 1-hot de 9k e 10k. x → x implementado como uma tabela de pesquisa (lookup table) em vez de multiplicação de vetores. Y é o maximizador 1-hot da camada linear D do Decodificador; ou seja, ele pega o argmax da saída da camada linear de D.xVetor de embedding de palavras de comprimento 300. Os vetores são geralmente pré-calculados de outros projetos, como GloVe ou Word2Vec.hVetor oculto do codificador de comprimento 500. A cada ponto no tempo, este vetor resume todas as palavras precedentes antes dele. O h final pode ser visto como um vetor de "frase", ou um vetor de pensamento como Hinton o chama.sVetor de estado oculto do decodificador de comprimento 500.ECodificador de rede neural recorrente de 500 neurônios. 500 saídas. A contagem de entrada é 800 — 300 do embedding de origem + 500 de conexões recorrentes. O codificador alimenta diretamente o decodificador apenas para inicializá-lo, mas não depois; portanto, essa conexão direta é mostrada de forma muito fraca.DDecodificador de 2 camadas. A camada recorrente tem 500 neurônios e a camada linear totalmente conectada tem 10k neurônios (o tamanho do vocabulário alvo). A camada linear sozinha tem 5 milhões (500 × 10k) de pesos – ~10 vezes mais pesos do que a camada recorrente.scorePontuação de alinhamento de comprimento 100wPeso de atenção vetorial de comprimento 100. Estes são pesos "suaves" (soft) que mudam durante a passagem direta (forward pass), em contraste com os pesos neuronais "rígidos" (hard) que mudam durante a fase de aprendizado.AMódulo de atenção – isto pode ser um produto escalar de estados recorrentes, ou as camadas totalmente conectadas de consulta-chave-valor (query-key-value). A saída é um vetor w de comprimento 100.H500×100. 100 vetores ocultos h concatenados numa matrizcVetor de contexto de comprimento 500 = H * w. c é uma combinação linear de vetores h ponderados por w.
A Figura 2 mostra a operação interna passo a passo do bloco de atenção (A) na Fig 1.
Interpretando os pesos de atenção Na tradução entre idiomas, o alinhamento é o processo de corresponder palavras da frase de origem a palavras da frase traduzida. Redes que realizam tradução literal sem considerar a ordem das palavras mostrariam as pontuações mais altas ao longo da diagonal (dominante) da matriz. A dominância fora da diagonal mostra que o mecanismo de atenção é mais matizado.
Considere um exemplo de tradução de I love you para o francês. Na primeira passagem pelo decodificador, 94% do peso da atenção está na primeira palavra em inglês I, então a rede oferece a palavra je. Na segunda passagem do decodificador, 88% do peso da atenção está na terceira palavra em inglês you, então ela oferece t'''. Na última passagem, 95% do peso da atenção está na segunda palavra em inglês love, então ela oferece aime.
No exemplo I love you, a segunda palavra love está alinhada com a terceira palavra aime. Empilhar vetores de linha suaves juntos para je, t', e aime produz uma matriz de alinhamento: Iloveyouje0.940.020.04t'0.110.010.88aime0.030.950.02 Às vezes, o alinhamento pode ser de múltiplos para múltiplos. Por exemplo, a frase em inglês look it up corresponde a cherchez-le. Assim, pesos de atenção "suaves" funcionam melhor do que pesos de atenção "rígidos" (definindo um peso de atenção para 1 e os outros para 0), pois gostaríamos que o modelo criasse um vetor de contexto consistindo de uma soma ponderada dos vetores ocultos, em vez de "o melhor", pois pode não haver um melhor vetor oculto.
Variantes thumb|Comparação do fluxo de dados em CNN, RNN e autoatenção Muitas variantes de atenção implementam pesos suaves, tais como
programadores de pesos rápidos (fast weight programmers), ou controladores de pesos rápidos (1992). Uma rede neural "lenta" emite os pesos "rápidos" de outra rede neural através de produtos externos. A rede lenta aprende por descida de gradiente. Mais tarde, foi renomeada como "autoatenção linearizada". Atenção ao estilo Bahdanau, também referida como atenção aditiva, Atenção ao estilo Luong, que é conhecida como atenção multiplicativa, Mecanismos de atenção iniciais semelhantes à autoatenção moderna foram propostos usando redes neurais recorrentes. No entanto, a autoatenção altamente paralelizável foi introduzida em 2017 e usada com sucesso no modelo Transformer, atenção posicional e atenção posicional fatorada.
Para redes neurais convolucionais, os mecanismos de atenção podem ser distinguidos pela dimensão na qual operam, nomeadamente: atenção espacial, atenção de canal, ou combinações.Estas variantes recombinam as entradas do lado do codificador para redistribuir esses efeitos a cada saída alvo. Frequentemente, uma matriz de correlação de produtos escalares fornece os coeficientes de reponderação. Nas figuras abaixo, W é a matriz de pesos de atenção de contexto, semelhante à fórmula na seção Visão geral acima.
1. produto escalar codificador-decodificador 2. QKV codificador-decodificador 3. produto escalar apenas codificador 4. QKV apenas codificador 5. Tutorial do Pytorch thumb|Tanto o codificador como o decodificador são necessários para calcular a atenção. thumb|Tanto o codificador como o decodificador são necessários para calcular a atenção. thumb|O decodificador não é usado para calcular a atenção. Com apenas 1 entrada no corr, W é uma autocorrelação de produtos escalares. wij = xi xj. thumb|O decodificador não é usado para calcular a atenção. thumb|Uma camada totalmente conectada é usada para calcular a atenção em vez da correlação de produtos escalares.