Le concept d'attention est bien connu dans le modèle seq2seq de traduction automatique neuronale. La quantité d'informations transmises du codeur au décodeur est limitée, ce qui limite les performances du modèle. Cependant, l’introduction de l’attention peut surmonter ce goulot d’étranglement et permettre au modèle de mieux gérer les phrases longues et la sémantique complexe.
En termes simples, le modèle utilise tous les états cachés de l'encodeur pendant l'étape de décodage et transmet l'état caché final au décodeur en tant qu'état caché initial. L'avantage est que le modèle est capable d'utiliser plus d'informations pendant le décodage et de « prêter attention » aux parties les plus pertinentes de la séquence d'entrée, effectuant ainsi des prédictions plus précises lors de la génération de différentes parties de la séquence de sortie.
Bien que les mécanismes d'attention diffèrent selon les architectures et les détails de mise en œuvre, ils ont également certaines choses en commun. Par exemple, considérons un scénario dans lequel nous souhaitons faire des prédictions en utilisant un réseau de neurones avec une certaine architecture. Dans ce cas, nous obtenons un vecteur contenant des informations codées. Nous pouvons utiliser ce vecteur pour la prédiction, par exemple en le saisissant dans une couche entièrement connectée, puis en le traitant via une couche softmax. Bien que les étapes de traitement spécifiques puissent varier, l’idée de base est similaire dans les différentes architectures.
Cependant, ses résultats de prédiction se sont révélés insatisfaisants. Il peut y avoir plusieurs raisons, la suivante est une idée possible :
1. Ce vecteur utilisé ne contient pas toutes les informations utiles pour réaliser de bonnes prédictions.
Souvent, les informations nécessaires pour faire de bonnes prédictions sont réparties sur de nombreux vecteurs, comme dans le cas des tâches PNL, où il existe une séquence de vecteurs codés par un marqueur. Bien que toutes les informations distribuées aient été prises en compte, certaines informations seront inévitablement perdues à mesure qu'elles circuleront plus profondément dans le réseau neuronal.
2. Ce qui est utile, ce ne sont pas seulement les informations individuelles contenues dans ces vecteurs, mais aussi leur relation avec le vecteur actuel.
Le vecteur actuel peut avoir besoin d'interagir et de communiquer avec d'autres vecteurs et d'aider à déterminer les informations à transmettre. Par conséquent, une méthode plus intelligente est nécessaire pour combiner tous les vecteurs potentiellement utiles dont vous disposez et permettre au modèle d’apprendre à quoi prêter attention afin de faire de meilleures prédictions.
Après avoir considéré ces deux points, supposons qu'il existe désormais un tel vecteur et d'autres vecteurs qualifiés. Ces vecteurs sont importants pour faire des prédictions, et la méthode de traitement de ces informations est le cadre général de l'attention.
Dans ce cadre, acceptez une requête et laissez-la interagir avec les clés une par une :
1. Interaction spécifique entre la requête et chaque clé, il peut s'agir d'une combinaison de produit interne ou d'ajout ou de jointure et d'alimentation vers Small. réseaux de neurones, etc. Chaque clé différente de la requête est traitée en utilisant la même opération avec les mêmes paramètres formés à partir de la rétropropagation. De plus, il est nécessaire que le résultat final après ces opérations soit une valeur unique. Ces valeurs de sortie sont appelées énergie. Après avoir répété ce processus sur la requête et tous les vecteurs clés, une série d’énergies sera obtenue.
2. Utilisez la couche softmax pour normaliser toutes les énergies.
3. Effectuez une sommation pondérée des vecteurs de valeurs, et le poids est l'énergie normalisée. Cela produit un vecteur de contexte avec les mêmes dimensions qu'un vecteur de valeur contenant des informations sur tous les éléments combinés de manière intelligente.
4. Les vecteurs de contexte et les vecteurs de requête peuvent être utilisés ensemble pour faire des prédictions, par exemple en les concaténant et en les transmettant à un réseau neuronal si nécessaire, suivis d'une couche softmax.
Ce qui précède est le processus du cadre général d'attention. Voyons comment ce cadre est appliqué à différentes tâches.
Une tâche de type analyse des sentiments est une tâche de classification où l'entrée est un morceau de texte et la sortie est une étiquette correspondant à l'une des émotions possibles. Avant que le texte ne soit introduit dans un réseau neuronal, il doit être nettoyé, formaté, tokenisé et converti en une série d'index basés sur le vocabulaire. Bien qu’il ne s’agisse pas de seq2seq mais de seq2one, le mécanisme d’attention s’applique toujours et contribue à améliorer les performances.
Des réseaux ordinaires unidirectionnels ou bidirectionnels basés sur LSTM peuvent être utilisés pour effectuer cette tâche. Dans ce cas, seul l'état caché final de la dernière couche (unidirectionnel) ou les deux états cachés finaux (bidirectionnels, un vers l'avant et un vers l'arrière) sont utilisés pour la prédiction en passant à la tête de classification, par exemple les couches entièrement connectées et softmax. . Les informations limitées véhiculées uniquement par l'état caché final constituent un goulot d'étranglement pour les performances du modèle.
La traduction de date est un exemple de tâche seq2seq au niveau du caractère. Le but de cette tâche est de prendre une date lisible par l'homme comme entrée, telle que « 27 décembre 2022 », et de générer une date lisible par machine représentant la même date que l'entrée, telle que « 2022-12-27 ».
Les modèles basés sur l'attention ont un bloc d'attention avant l'unité LSTM dans le décodeur. À chaque étape de boucle, le vecteur de contexte de sortie du bloc d'attention et la sortie de la dernière étape sont concaténés puis transmis à l'unité LSTM. Une autre implémentation de l'attention consiste à concaténer le bloc d'attention avec le vecteur de sortie de l'étape en cours après l'unité LSTM et le vecteur de contexte de sortie, qui est ensuite transmis à une couche entièrement connectée pour prédire le prochain jeton. Le bloc d'attention suit ici le cadre général, les vecteurs clé et valeur sont le même ensemble de vecteurs, c'est-à-dire les états cachés de la dernière couche de l'encodeur, et l'interaction entre la requête et chaque clé est un petit réseau neuronal.
Dans l'étape de décodage, le LSTM unidirectionnel prédit un jeton à la fois, de sorte que l'entrée de chaque étape a deux options : le jeton prédit par l'étape actuelle à partir de la sortie de l'étape précédente ou la vérité terrain. Ici, un hyperparamètre peut être défini pour contrôler quel pourcentage des jetons d'entrée utilisés pendant la formation sont des vérités terrain et peut être expérimenté pour optimiser les performances du modèle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!