cross-attention modul
Et modul i transformer-arkitekturer der beregner opmærksomhedsfordelingen mellem to forskellige sekvenser (f.eks. en encoder- og en decoder-sekvens) i stedet for inden for én sekvens.
Kort fortalt
En måde for en model at fokusere på relevante dele af én sekvens (f.eks. input) når den behandler en anden sekvens (f.eks. output).
- Kategori
- arkitektur
- Niveau
- øvet
Betydninger
1- 1
Det modul i en transformer-model der udfører kryds-opmærksomhed mellem to separate sekvenser, typisk ved at bruge queries fra én sekvens og keys/values fra en anden.
- I en transformer-baseret oversættelsesmodel bruges cross-attention-modulet til at forbinde encoderens repræsentation af kildesætningen med decoderens nuværende position i målsætningen.
- Multimodale modeller som CLIP anvender cross-attention til at bringe billed- og tekst-embeddinger i samme rum.
Hvornår bruges det
Cross-attention-modulet bruges typisk i encoder-decoder-modeller (f.eks. i den originale transformer) for at lade decoder-sekvensen hente information fra encoder-sekvensen. Det anvendes også i multimodal AI, hvor f.eks. en tekstsekvens kan kryds-opmærksomhed på en billedsekvens. Modulet består af forespørgsler (queries) fra den ene sekvens og nøgler/værdier (keys/values) fra den anden.
Formel
Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) V, where Q comes from one sequence, K and V from another.Kodeeksempel
import torch.nn as nn
class CrossAttention(nn.Module):
def __init__(self, d_model, n_heads):
super().__init__()
self.mha = nn.MultiheadAttention(d_model, n_heads)
def forward(self, query, key, value):
attn_output, _ = self.mha(query, key, value)
return attn_outputEksempel på et cross-attention-modul i PyTorch ved brug af MultiheadAttention. Queries kommer typisk fra decoder, keys/values fra encoder.
Oprindelse
Udtrykket 'cross-attention' stammer fra transformer-arkitekturen (Vaswani et al., 2017), hvor det beskriver opmærksomhed på tværs af to sekvenser, i modsætning til 'self-attention', der opererer inden for én sekvens.