Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Strukturering av encoder- och decoderblock | Bygga Transformer-Komponenter
Transformers för Naturlig Språkbehandling
Avsnitt 2. Kapitel 5
single

single

bookUtmaning: Strukturering av encoder- och decoderblock

Svep för att visa menyn

Att förstå strukturen hos encoder- och decoderblock är avgörande för att bemästra hur Transformers bearbetar och genererar text. Varje encoderblock i en Transformer är utformat för att omvandla inmatningssekvenser till kontextuellt rika representationer, medan varje decoderblock genererar utmatningssekvenser genom att uppmärksamma både tidigare utmatningar och encoderns representationer. Vid sekvens-till-sekvens-textuppgifter, såsom översättning eller sammanfattning, tar encodern inmatningstexten och kodar den till en serie dolda tillstånd. Decodern använder sedan dessa dolda tillstånd, tillsammans med sin egen självuppmärksamhet, för att stegvis generera målsekvensen. Denna interaktion mellan encoder- och decoderblock gör det möjligt för modellen att fånga komplexa beroenden i text, vilket gör Transformers mycket effektiva för en mängd olika uppgifter inom naturlig språkbehandling.

Följande tabell sammanfattar sekvensen av operationer i ett Transformer-encoderblock och belyser deras betydelse för textdata:

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.

Uppgift

Svep för att börja koda

Din uppgift är att komplettera de saknade delarna av klassen TransformerEncoderBlock genom att korrekt initiera dess nyckelkomponenter och säkerställa att de används i den framåtriktade beräkningen.

Klassen TransformerEncoderBlock modellerar ett enskilt encoderblock i en Transformer-arkitektur. Du behöver korrekt initiera två huvudkomponenter i klassens konstruktor (__init__-metoden):

  • Self-attention-lagret med MultiHeadAttention(hidden_dim). Detta lager gör det möjligt för varje token i indata att uppmärksamma alla andra tokens, vilket fångar kontextuella relationer;
  • Feed-forward-nätverket med FeedForward(hidden_dim). Detta lager applicerar icke-linjära transformationer på varje tokenrepresentation individuellt och bearbetar vidare utdata från self-attention-lagret;
  • I forward-metoden ska du applicera dessa två lager sekventiellt:
    • först, skicka indata x genom self-attention-lagret;
    • därefter, skicka utdata från self-attention-lagret genom feed-forward-nätverket;
    • returnera slututdata.

Se till att både MultiHeadAttention och FeedForward instansieras med parametern hidden_dim som ges till klassen. Dessa komponenter utgör kärnstrukturen i ett encoderblock och måste appliceras i rätt ordning för att blocket ska fungera korrekt.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 5
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

some-alt