Ícone do site AnomIA

Explicando o mecanismo de Autoatenção das LLMs

O Mecanismo de Atenção (especificamente o Self-Attention ou Autoatenção) é a inovação matemática que tornou as LLMs viáveis. Antes dele, as redes neurais processavam texto de forma sequencial, esquecendo o início da frase ao chegar no final. O mecanismo de atenção resolveu isso permitindo que o modelo foque dinamicamente nas partes mais relevantes de todo o texto, não importa a distância entre as palavras.

Para realizar esse cálculo, os criadores do Transformer usaram uma metáfora inspirada em sistemas de busca em bancos de dados. Cada token (palavra/subpalavra) projetado no modelo é transformado em três vetores diferentes através de matrizes de pesos que o modelo aprende durante o treino:

  1. Query (Consulta – Q): Representa “o que eu estou procurando”.
  2. Key (Chave – K): Representa “o que eu tenho a oferecer” (o rótulo/indexação de cada palavra no texto).
  3. Value (Valor – V): Representa “o conteúdo real” da palavra, que será extraído se houver uma correspondência entre a Query e a Key.

A Equação da Atenção

Toda essa intuição é resumida na famosa equação do Scaled Dot-Product Attention (Atenção por Produto Escalar Escalonado):

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

Vamos destrinchar o passo a passo dessa fórmula:

  1. QKTQK^T (Multiplicação de Matrizes): Multiplicamos a matriz de consultas (Q) pela transposta da matriz de chaves (K). Isso calcula um produto escalar entre cada palavra e todas as outras, gerando uma matriz de similaridade (pontuação bruta de atenção).
  2. Dividido por dk\sqrt{d_k} (Escalonamento): Dividimos o resultado pela raiz quadrada da dimensão dos vetores de chave (dkd_k). Isso evita que os valores fiquem gigantescos em dimensões altas, o que faria o gradiente sumir durante o treinamento.
  3. softmax(…)\text{softmax}(\dots) (Normalização): Aplicamos a função Softmax para transformar essas pontuações brutas em probabilidades (números entre 0 e 1). Isso define matematicamente quanto de atenção a palavra A deve dar para a palavra B.
  4. Multiplicado por V (Ponderação): Por fim, multiplicamos essas probabilidades pelos valores reais (V). Palavras com alta atenção mantêm seus valores intactos, enquanto palavras irrelevantes são silenciadas (multiplicadas por valores próximos de zero).

Explicação detalhada para Equação de Atenção

Para entender a Equação da Atenção na prática, vamos criar um cenário do dia a dia.

Imagine que você está desenvolvendo um sistema de IA para uma biblioteca universitária e um aluno faz a seguinte pergunta (o nosso texto de entrada):

“Onde encontro o artigo sobre LLM?”

Vamos focar em como o modelo calcula a atenção para a palavra “artigo”.

Queries, Keys e Values

Para cada palavra da frase, o modelo gera três vetores (Q, K, V) de tamanho reduzido (vamos simplificar para apenas 2 dimensões para facilitar a matemática visual). Também para simplificar, algumas palavras da frase foram removidas, sendo essas as stopwords: onde; o; sobre.

Imagine que as nossas dimensões sejam:

Nossos vetores (simplificados) seriam:

Aplicando a Equação Passo a Passo

A fórmula que vamos resolver é:

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

Passo A: O Produto Escalar (QKTQK^T)

Primeiro, a Query de “artigo” (Q) faz uma multiplicação de matrizes com as Keys (K) de todas as palavras para ver quem tem mais afinidade. O produto escalar mede essa direção comum.

Resultado temporário (Score Bruto): [1.37, 0.90, -0.80]

(Note que “artigo” se correlacionou muito com ele mesmo e fortemente com “LLM”, mas rejeitou “encontro”).

Passo B: O Escalonamento (÷dk\div \sqrt{d_k})

Como nossos vetores originais têm dimensão dk=2d_k = 2, dividimos os valores por 2≈1.41\sqrt{2} \approx 1.41. Isso impede que os números fiquem extremos em modelos reais de alta dimensão (onde dkd_k costuma ser 64 ou mais).

