A autoatenção é um mecanismo fundamental usado em redes neurais, particularmente proeminente em modelos de transformadores, permitindo-lhes processar dados sequenciais de maneira eficaz. Ele permite que o modelo pese diferentes palavras ou elementos dentro de uma sequência de maneira diferente, concentrando-se mais nas partes relevantes durante o cálculo.
Componentes da autoatenção
-
Consultas, Chaves e Valores: Na autoatenção, a sequência de entrada é transformada em três vetores: Consulta, Chave e Valor. Esses vetores são obtidos da sequência de entrada por meio de transformações lineares, gerando esses componentes que serão utilizados para calcular os escores de atenção.
-
Pontuações de atenção: depois que esses vetores são obtidos, as pontuações de atenção são calculadas medindo a semelhança entre o vetor de consulta e os vetores-chave * de todos os elementos da sequência*. Isso normalmente é feito usando umproduto escalar, seguido porescalae aplicação de umafunção softmax para obter pesos de atenção para cada elemento.
-
Soma Ponderada: Os pesos de atenção obtidos são usados para pesar os vetores de Valor. Uma soma ponderada desses valores, com base em seus respectivos pesos de atenção, produz a saída da camada de autoatenção.
-
Atenção Multi-Head: Para capturar diferentes relacionamentos entre palavras ou elementos, vários conjuntos de transformações de Consulta, Chave e Valor são executados em paralelo, resultando em vários conjuntos de pesos de atenção e vetores de saída. Eles são então concatenados e transformados novamente para obter o resultado final.
Facilitando o aprendizado de dependências de longo alcance
A autoatenção é excelente na captura de dependências de longo alcance em sequências devido à sua capacidade de modelar diretamente interações entre todos os elementos na sequência. Arquiteturas tradicionais, como redes neurais recorrentes (RNNs), sofrem de problemas de desaparecimento ou explosão de gradiente, limitando sua capacidade de aprender dependências de longo alcance. A autoatenção, por outro lado, pode captar relações entre palavras ou elementos distantes sem esses problemas, tornando-a mais eficaz na compreensão do contexto e das relações dentro da sequência.
Vantagens sobre arquiteturas tradicionais
-
Paralelização: a autoatenção permite o cálculo paralelo de pontuações de atenção para todos os elementos em uma sequência, tornando-a mais eficiente do que o processamento sequencial em RNNs.
-
Dependências de longo alcance: Ao contrário dos RNNs, que lutam para capturar dependências em longas distâncias devido à sua natureza sequencial, a autoatenção pode capturar essas dependências de forma eficaz.
-
Comprimento de caminho reduzido: a autoatenção conecta diretamente todos os elementos em uma sequência, reduzindo o comprimento do caminho entre elementos distantes, permitindo melhor fluxo de gradiente durante o treinamento.
Limitações e complexidades computacionais
-
Complexidade quadrática: a autoatenção envolve comparações de pares entre todos os elementos em uma sequência, resultando em um aumento quadrático na computação à medida que o comprimento da sequência aumenta. Isso pode ser computacionalmente caro para sequências muito longas.
-
Requisitos de memória: Os transformadores, devido aos seus mecanismos de autoatenção, muitas vezes requerem mais memória em comparação com arquiteturas mais simples, como CNNs ou RNNs.
-
Mascaramento de atenção: lidar com sequências de comprimentos variáveis requer o uso de máscaras de atenção para lidar com o preenchimento, o que pode adicionar complexidade ao modelo e ao processo de treinamento.
Apesar destas limitações, a autoatenção provou ser um mecanismo altamente eficaz em tarefas de processamento de linguagem natural, e a investigação em curso visa abordar as suas complexidades computacionais para uma eficiência e escalabilidade ainda melhores.