Dekoderblok

Dekoderblok er en central komponent i transformer-arkitekturen, der bruger selvopmærksomhed og krydsopmærksomhed til at generere outputsekvenser.

Kort fortalt

En dekoderblok er den del af en transformer-model, der tager en allerede genereret sekvens og gradvist tilføjer nye elementer, f.eks. ord i en sætning.

Kategori
arkitektur
Niveau
øvet

Betydninger

1
  1. 1

    En dekoderblok i transformer-arkitekturen er en gentagen enhed, der består af selvopmærksomhed, krydsopmærksomhed og feed-forward lag, og som bruges til at generere outputsekvenser i autoregressive modeller.

    • I GPT-modeller anvendes kun dekoderblokke uden krydsopmærksomhed.
    • Hver dekoderblok i Transformeren modtager output fra den foregående blok og encoderens sidste lag.

Hvornår bruges det

Dekoderblokke anvendes i sekvens-til-sekvens opgaver som maskinoversættelse og tekstgenerering. Hver blok består typisk af et selvopmærksomhedslag, et krydsopmærksomhedslag (der ser på encoder-output) og et feed-forward lag.

Kodeeksempel

class DecoderBlock(nn.Module):
    def __init__(self, d_model, n_heads):
        super().__init__()
        self.self_attn = nn.MultiheadAttention(d_model, n_heads)
        self.cross_attn = nn.MultiheadAttention(d_model, n_heads)
        self.ffn = nn.Sequential(nn.Linear(d_model, 4*d_model), nn.ReLU(), nn.Linear(4*d_model, d_model))
    def forward(self, x, enc_out):
        x = self.self_attn(x, x, x)[0] + x
        x = self.cross_attn(x, enc_out, enc_out)[0] + x
        x = self.ffn(x) + x
        return x

En simpel PyTorch-implementering af en dekoderblok med selvopmærksomhed, krydsopmærksomhed og feed-forward lag.

Oprindelse

Termen 'dekoderblok' kommer af 'dekoder' (der afkoder eller genererer output) og 'blok' (en enhed i lagdelt arkitektur).

Afledte ord

2

Kilder

1