Masked Self-Attention
Pipeline do Decoder:
🟠 Masked Self-Attn
→
⚖️ Add&Norm
→
🟣 Cross-Attn
→
⚖️ Add&Norm
→
🟩 FFN
→
⚖️ Add&Norm
→
📊 Linear+Softmax
Scores de Atenção — tokens: <BOS>, Ela, saiu, só
← tokens chave (j) →
← tokens query (i) →
💡 Clique em uma linha para ver os pesos de atenção. Toggle para aplicar/remover máscara.
Modo: Sem máscara
<BOS> (Begin Of Sequence) é um token especial adicionado no início da
sequência do decoder. Ele representa o "estado inicial" antes de qualquer token ter sido gerado,
e serve como query para prever o primeiro token de saída.
Neste modo, todos os tokens podem atender a todos os outros. Isso seria adequado para um encoder, mas em um decoder o modelo "espiaria" tokens futuros — o que não é permitido durante a geração autoregressiva.
M = todas as células permitidas (sem bloqueio)
Softmax pós-máscara: as células com −∞ tornam-se 0 após softmax,
eliminando completamente a influência dos tokens futuros.
Por que mascarar se todos os tokens entram de uma vez?
Durante o treinamento, todos os tokens da sequência alvo entram simultaneamente no decoder
(paralelismo). Sem a máscara causal, cada posição poderia "espiar" as respostas corretas das
posições futuras — o que nunca ocorre durante a geração real (token a token).
A máscara garante que o modelo aprenda a prever cada token
apenas a partir do que já teria gerado, replicando a geração autoregressiva.
Ao prever a posição i, apenas as posições j ≤ i contribuem.