cross-attention

Cross-attention er en mekanisme i Transformer-modeller, hvor attention beregnes mellem to forskellige sekvenser, typisk en encoder og en decoder.

Kort fortalt

En teknik, der lader en model fokusere på relevante dele af én sekvens, når den behandler en anden sekvens.

Kategori
arkitektur
Niveau
øvet
Udtale
/krɒs əˈtɛnʃən/

Betydninger

2
  1. 1

    En attention-mekanisme, der beregner relevansen mellem elementer i to separate sekvenser, ofte brugt i encoder-decoder-modeller til at hente information fra encoder til decoder.

    • I en maskinoversættelsesmodel bruger decoderens cross-attention-lag encoder-outputtet til at generere den næste målord.Attention Is All You Need, 2017
  2. 2

    I multi-modale modeller en attention-mekanisme, der forbinder repræsentationer fra forskellige modaliteter, f.eks. tekst og billeder.

    • CLIP-modellen anvender cross-attention mellem billed- og tekst-embedding for at lære visuelle koncepter fra naturligt sprog.Learning Transferable Visual Models From Natural Language Supervision, 2021

Hvornår bruges det

Cross-attention bruges primært i encoder-decoder-arkitekturer som i maskinoversættelse og tekstopsummering. I en Transformer-decoder hentes kontekst fra encoder-output via cross-attention-lag. Det anvendes også i multi-modale modeller, f.eks. til at forbinde billede- og tekstrepræsentationer.

Formel

CrossAttention(Q, K, V) = softmax(Q K^T / sqrt(d_k)) V, hvor Q kommer fra decoder, K og V fra encoder.

Kodeeksempel

import torch
import torch.nn.functional as F

def cross_attention(query, key, value):
    d_k = query.size(-1)
    scores = torch.matmul(query, key.transpose(-2, -1)) / (d_k ** 0.5)
    attn_weights = F.softmax(scores, dim=-1)
    return torch.matmul(attn_weights, value)

# Eksempel: query (batch, heads, seq_len_q, d_k), key/value (batch, heads, seq_len_kv, d_k)
# query = decoder-output, key/value = encoder-output

Eksempel på en cross-attention-funktion i PyTorch. Query stammer fra decoder, key og value fra encoder.

Oprindelse

Udtrykket 'cross-attention' opstod med Transformer-arkitekturen introduceret i 2017 for at skelne mellem attention over én sekvens (self-attention) og attention på tværs af to sekvenser.

Afledte ord

2

Kilder

1