Self-attention
En mekanisme i neurale netværk, hvor hvert element i en sekvens vægtes i forhold til alle andre elementer.
Kort fortalt
Self-attention lader modellen fokusere på relevante dele af inputtet ved at beregne vægte mellem alle ordpar.
- Kategori
- arkitektur
- Niveau
- øvet
Betydninger
1- 1
En opmærksomhedsmekanisme, der beregner en vægtet sum af alle elementer i en sekvens, hvor vægtene bestemmes af elementernes indbyrdes relation.
- Self-attention gør det muligt for en oversættelsesmodel at se hele sætningen på én gang i stedet for sekventielt.
- I en transformer bruges multi-head self-attention til at fange forskellige typer af relationer.
Hvornår bruges det
Self-attention bruges især i transformer-modeller til oversættelse, tekstgenerering og andre sekvensopgaver. Det gør modellen i stand til at fange afhængigheder på tværs af sekvensen uden at være begrænset af afstand.
Formel
Attention(Q,K,V) = softmax(QK^T/√d_k)VKodeeksempel
import torch
import torch.nn.functional as F
def self_attention(Q, K, V):
d_k = Q.size(-1)
scores = torch.matmul(Q, K.transpose(-2, -1)) / (d_k ** 0.5)
attn_weights = F.softmax(scores, dim=-1)
output = torch.matmul(attn_weights, V)
return outputEn simpel implementering af self-attention i PyTorch.
Oprindelse
Begrebet blev introduceret i Vaswani et al. (2017) som en nøglemekanisme i transformer-arkitekturen.
Afledte ord
2Kilder
1- Attention Is All You Need (Vaswani et al., 2017)