Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Structuration des blocs encodeur et décodeur | Construction des Composants de Transformer
Transformers pour le Traitement du Langage Naturel
Section 2. Chapitre 5
single

single

bookDéfi : Structuration des blocs encodeur et décodeur

Glissez pour afficher le menu

Comprendre la structure des blocs encodeurs et blocs décodeurs est essentiel pour maîtriser la façon dont les Transformers traitent et génèrent du texte. Chaque bloc encodeur dans un Transformer est conçu pour transformer des séquences d'entrée en représentations riches en contexte, tandis que chaque bloc décodeur génère des séquences de sortie en tenant compte à la fois des sorties précédentes et des représentations de l'encodeur. Dans les tâches de texte séquence-à-séquence, telles que la traduction ou le résumé, l'encodeur prend le texte d'entrée et l'encode en une série d'états cachés. Le décodeur utilise ensuite ces états cachés, ainsi que son propre mécanisme d'auto-attention, pour générer la séquence cible étape par étape. Cette interaction entre les blocs encodeur et décodeur permet au modèle de capturer des dépendances complexes dans le texte, rendant les Transformers particulièrement efficaces pour un large éventail de tâches de traitement du langage naturel.

Le tableau suivant résume la séquence des opérations dans un bloc encodeur de Transformer et met en évidence leur importance pour les données textuelles :

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.

Tâche

Glissez pour commencer à coder

Votre tâche consiste à compléter les parties manquantes de la classe TransformerEncoderBlock en initialisant correctement ses composants clés et en veillant à leur utilisation dans le calcul du passage avant.

La classe TransformerEncoderBlock modélise un bloc encodeur unique dans une architecture Transformer. Vous devez initialiser correctement deux composants principaux dans le constructeur de la classe (méthode __init__) :

  • La couche d'auto-attention en utilisant MultiHeadAttention(hidden_dim). Cette couche permet à chaque jeton de l'entrée de prêter attention à tous les autres jetons, capturant ainsi les relations contextuelles ;
  • Le réseau de neurones à propagation avant en utilisant FeedForward(hidden_dim). Cette couche applique des transformations non linéaires à chaque représentation de jeton individuellement, traitant davantage la sortie de la couche d'auto-attention ;
  • Dans la méthode forward, vous devez appliquer ces deux couches de manière séquentielle :
    • d'abord, passer l'entrée x à travers la couche d'auto-attention ;
    • ensuite, passer la sortie de la couche d'auto-attention à travers le réseau de neurones à propagation avant ;
    • retourner la sortie finale.

Assurez-vous d'instancier à la fois MultiHeadAttention et FeedForward avec le paramètre hidden_dim fourni à la classe. Ces composants représentent la structure centrale d'un bloc encodeur et doivent être appliqués dans le bon ordre pour assurer le bon fonctionnement du bloc.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 5
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

some-alt