Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Challenge: Strukturering av Encoder- og Decoder-blokker | Bygge transformer-komponenter
Transformers for Naturlig Språkprosessering
Seksjon 2. Kapittel 5
single

single

bookChallenge: Strukturering av Encoder- og Decoder-blokker

Sveip for å vise menyen

Forståelse av strukturen til encoder- og decoder-blokker er avgjørende for å mestre hvordan Transformere prosesserer og genererer tekst. Hver encoder-blokk i en Transformer er utformet for å transformere inndatasekvenser til kontekstrike representasjoner, mens hver decoder-blokk genererer utsekvenser ved å ta hensyn til både tidligere utdata og encoderens representasjoner. I sekvens-til-sekvens-oppgaver, som oversettelse eller oppsummering, tar encoderen inn tekst og koder den til en serie skjulte tilstander. Decoderen bruker deretter disse skjulte tilstandene, sammen med sin egen selvoppmerksomhet, for å generere målsekvensen steg for steg. Dette samspillet mellom encoder- og decoder-blokker gjør det mulig for modellen å fange opp komplekse avhengigheter i tekst, noe som gjør Transformere svært effektive for et bredt spekter av oppgaver innen naturlig språkprosessering.

Tabellen nedenfor oppsummerer rekkefølgen av operasjoner i en Transformer encoder-blokk og fremhever 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.

Oppgave

Sveip for å begynne å kode

Din oppgave er å fullføre de manglende delene av TransformerEncoderBlock-klassen ved å korrekt initialisere dens nøkkelkomponenter og sørge for at de brukes i fremoverberegningen.

TransformerEncoderBlock-klassen modellerer en enkelt encoder-blokk i en Transformer-arkitektur. Du må riktig initialisere to hovedkomponenter i klassens konstruktør (__init__-metode):

  • Self-attention-laget ved å bruke MultiHeadAttention(hidden_dim). Dette laget gjør det mulig for hvert token i input å ta hensyn til alle andre tokens, og fanger opp kontekstuelle relasjoner;
  • Feed-forward-nettverket ved å bruke FeedForward(hidden_dim). Dette laget anvender ikke-lineære transformasjoner på hver token-representasjon individuelt, og bearbeider videre utdataene fra self-attention-laget;
  • I forward-metoden skal du anvende disse to lagene sekvensielt:
    • først, send inputen x gjennom self-attention-laget;
    • deretter, send utdataene fra self-attention-laget gjennom feed-forward-nettverket;
    • returner det endelige resultatet.

Sørg for å instansiere både MultiHeadAttention og FeedForward med hidden_dim-parameteren som gis til klassen. Disse komponentene utgjør kjernestrukturen i en encoder-blokk og må brukes i riktig rekkefølge for at blokken skal fungere korrekt.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 5
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

some-alt