Encoder (Transformateur) (FR)

From Systems analysis Wiki
Jump to navigation Jump to search

Encodeur (en anglais : Encoder) — en apprentissage automatique et en apprentissage profond, est un composant d'un réseau de neurones dont la tâche principale est de transformer une séquence de données d'entrée (par exemple, du texte ou une image) en une représentation numérique riche, généralement appelée état caché (hidden state), vecteur de contexte (context vector) ou plongement (embedding). Cette représentation capture les caractéristiques clés et la sémantique des données d'entrée sous une forme adaptée à un traitement ultérieur.

Dans un sens plus large, en théorie de l'information, un encodeur est tout dispositif ou algorithme qui convertit l'information d'un format à un autre, souvent à des fins de compression ou de transmission.

Concept et objectif

L'objectif principal d'un encodeur dans les réseaux de neurones est d'extraire des caractéristiques utiles des données d'entrée et de les "encoder" dans un vecteur dense de longueur fixe. Ce processus peut être considéré comme une forme de réduction non linéaire de la dimensionnalité, où des données d'entrée de haute dimension et éparses (par exemple, du texte représenté par des vecteurs one-hot) sont transformées en un espace vectoriel de faible dimension, mais riche en information (l'espace latent).

Ce vecteur encodé peut ensuite être utilisé par :

  • Un décodeur pour générer une nouvelle séquence (par exemple, en traduction automatique).
  • Un classifieur pour des tâches d'analyse (par exemple, la détection de sentiment dans un texte).
  • Pour des tâches nécessitant la compréhension de l'ensemble du contexte d'entrée.

L'encodeur dans différentes architectures

L'encodeur dans un auto-encodeur

L'un des exemples classiques est l'architecture de l'auto-encodeur. Il se compose de deux parties :

  1. L'encodeur : Il compresse les données d'entrée en une représentation cachée de dimensionnalité réduite (le code latent).
  2. Le décodeur : Il tente de reconstruire les données d'origine à partir de cette représentation compressée.

En entraînant un tel réseau à minimiser l'erreur de reconstruction, l'encodeur apprend à extraire les caractéristiques les plus importantes des données.

L'encodeur dans les réseaux de neurones récurrents (RNN/LSTM)

Avant l'avènement de l'architecture Transformer, les encodeurs pour les tâches de traitement de séquences (seq2seq) étaient basés sur des réseaux de neurones récurrents (RNN) ou leur variante améliorée, les LSTM.

  • Principe de fonctionnement : Un encodeur RNN traite la séquence d'entrée token par token. À chaque étape, il met à jour son état caché en incorporant l'information du token actuel et de l'état précédent. L'état caché final, obtenu après le traitement de toute la séquence, est considéré comme le vecteur qui encode le sens de la séquence d'entrée entière. Ce vecteur est souvent appelé vecteur de contexte ou « vecteur de pensée » (thought vector).

L'encodeur dans l'architecture Transformer

La révolution dans le traitement du langage naturel est liée à l'émergence de l'encodeur basé sur l'architecture Transformer. Contrairement aux RNN, il traite tous les tokens d'une séquence en parallèle.

L'encodeur d'un Transformer est composé d'une pile de N couches identiques. Chaque couche comporte deux sous-couches principales :

  1. Auto-attention multi-têtes (Multi-Head Self-Attention) : Ce mécanisme permet à chaque token de la séquence d'entrée de « prêter attention » à tous les autres tokens et de pondérer leur importance pour former sa propre représentation contextualisée. Cela permet au modèle de capturer des dépendances complexes entre les mots, quelle que soit leur position.
  2. Réseau de neurones à propagation avant (Feed-Forward Network) : Appliqué séparément à la représentation de chaque token pour une transformation non linéaire supplémentaire.

La différence clé entre l'encodeur Transformer et l'encodeur RNN est qu'il ne produit pas un seul vecteur de contexte en sortie, mais une séquence de vecteurs contextualisés, un pour chaque token d'entrée. Chacun de ces vecteurs contient des informations sur son token dans le contexte de la séquence entière.

Types de modèles basés sur l'encodeur

Modèles encodeur-décodeur

C'est l'architecture classique pour les tâches de transformation de séquence à séquence (seq2seq), telles que la traduction automatique ou le résumé de texte.

  • Principe de fonctionnement : L'encodeur traite l'intégralité de la séquence d'entrée (par exemple, une phrase dans la langue source). Ses représentations de sortie sont ensuite transmises au décodeur, qui les utilise pour générer de manière autorégressive la séquence de sortie (la phrase dans la langue cible). Le décodeur « regarde » la sortie de l'encodeur grâce à un mécanisme spécial appelé attention croisée (cross-attention).
  • Exemples : Le Transformer original, T5, BART.

Modèles à encodeur seul (Encoder-Only)

Ces modèles utilisent exclusivement la pile d'encodeurs du Transformer.

  • Principe de fonctionnement : Ils sont conçus pour des tâches qui nécessitent une compréhension profonde du contexte de l'ensemble du texte d'entrée. Grâce à la nature bidirectionnelle du mécanisme d'auto-attention, ils créent des représentations contextuelles riches pour chaque token.
  • Application : Idéaux pour les tâches d'analyse et de compréhension du langage (NLU), telles que :
    • La classification de texte (par exemple, l'analyse de sentiment).
    • La reconnaissance d'entités nommées (NER).
    • La réponse à des questions (Question Answering), où la réponse est un extrait du texte.
  • Exemple : BERT et ses dérivés (RoBERTa, ALBERT).

Relation avec le décodeur

Dans l'architecture encodeur-décodeur, l'encodeur et le décodeur jouent des rôles complémentaires :

  • L'encodeur est responsable de la compréhension de la séquence d'entrée.
  • Le décodeur est responsable de la génération de la séquence de sortie.

Le lien clé entre eux est le mécanisme d'attention croisée (cross-attention) au sein du décodeur. À chaque étape de la génération, le décodeur formule une requête (Query) à partir de la partie déjà générée de la séquence de sortie et l'utilise pour « prêter attention » aux représentations de sortie de l'encodeur (qui servent de clés et de valeurs — Key et Value). Cela permet au décodeur de se concentrer sur les parties les plus pertinentes de la séquence d'entrée pour générer le token suivant.

Voir aussi

  • BERT

Bibliographie

  • Hinton, G. E.; Salakhutdinov, R. R. (2006). Reducing the Dimensionality of Data with Neural Networks. Science. DOI:10.1126/science.1127647.
  • Cho, K. et al. (2014). Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation. arXiv:1406.1078.
  • Sutskever, I.; Vinyals, O.; Le, Q. V. (2014). Sequence to Sequence Learning with Neural Networks. arXiv:1409.3215.
  • Bahdanau, D.; Cho, K.; Bengio, Y. (2015). Neural Machine Translation by Jointly Learning to Align and Translate. arXiv:1409.0473.
  • Kingma, D. P.; Welling, M. (2014). Auto-Encoding Variational Bayes. arXiv:1312.6114.
  • Vaswani, A. et al. (2017). Attention Is All You Need. arXiv:1706.03762.
  • Devlin, J. et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.
  • Dai, Z. et al. (2019). Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context. arXiv:1901.02860.
  • Raffel, C. et al. (2020). Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683.
  • Brown, T. B. et al. (2020). Language Models Are Few-Shot Learners. arXiv:2005.14165.
  • Dosovitskiy, A. et al. (2020). An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale. arXiv:2010.11929.