Essencial

Scaled dot-product attention e a raiz de d_k

Dividir as pontuações de query e key pela raiz quadrada da dimensão mantém softmax utilizável quando a largura de attention cresce.

Atualizada em

1

Conceito

Self-attention começa com uma medida simples de compatibilidade: o produto escalar entre query e key. Quando dois vetores apontam em direções semelhantes, o produto tende a ser grande e positivo. Quando estão pouco alinhados, ele fica menor ou negativo. Para as matrizes QQ e KK, todas as comparações aparecem em QKQK^\top. A escala bruta, porém, muda quando a dimensão do vetor muda.

Escreva uma pontuação como

s=qk=i=1dkqiki.s=q\cdot k=\sum_{i=1}^{d_k}q_i k_i.

Para a intuição usada no artigo original, suponha componentes independentes, com média zero e variância um. Cada produto qikiq_i k_i tem variância próxima de um. Somar dkd_k termos dá Var(s)dk\operatorname{Var}(s)\approx d_k, então o desvio-padrão cresce como dk\sqrt{d_k}. Uma head de 256 dimensões produz variação maior que uma de 16, mesmo que as estatísticas dos componentes sejam comparáveis.

Attention envia cada linha de pontuações para softmax. Como softmax aplica exponenciais, a escala importa muito. Pontuações [0,2, 0,1, 0] geram um resultado distribuído. Pontuações [20, 10, 0] produzem algo quase vencedor-leva-tudo. O ranking é o mesmo, mas a segunda distribuição se comporta como se o modelo tivesse certeza extrema. Quando probabilidades chegam perto de zero ou um, gradientes úteis podem ficar pequenos.

Scaled dot-product attention corrige o efeito da dimensão:

Attention(Q,K,V)=softmax(QKdk)V.\operatorname{Attention}(Q,K,V)= \operatorname{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V.

Dividir por dk\sqrt{d_k} normaliza aproximadamente o desvio-padrão sob as hipóteses anteriores. Não força variância exatamente um num modelo treinado nem normaliza individualmente queries ou keys. Projeções aprendidas, correlações e ativações reais violam a história limpa de independência. Mesmo assim, a escala remove o crescimento mais óbvio causado pela largura.

O divisor também funciona como uma temperature fixa. Softmax com temperature é softmax(s/T)\operatorname{softmax}(s/T); aqui, T=dkT=\sqrt{d_k}. Temperature maior achata a distribuição; menor a torna mais aguda. Em attention, a escala acompanha a dimensão da head, em vez de ser um controle de decoding. O modelo ainda aprende padrões mais fortes ou suaves alterando as normas de queries e keys.

Estabilidade numérica acrescenta outro detalhe. Implementações práticas subtraem o máximo de cada linha antes da exponencial. Subtrair uma constante não muda as proporções, mas impede overflow de uma pontuação positiva grande. Isso resolve overflow numérico; não resolve saturação causada por diferenças entre pontuações. A divisão pela raiz ataca a segunda fonte.

Considere produtos brutos [8,4,0] com dk=64d_k=64. A escala produz [1,0,5,0]. Softmax consegue atribuir massa útil aos três itens, permitindo que gradientes ajustem cada relação. Sem a escala, a primeira key dominaria cedo demais, antes de o treinamento ter evidência para tanta certeza.

A lição vai além do denominador. Quando uma soma reúne muitas contribuições aproximadamente independentes, sua magnitude típica cresce com o número de termos. Enviar essa soma a uma não linearidade sensível altera o comportamento apenas porque a largura mudou. O Transformer compensa com uma escala derivada da variância e conserva o roteamento numa região treinável.

2

Como explicar para uma criança de cinco anos

Imagine jurados somando notas de muitas categorias independentes. Um espetáculo avaliado em 64 categorias acumula totais positivos e negativos maiores que outro avaliado em quatro, ainda que a qualidade por categoria seja igual. Enviar os totais crus para uma regra de vencedor único faria a ficha maior parecer absurdamente confiante. Dividir pela raiz do número de categorias devolve uma escala comparável antes da votação.

3

Ensine de volta

Derive por que a variância do produto escalar cresce com a dimensão da key e explique o efeito da divisão por raiz de d_k sobre softmax.

Mínimo: 80 caracteres e 15 palavras. Seu texto fica somente neste navegador.

Salvo somente neste dispositivo.

Ver uma resposta-modelo

Se componentes de query e key forem aproximadamente independentes, com média zero e variância um, cada produto contribui variância próxima de um. Somar d_k produtos gera variância próxima de d_k, então o desvio-padrão cresce como raiz de d_k. Dividir por esse desvio mantém a magnitude típica aproximadamente estável e evita que softmax sature apenas porque a dimensão da head aumentou.

4

Teste seu entendimento

1. Por que escalar produtos escalares por 1/raiz(d_k)?
Resposta e explicação

Para manter a magnitude aproximadamente estável entre larguras de head — A variância do produto escalar cresce com a dimensão sob hipóteses comuns de inicialização; a escala evita que só a dimensão torne softmax afiada demais.

2. Qual é o risco imediato de diferenças muito grandes antes de softmax?
Resposta e explicação

Uma distribuição saturada, quase one-hot, com gradientes pequenos — Grandes diferenças de logits levam probabilidades a zero e um, regiões em que muitos gradientes ficam muito pequenos.

Conclua o teach-back e acerte o quiz para finalizar a aula.

Fontes

  1. Ashish Vaswani et al. (2017). Attention Is All You Need.