Sequence-to-sequence est une architecture de modélisation de séquence reposant sur un mécanisme encodeur-décodeur. L’encodeur reçoit une séquence d’entrée qu’il code dans un vecteur d’état caché exploité par le décodeur pour produire la sortie. Dans la traduction automatique neuronale, une phrase allemande est codée puis décodée pour produire une phrase chinoise. La modélisation Seq2Seq permet de contourner les contraintes de longueur car les réseaux neuronaux récurrents traditionnels imposent que les séquences d’entrée et de sortie soient de même longueur.


Enc odeur
Étant donné une séquence d’entrée \textbf{x} = (x_1, x_2, .... x_2, .... x_{L_x}) et une séquence de sortie \textbf{y} = (y_1, y_2, .... y_{L_y}), les états masqués sont :
Décodeur
Côté décodeur, l’initialisation des états cachés peut se faire en utilisant l’état caché final de l’encodeur, donc h_0^{dec} = h_{T_x}^{enc}, ou de manière aléatoire. Le calcul est détaillé ci-dessous :
Lorsqu’on utilise le forçage des enseignants, par exemple en alimentant le réseau avec la vérité de base :
En désactivant le forçage des enseignants, par exemple en alimentant le réseau avec la valeur prédite à l’étape précédente :
En fin de compte, la prédiction est :
Attention
D’une manière générale, l’attention signifie se concentrer sur quelque chose de particulier. Dans le Deep Learning, le mécanisme d’attention repose sur le même concept et est utilisé dans le cadre d’une architecture réseau pour lui permettre de se concentrer sur les connexions les plus importantes entre l’entrée et la sortie (attention générale) ou dans les éléments d’entrée (attention personnelle).
Le mécanisme d’attention a été introduit pour capturer les dépendances particulièrement longues car les séquences sont codées dans un vecteur de taille fixe qui peut ne pas être suffisant pour les séquences longues.
Le modèle seq2seq standard est généralement incapable de traiter de longues séquences car la seule information reçue de la séquence d’entrée par l’encodeur est son dernier état caché. La nouveauté du mécanisme Attention est de réduire la perte d’information en préservant tous les états cachés de l’encodeur qui sont ensuite utilisés par le décodeur à chaque étape. Cela signifie que pour chaque sortie, le décodeur a accès à l’ensemble de la séquence d’entrée et peut diriger sélectivement sa focalisation sur les mots de la séquence d’entrée pour produire la sortie.
En utilisant l’attention du côté décodeur, l’état caché actuel h_l^{dec} dépend non seulement de l’état caché précédent et de la sortie précédente, mais également des états cachés pondérés de l’encodeur.
Il y a deux grands types d’attention :
- Additive attention qui a été développé par Dzmitry Bahdanau. A chaque pas de temps :
- L’encodeur produit des états cachés de chaque élément de la séquence d’entrée.
- Les scores d’alignement entre l’état caché du décodeur précédent et les états cachés de l’encodeur sont calculés.
- La fonction softmax est appliquée et le vecteur contexte est formé en multipliant les états cachés des encodeurs et leurs scores d’alignement.
- Le décodeur est alimenté par le vecteur contexte concaténé avec la sortie précédente du décodeur.
- L’attention multiplicative qui a été développée par Thang Luong. La différence par rapport à l’attention additive est le temps de génération de sortie du décodeur et le calcul des scores d’alignement.
- Le décodeur RNN génère un nouvel état caché en utilisant l’état caché précédent et la sortie précédente.
- Les scores d’alignement sont calculés entre les nouveaux états cachés générés et les états cachés de l’encodeur.
- Le vecteur de contexte est généré comme précédemment.
- Le décodeur est maintenant alimenté par le vecteur contexte concaténé avec le nouvel état caché calculé précédemment.
Stratégies de décodage
A la fin de la formation, un modèle de langage neuronal basé sur des probabilités conditionnelles est produit. Lors de l’inférence, pour produire une séquence de longueur N, nous devons choisir la meilleure solution parmi les possibilités N^V où V est la taille du vocabulaire. Comme il s’agit d’une charge de calcul lourde pour tous les algorithmes de recherche de graphiques complets, différents algorithmes de recherche locale ont été mis au point pour résoudre ce problème d’insolubilité. Nous décrirons l’algorithme de recherche gourmande et l’algorithme de recherche de faisceau.
Recherche gourmande
L’algorithme le plus simple est de sélectionner à chaque pas de temps le jeton correspondant à la probabilité la plus élevée. Sa complexité est N \cdot V.
Recherche par faisceau
Afin d’incorporer la dépendance entre les jetons de la séquence, la recherche de faisceau réduit la perte d’information en gardant la trace de plusieurs candidats (b \geq 1) où b est appelé la taille du faisceau.
C’est un algorithme qui continue de suivre les probabilités de log cumulatives de la largeur de faisceau b de séquences données.