Resultado Escalonado: [0.97, 0.64, -0.57]

Passo C: O Softmax

Agora, aplicamos a função matemática Softmax. Ela converte esses valores arbitrários em probabilidades (que somam exatamente 1.0 ou 100%), esmagando valores negativos e destacando os maiores.

Após aplicar a matemática do Softmax aos nossos valores escalonados, obtemos a Matriz de Atenção final para a palavra “artigo”:

Isso diz ao modelo: Quando estiver processando o significado de ‘artigo’, dê 53% de importância a ele mesmo, 37% à palavra ‘LLM’ que está adiante, e ignore quase por completo a palavra ‘encontro’.

Eu pulei uma série de etapas para cálculo do Passo C para ficar mais fácil de entender a Equação da Atenção, mas no final deste artigo tem uma explicação detalhada sobre os cálculos associados com o Passo C.

Passo D: A Ponderação Final (×V\times V)

Por fim, multiplicamos essas porcentagens pelos vetores de valor (V) correspondentes:

Vetor de Saída=(0.52×Vartigo)+(0.37×VLLM)+(0.11×Vencontro)\text{Vetor de Saída} = (0.52 \times V_{\text{artigo}}) + (0.37 \times V_{\text{LLM}}) + (0.11 \times V_{\text{encontro}})

Este novo vetor resultante não representa mais apenas a palavra “artigo” isolada. Ele é uma representação matemática rica que significa: “um artigo que está intimamente associado a LLM (tecnologia)”.

Essa informação contextualizada é o que é enviado para as próximas camadas da LLM, permitindo que ela gere uma resposta extremamente precisa para o usuário.


Explicação detalhada sobre o Passo C: O Softmax

Para entender como chegamos àquelas porcentagens mostradas no Passo C, precisamos aplicar a fórmula matemática da função Softmax.

A função Softmax transforma qualquer vetor de números reais (que podem ser positivos, negativos, grandes ou pequenos) em uma distribuição de probabilidade, onde todos os valores resultantes ficam entre 0 e 1. A fórmula matemática para cada elemento i do vetor é:

Softmax(xi)=exi∑j=1Nexj\text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j=1}^{N} e^{x_j}}

Onde:

O Cálculo Passo a Passo

No Passo B do cálculo da Atenção, obtivemos os seguintes valores escalonados para a palavra “artigo”:

Passo 1: Exponenciação (exie^{x_i})

Primeiro, elevamos a base e a cada um dos nossos valores. Esse passo é crucial por dois motivos:

  1. Elimina números negativos: Qualquer número (mesmo negativo) elevado na base e resulta em um valor positivo (e−0,57>0e^{-0,57} > 0).
  2. Amplifica diferenças: Aumenta a distância entre o maior valor e os demais.

Fazendo as contas:

Passo 2: A Soma dos Exponenciais (∑exj\sum e^{x_j})

Agora, somamos todos esses resultados intermediários para obter o nosso denominador comum (o totalizador):

Soma=2,6379+1,8965+0,5655=𝟓,𝟎𝟗𝟗𝟗\text{Soma} = 2,6379 + 1,8965 + 0,5655 = \mathbf{5,0999}
Passo 3: Divisão (Normalização)

Por fim, dividimos cada valor individual do Passo 1 pela Soma total encontrada no Passo 2. Isso nos dá a probabilidade exata (peso de atenção) de cada palavra:

Por que o comportamento matemático da softmax é perfeito para a atenção?

Repare no que aconteceu com a palavra “encontro”: o seu score original no produto escalar era negativo (-0,57), indicando baixa afinidade.

Após passar pelo Softmax, ele não apenas se tornou um número positivo válido para probabilidade, como também foi severamente “sufocado” para apenas 11%, enquanto a pequena diferença original entre “artigo” (0,97) e “LLM” (0,64) foi expandida, dando amplo destaque à palavra de maior relevância.

Só para ficar mas clara a diferença, antes a diferença entre os valores era de 0,33 (097 – 0,33) e passa a ser de 0,145 (51,7% – 37,2% = 14,5% que é equivalente aos 0,145).

Sair da versão mobile