Les réseaux Seq2Seq sont des modèles d’apprentissage automatique puissants qui transforment une séquence d’entrée en une séquence de sortie, même lorsque les longueurs de ces séquences sont différentes. Ils permettent de résoudre les problèmes liées aux tailles figées des sorties des réseaux de neurones classiques.
L’architecture Seq2Seq est utilisée principalement en NLP (traitement du langage naturel), pour la réalisation de tâches comme la traduction.
Dans cet article je vous explique tout ce qu’il y a à savoir sur les Seq2Seq. On parlera de leurs applications concrètes, de leur fonctionnement technique et des limites de cette architecture.
Les applications des Seq2Seq
Les applications des Seq2Seq sont nombreuses et variées, notamment dans le domaine du traitement du langage naturel (NLP).
Les réseaux Seq2Seq sont à la base des systèmes de traduction tels que Google Translate. Ils transforment une séquence de mots dans une langue source en une séquence équivalente dans une langue cible, même si les structures grammaticales diffèrent. Et permettent une compréhension linguistique du contexte plus précise que beaucoup d’autres architectures.
De manière générale, les Seq2Seq permettent d’obtenir des performances intéressantes dans toutes les tâches de génération ou transformation de texte :
- Générer un résumé d’un document est une autre application populaire des Seq2Seq. Ils lisent le texte source et produisent une version plus courte tout en conservant les points essentiels.
- Dans les chatbots et assistants virtuels, les Seq2Seq sont souvent utilisés pour modéliser les dialogues. En fonction d’une requête ou d’un message, le modèle génère une réponse appropriée.
- Ces réseaux sont aussi utilisés pour des systèmes de questions-réponses, en prenant une question en entrée et générant une réponse en fonction du contexte fourni.
Les Seq2Seq ont été proposés initialement pour régler les problèmes liés aux données séquentielles. Le texte n’est qu’un exemple de tous les types de données séquentielles que l’on génère.
Ainsi, on pourrait reprendre les approches Seq2Seq, les combiner à des réseaux de convolutions pour la compréhension d’une image, pour pouvoir entraîner des modèles à comprendre les scènes d’une vidéo.
Les Seq2Seq ne se limitent pas uniquement à la manipulation du texte, mais sont très polyvalents lorsqu’il s’agit de transformer des séquences d’informations complexes en d’autres séquences compréhensibles.
Le fonctionnement des Seq2Seq
L’architecture des Seq2Seq consiste en 2 parties : une partie d’encodage et une partie de décodage.
Le rôle de la partie encodeur sera de résumer l’information disponible dans la séquence d’entrée sous forme d’un vecteur de contexte.
Le rôle du décodeur est de construire la séquence de sortie élément par élément.
Comment fonctionne la partie encodeur ?
La partie encodeur d’un modèle Seq2Seq est responsable de traiter la séquence d’entrée et de la convertir en une représentation interne compacte, souvent appelée vecteur de contexte.
Cette représentation contient les caractéristiques essentielles de la séquence d’entrée qui seront ensuite utilisées par le décodeur pour générer la séquence de sortie. L’encodeur est typiquement constitué de plusieurs couches de réseaux récurrents RNN, qui permettent d’assimiler l’information dans un format adapté pour le traitement ultérieur par le décodeur.
Mathématiquement, le vecteur de contexte qui résulte de l’encodeur est une somme des états cachés des différentes cellules de RNN qui le composent.
Dans certaines variantes des modèles Seq2Seq, comme les modèles utilisant le mécanisme d’attention, le vecteur de contexte est enrichi en mettant en évidence les parties les plus pertinentes de la séquence d’entrée pour chaque étape de la génération de la sortie.
Cela permet au modèle de mieux se concentrer sur les informations cruciales à chaque instant, en faisant une somme pondérée par l’importance des différents éléments d’une séquence donnée.
Par exemple, dans une phrase comme « Le chat dort sur le canapé », un mécanisme d’attention pourrait permettre au modèle de se concentrer successivement sur « chat », puis sur « dort », et enfin sur « canapé », afin de générer un vecteur mathématiques qui permet d’extraire le contexte linguistique de manière précise.
Comment fonctionne la partie décodeur ?
La partie décodeur d’un modèle Seq2Seq reçoit la représentation interne générée par l’encodeur, souvent appelée vecteur de contexte, et utilise cette information pour produire la séquence de sortie, un élément à la fois. Le décodeur est également constitué de réseaux récurrents RNN (LSTM ou GRU), qui génèrent chaque mot de la séquence de sortie en fonction de l’état précédent et du vecteur de contexte.
En d’autres termes, à chaque fois qu’un nouvel élément est généré dans la séquence de sortie, le vecteur de contexte est mis à jour. Par exemple, si je traduis la phrase « Le chat dort sur le canapé » voici ce qui se passe :
- l’encodeur me donne un vecteur de contexte pour cette phrase
- je vais utiliser le décodeur une première fois pour générer le premier élément de ma sortie « The »
- en conséquence, le vecteur de contexte sera mis à jour pour contenir aussi bien la phrase d’entrée que le « The », ce qui permettra de généra le deuxième élément de ma séquence « cat »
- on réitère ce processus, jusqu’a ce que le décodeur prédise le mot de fin de séquence , souvent la chaine de caractère <EOS> (pour End Of Sequence)
Lorsque le mécanisme d’attention est utilisé, le décodeur peut accéder directement aux parties spécifiques de la séquence d’entrée via l’attention, lui permettant ainsi de se concentrer sur les informations pertinentes à chaque étape de la génération.
Cela améliore la qualité de la sortie, notamment pour des séquences longues ou complexes, où il est important de se référer à différents éléments de la séquence d’entrée.
Par exemple, pour traduire la phrase « Le chat dort sur le canapé », le décodeur génèrera chaque mot de la phrase cible en se basant sur le vecteur de contexte et les mots déjà générés, tout en utilisant l’attention pour se concentrer sur les parties pertinentes de la séquence source.
Quelles sont les limites de ces architectures ?
Les modèles Seq2Seq, bien qu’efficaces pour de nombreuses tâches, présentent plusieurs limites importantes.
D’abord, les architectures Seq2Seq classiques, en particulier celles qui n’utilisent pas de mécanisme d’attention, ont du mal à gérer de très longues séquences. Le vecteur de contexte doit résumer toute la séquence d’entrée en une seule représentation fixe, ce qui peut entraîner une perte d’information pour les longues phrases ou documents.
Pour cette même raison, les modèles Seq2Seq ont tendance à être biaisés vers les mots les plus récents dans la séquence d’entrée, ce qui peut affecter la qualité de la sortie, notamment pour les traductions ou résumés où l’ensemble de la phrase est important.
Par ailleurs, les réseaux Seq2Seq, en particulier lorsqu’ils sont combinés avec des mécanismes d’attention, peuvent être coûteux en termes de calcul, surtout pour des séquences longues et des modèles de grande taille. Même si cela est aussi le cas pour d’autres architectures comme les Transformers, le problème dans les Seq2Seq est que toutes les opérations ne sont pas parallélisables, ce qui rend l’entraînement d’un Seq2Seq difficile aussi bien sur GPU que sur CPU.
C’est pour pallier certaines de ces limites, des améliorations comme les mécanismes d’attention ou l’utilisation de Transformers ont été introduites, rendant les modèles plus performants pour traiter des séquences longues et complexes.
Les Transformers introduisent des mécanismes comme la self-attention ou des méthodes qui rendent possible les calculs en parallèle.
Leave a Comment