Skip to main content

Gradient | Attention mechanism, Multi Head Attention | Text Generation | I.A

  • Gradient | Attention mechanism, Multi Head Attention | Text Generation | I.A

  • Gradiente (Gradient) no contexto de Attention e Transformers

O que é gradiente, em termos simples

O gradiente é o mecanismo que permite ao modelo aprender.

Ele indica como e quanto os parâmetros internos do modelo devem ser ajustados para reduzir o erro cometido durante o treinamento.

Em termos práticos, o gradiente responde à pergunta:

“Quais pesos precisam mudar para que o modelo produza uma saída melhor?”

Sem gradiente, um modelo executa cálculos, mas não aprende.


Onde o gradiente entra no Transformer

No Transformer, o gradiente atua durante o treinamento, após o modelo produzir uma saída e calcular um erro (loss).

O processo ocorre em três etapas principais:

  1. O texto passa pelas camadas de atenção (forward pass)
  2. O modelo gera uma previsão e calcula o erro
  3. O erro é propagado para trás (backpropagation), gerando gradientes

Esses gradientes são usados para atualizar os pesos do modelo.


O que exatamente aprende na Attention

O cálculo da atenção em si é fixo. O que o modelo aprende são os parâmetros que geram a atenção.

Em especial:

  • os pesos que transformam embeddings em Query (Q)
  • os pesos que geram Key (K)
  • os pesos que geram Value (V)
  • os pesos da projeção final que combina as heads

Esses pesos determinam como o modelo compara palavras e onde ele decide focar.

É o gradiente que ajusta esses parâmetros ao longo do treinamento.


Gradiente e Multi-Head Attention

No Multi-Head Attention, cada head possui seus próprios pesos.

Durante o treinamento:

  • cada head aprende a focar em padrões diferentes
  • o gradiente ajusta os pesos de cada head de forma independente
  • heads que contribuem mais para reduzir o erro são reforçadas

Com o tempo, isso faz com que diferentes heads se especializem em diferentes tipos de relações linguísticas.


Quando o gradiente é usado

O gradiente é utilizado quando o modelo está sendo treinado ou ajustado.

Isso inclui:

  • treinamento do modelo do zero
  • fine-tuning de um modelo pré-treinado
  • ajuste de embeddings ou camadas específicas

Nesses casos, o cálculo de gradiente é indispensável.


Quando o gradiente não é usado

Durante inferência, o modelo apenas executa os cálculos para gerar saídas.

Exemplos:

  • geração de texto
  • criação de embeddings
  • uso de modelos em produção
  • pipelines de RAG sem fine-tuning

Nessas situações, os pesos já estão definidos e não devem ser alterados.

Por isso, o cálculo de gradientes é desativado.


Conexão com código

Em frameworks como PyTorch, isso é explicitado no código.

Durante inferência:

with torch.no_grad():
output = model(input)

Durante treinamento:

output = model(input)
loss = criterion(output, target)
loss.backward() # cálculo do gradiente
optimizer.step() # atualização dos pesos

O mesmo modelo pode operar em ambos os contextos; o que muda é se o gradiente está ativo ou não.


Intuição final

  • Attention calcula relações entre palavras
  • Multi-Head Attention oferece múltiplas perspectivas
  • O gradiente ensina o modelo quais relações são úteis
  • Sem gradiente, não há aprendizado
  • Com gradiente, o modelo melhora gradualmente

Resumo direto

  • Gradiente é o mecanismo de aprendizado
  • Atua apenas durante o treinamento
  • Ajusta os pesos que produzem Q, K e V
  • Permite que cada head aprenda um foco diferente
  • Não é usado durante inferência