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. 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)V

Kodeeksempel

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 output

En 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

2

Kilder

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