Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Challenge: Strukturierung von Encoder- und Decoder-Blöcken | Building Transformer Components
Transformer für Natural Language Processing
Abschnitt 2. Kapitel 5
single

single

bookChallenge: Strukturierung von Encoder- und Decoder-Blöcken

Swipe um das Menü anzuzeigen

Das Verständnis der Struktur von Encoder- und Decoder-Blöcken ist entscheidend, um zu beherrschen, wie Transformer Texte verarbeiten und generieren. Jeder Encoder-Block in einem Transformer ist darauf ausgelegt, Eingabesequenzen in kontextreiche Repräsentationen umzuwandeln, während jeder Decoder-Block Ausgabesequenzen erzeugt, indem er sowohl auf vorherige Ausgaben als auch auf die Repräsentationen des Encoders achtet. Bei Sequenz-zu-Sequenz-Textaufgaben wie Übersetzung oder Zusammenfassung nimmt der Encoder den Eingabetext auf und kodiert ihn in eine Reihe von versteckten Zuständen. Der Decoder nutzt diese versteckten Zustände zusammen mit seiner eigenen Selbstaufmerksamkeit, um die Zielsequenz Schritt für Schritt zu generieren. Diese Interaktion zwischen Encoder- und Decoder-Blöcken ermöglicht es dem Modell, komplexe Abhängigkeiten im Text zu erfassen, was Transformer für eine Vielzahl von Aufgaben der natürlichen Sprachverarbeitung äußerst effektiv macht.

Die folgende Tabelle fasst die Abfolge der Operationen in einem Transformer-Encoder-Block zusammen und hebt deren Bedeutung für Textdaten hervor:

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.

Aufgabe

Wischen, um mit dem Codieren zu beginnen

Ihre Aufgabe besteht darin, die fehlenden Teile der Klasse TransformerEncoderBlock zu vervollständigen, indem Sie deren zentrale Komponenten korrekt initialisieren und sicherstellen, dass sie in der Vorwärtsberechnung verwendet werden.

Die Klasse TransformerEncoderBlock modelliert einen einzelnen Encoder-Block in einer Transformer-Architektur. Sie müssen zwei Hauptkomponenten im Konstruktor der Klasse (__init__-Methode) ordnungsgemäß initialisieren:

  • Die Self-Attention-Schicht mit MultiHeadAttention(hidden_dim). Diese Schicht ermöglicht es jedem Token im Input, auf alle anderen Tokens zu achten und kontextuelle Beziehungen zu erfassen;
  • Das Feed-Forward-Netzwerk mit FeedForward(hidden_dim). Diese Schicht wendet nichtlineare Transformationen auf jede Token-Repräsentation einzeln an und verarbeitet so die Ausgabe der Self-Attention-Schicht weiter;
  • In der forward-Methode sollten Sie diese beiden Schichten nacheinander anwenden:
    • Zuerst geben Sie den Input x durch die Self-Attention-Schicht;
    • Anschließend geben Sie die Ausgabe der Self-Attention-Schicht durch das Feed-Forward-Netzwerk;
    • Geben Sie die finale Ausgabe zurück.

Stellen Sie sicher, dass sowohl MultiHeadAttention als auch FeedForward mit dem an die Klasse übergebenen Parameter hidden_dim instanziiert werden. Diese Komponenten bilden die Kernstruktur eines Encoder-Blocks und müssen in der richtigen Reihenfolge angewendet werden, damit der Block ordnungsgemäß funktioniert.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 5
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

some-alt