Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Structureren van Encoder- en Decoderblokken | Transformercomponenten Bouwen
Transformers voor Natuurlijke Taalverwerking
Sectie 2. Hoofdstuk 5
single

single

bookUitdaging: Structureren van Encoder- en Decoderblokken

Veeg om het menu te tonen

Inzicht in de structuur van encoder- en decoderblokken is essentieel om te begrijpen hoe Transformers tekst verwerken en genereren. Elk encoderblok in een Transformer is ontworpen om invoersequenties om te zetten in contextrijke representaties, terwijl elk decoderblok uitvoersequenties genereert door zowel te letten op eerdere uitgangen als op de representaties van de encoder. Bij sequentie-naar-sequentie teksttaken, zoals vertaling of samenvatting, neemt de encoder de invoertekst en codeert deze in een reeks verborgen toestanden. De decoder gebruikt vervolgens deze verborgen toestanden, samen met zijn eigen zelf-attentie, om stap voor stap de doelsequentie te genereren. Deze interactie tussen encoder- en decoderblokken stelt het model in staat om complexe afhankelijkheden in tekst vast te leggen, waardoor Transformers zeer effectief zijn voor een breed scala aan taken op het gebied van natuurlijke taalverwerking.

De volgende tabel vat de volgorde van bewerkingen in een Transformer encoderblok samen en benadrukt hun belang voor 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.

Taak

Veeg om te beginnen met coderen

Je taak is om de ontbrekende delen van de TransformerEncoderBlock-klasse aan te vullen door de belangrijkste componenten correct te initialiseren en ervoor te zorgen dat deze worden gebruikt in de forward-berekening.

De TransformerEncoderBlock-klasse modelleert een enkele encoder-blok in een Transformer-architectuur. Je moet twee hoofdcomponenten correct initialiseren in de constructor van de klasse (__init__-methode):

  • De self-attention-laag met MultiHeadAttention(hidden_dim). Deze laag stelt elk token in staat om aandacht te besteden aan alle andere tokens, waardoor contextuele relaties worden vastgelegd;
  • Het feed-forward-netwerk met FeedForward(hidden_dim). Deze laag past niet-lineaire transformaties toe op elke tokenrepresentatie afzonderlijk en verwerkt zo de output van de self-attention-laag verder;
  • In de forward-methode dien je deze twee lagen opeenvolgend toe te passen:
    • eerst de input x door de self-attention-laag halen;
    • vervolgens de output van de self-attention-laag door het feed-forward-netwerk halen;
    • de uiteindelijke output retourneren.

Zorg ervoor dat zowel MultiHeadAttention als FeedForward worden geïnstantieerd met de hidden_dim-parameter die aan de klasse wordt meegegeven. Deze componenten vormen de kernstructuur van een encoder-blok en moeten in de juiste volgorde worden toegepast om correct te functioneren.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 5
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

some-alt