O que é uma máscara causal e como ela é implementada ao nível das pontuações de atenção?
sobes.tech IA
Resposta da IA
A máscara causal (máscara causal) é usada em transformadores para evitar o vazamento de informações de posições futuras durante a geração de sequências. Isso é importante em tarefas de auto-geração de texto, onde o modelo não deve ver os tokens futuros ao prever o atual.
Ao nível das pontuações de atenção, a máscara causal é implementada como uma matriz triangular superior com elementos que proíbem a atenção às posições futuras. Isso geralmente é feito adicionando um número negativo grande (por exemplo, -∞ ou um valor muito pequeno) às pontuações de atenção para essas posições que estão à direita da atual, antes de aplicar softmax. Isso anula a probabilidade de atenção aos tokens futuros.
Exemplo (pseudo-código):
import torch
seq_len = 5
# Criar máscara: 1 para posições permitidas, 0 para proibidas
causal_mask = torch.tril(torch.ones(seq_len, seq_len))
# attention_scores - matriz (seq_len x seq_len)
# Adicionar máscara: posições proibidas recebem -inf
masked_scores = attention_scores.masked_fill(causal_mask == 0, float('-inf'))
# Depois softmax na última dimensão
attention_weights = torch.softmax(masked_scores, dim=-1)
Dessa forma, o modelo pode considerar apenas o token atual e os anteriores, excluindo os futuros.