Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Challenge: Strukturering af Encoder- og Decoder-blokke | Opbygning af Transformer-Komponenter
Transformers til Naturlig Sprogbehandling
Sektion 2. Kapitel 5
single

single

bookChallenge: Strukturering af Encoder- og Decoder-blokke

Stryg for at vise menuen

Forståelse af strukturen af encoder- og decoder-blokke er afgørende for at mestre, hvordan Transformers behandler og genererer tekst. Hver encoder-blok i en Transformer er designet til at omdanne inputsekvenser til kontekst-rige repræsentationer, mens hver decoder-blok genererer outputsekvenser ved at tage højde for både tidligere outputs og encoderens repræsentationer. Ved sekvens-til-sekvens tekstopgaver, såsom oversættelse eller opsummering, tager encoderen inputteksten og koder den til en række skjulte tilstande. Decoderen bruger derefter disse skjulte tilstande sammen med sin egen selvopmærksomhed til trin for trin at generere målsekvensen. Denne interaktion mellem encoder- og decoder-blokke gør det muligt for modellen at opfange komplekse afhængigheder i tekst, hvilket gør Transformers meget effektive til en bred vifte af opgaver inden for naturlig sprogbehandling.

Følgende tabel opsummerer rækkefølgen af operationer i en Transformer encoder-blok og fremhæver deres betydning for tekstdata:

StepOperationPurpose for Text Data
1Multi-head self-attentionCaptures relationships between all tokens in the input.
2Add & NormalizeStabilizes training and preserves information.
3Feed-forward networkApplies non-linear transformations to each token.
4Add & NormalizeFurther stabilizes and enables deep stacking.

Each operation ensures that the encoder builds increasingly abstract and context-aware representations of the input text, which are essential for downstream sequence-to-sequence tasks.

Opgave

Swipe to start coding

Din opgave er at udfylde de manglende dele af TransformerEncoderBlock-klassen ved korrekt at initialisere dens nøglekomponenter og sikre, at de anvendes i den fremadrettede beregning.

TransformerEncoderBlock-klassen modellerer et enkelt encoder-blok i en Transformer-arkitektur. Du skal korrekt initialisere to hovedkomponenter i klassens konstruktør (__init__-metoden):

  • Self-attention-laget ved brug af MultiHeadAttention(hidden_dim). Dette lag gør det muligt for hvert token i inputtet at tage højde for alle andre tokens og fange kontekstuelle relationer;
  • Feed-forward-netværket ved brug af FeedForward(hidden_dim). Dette lag anvender ikke-lineære transformationer på hver token-repræsentation individuelt og bearbejder yderligere outputtet fra self-attention-laget;
  • I forward-metoden skal du anvende disse to lag sekventielt:
    • først sendes inputtet x gennem self-attention-laget;
    • derefter sendes outputtet fra self-attention-laget gennem feed-forward-netværket;
    • returnér det endelige output.

Sørg for at instantiere både MultiHeadAttention og FeedForward med parameteren hidden_dim, som gives til klassen. Disse komponenter udgør den centrale struktur i en encoder-blok og skal anvendes i den korrekte rækkefølge for at blokken fungerer korrekt.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 5
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt