masked self-attention
En mekanisme i transformer-modeller hvor hvert element i en sekvens kun kan se tidligere elementer (og sig selv) via attention, typisk ved at anvende en maske over fremtidige positioner.
Kort fortalt
Maskeret self-attention forhindrer en model i at 'snyde' ved at kigge fremad i sekvensen, så den genereres autoregressivt ét token ad gangen.
- Kategori
- teknik
- Niveau
- øvet
Betydninger
1- 1
En variant af self-attention hvor en maske forhindrer hvert token i at tage hensyn til efterfølgende tokens i sekvensen, således at opmærksomheden kun rettes mod tidligere eller samme token.
- I GPT-modellen anvendes masked self-attention i hvert decoder-lag for at opretholde autoregressive egenskaber. — Radford et al., 2019
- Maskeret self-attention implementeres ved at tilføje en trekantet maske til attention-scorerne før softmax. — Vaswani et al., 2017
Hvornår bruges det
Masked self-attention anvendes i decoder-delen af transformer-modeller (f.eks. GPT) under autoregressiv generering. Masken sætter attention-vægte fra fremtidige token-positioner til minus uendelig, så de ignoreres i softmax. Dette sikrer, at output på tidspunkt t kun afhænger af input op til tidspunkt t.
Formel
Attention(Q,K,V) = softmax(QK^T/√d + M)V, where M is a mask matrix with M_ij = -∞ for i<j (future positions) and 0 otherwise.Kodeeksempel
import torch
import torch.nn.functional as F
def masked_self_attention(Q, K, V, mask=None):
d_k = Q.size(-1)
scores = torch.matmul(Q, K.transpose(-2, -1)) / torch.sqrt(torch.tensor(d_k, dtype=torch.float))
if mask is not None:
scores = scores.masked_fill(mask == 0, float('-inf'))
weights = F.softmax(scores, dim=-1)
return torch.matmul(weights, V)En simpel implementering af maskeret self-attention. Hvis en boolsk maske angives (f.eks. en trekantet maske), sættes score for forbudte positioner til -inf.
Oprindelse
Konceptet stammer fra transformer-arkitekturen (Vaswani et al., 2017), hvor maskering bruges til at forhindre information leakage under træning med teacher forcing.
Kilder
2- Attention Is All You Need (Vaswani et al., 2017)
- Language Models are Unsupervised Multitask Learners (Radford et al., 2019)