Explication détaillée du "mécanisme d'attention" dans l'apprentissage en profondeur

Préface

Cet article a été traduit du blog "Attention? Attention!"

Ces dernières années, l'attention, dans la communauté d'apprentissage en profondeur, est devenue le concept et l'outil pratique le plus populaire. Dans ce blog, nous passerons en revue comment il a été "inventé", ainsi que diverses variantes et modèles, tels que le transformateur et le SNAIL.

Annuaire

  • Le problème avec Seq2Seq
  • Né pour "traduction"
    • Définition
  • Mécanisme d'attention "famille"
    • Présentation
    • Auto-attention (auto-attention)
    • Attention flexible vs rigide
    • Attention globale vs locale
  • Réseau de pointeurs
  • Transformateur
    • clé, valeur, requête
    • Auto-attention multi-têtes
    • Encodeur
    • Décodeur
    • Structure globale
  • ESCARGOT
  • GAG d'auto-attention
  • Littérature

L'attention, d'une certaine manière, est inspirée par la façon dont nous nous concentrons sur certaines zones d'une image, ou certains mots apparentés dans une phrase. Donnez une châtaigne:

Déplacement de l'attention dans les tâches visuelles

L'attention visuelle humaine nous permet d'accorder plus d'attention à des zones spécifiques (comme les oreilles de chien dans les zones jaunes) avec "Haute résolution" dans le fond "basse résolution" de l'image, puis progressivement Ajustez la mise au point, passez à une autre oreille, un autre œil, un autre nez, etc., et enfin déduisez les informations de l'image entière. Étant donné une petite zone de patch dans l'image, les pixels restants de l'image peuvent également fournir des informations sur ce que le patch doit afficher. Dans l'image ci-dessus, supposons que nous ayons vu pour la première fois le nez du chien, l'oreille droite pointue et les yeux flous de Shiba, nous nous attendons donc à voir une autre oreille pointue dans la zone jaune. Mais les informations telles que les couvertures et les pulls n'ont pas beaucoup d'aide pour interpréter les informations caractéristiques du chien.

De même, nous pouvons expliquer la relation entre les mots dans une phrase ou un contexte. Lorsque nous voyons le mot «manger», nous nous attendons à voir le mot décrit par «nourriture» non loin derrière. Les mots colorés dans l'image ci-dessous représentent la nourriture, mais tous les mots ne sont pas directement liés à «manger».

Attention sémantique en langage naturel

En bref, dans l'apprentissage en profondeur, l'attention peut être largement obtenue en utilisant des vecteurs de poids d'importance: lors de la prédiction ou de la déduction d'un élément, tel qu'un pixel dans une image ou un mot dans une phrase, nous utilisons le vecteur d'attention pour Déterminez dans quelle mesure il est lié à d'autres éléments, puis additionnez les vecteurs pondérés pour approximer la cible finale.

Le problème avec Seq2Seq

Le modèle Seq2Seq est né dans le domaine des modèles de langage (Sutskever, et al.2014) - de manière générale, il convertit une séquence d'entrée (source) en une autre séquence (cible), et les deux séquences peuvent être de longueur variable. Les scénarios pour les tâches de traduction incluent la traduction automatique multilingue (texte ou discours), les systèmes de génération de dialogue de dialogue de questions et réponses, et même l'analyse syntaxique dans les arborescences grammaticales.

Le modèle Seq2Seq comprend généralement des structures de codage-décodage, notamment:

  • L'encodeur - traite la séquence d'entrée et compresse les informations dans un vecteur de contexte de longueur fixe (incorporation de phrases ou vecteur de «pensée»). Le vecteur de contexte est considéré comme un résumé sémantique de la séquence d'entrée.
  • Décodeur -initialisé par le vecteur de contexte et génère à chaque fois une sortie transcodée. Les premières recherches utilisaient uniquement le dernier état du réseau de codage comme état initial du décodage suivant.

L'encodeur et le décodeur sont des structures de réseau de neurones récurrentes, telles que les unités LSTM ou GRU

modèle seq2seq

Le vecteur de contexte de longueur fixe présente un inconvénient fatal, incapable de se souvenir de longues phrases. Une fois la séquence d'entrée de l'encodeur traitée, la partie de début sera oubliée. Par conséquent, un mécanisme d'attention (Bahdanau et al., 2015) a été proposé pour résoudre ce problème.

Né pour "traduction"

Le mécanisme d'attention "né" est destiné à aider à mémoriser de longues séquences de saisie de phrases pour les tâches de traduction automatique. Par rapport à la construction originale d'un vecteur de contexte unique avec la sortie de la dernière unité cachée de l'encodeur, la "recette secrète" exclusive du mécanisme d'attention est qu'elle prend en compte le vecteur de contexte et toutes les informations d'entrée de séquence pour construire une "connexion". Le poids de la connexion sous chaque élément de sortie est appris automatiquement.

Le vecteur de contexte a pris en compte les informations de séquence d'entrée globales, et nous n'avons pas à nous soucier d'oublier. Le problème de l'alignement sémantique entre l'entrée source et la sortie cible est appris et contrôlé par le vecteur de contexte. Le vecteur de contexte gère en fait trois aspects de l'information:

  • L'état caché de l'encodeur
  • L'état caché du décodeur
  • Alignement de l'entrée source et de la sortie cible

Mécanisme d'attention du modèle de traduction du réseau neuronal

Définition

Ensuite, nous définissons le mécanisme d'attention d'un point de vue théorique. Nous utilisons X pour représenter la séquence d'entrée source de longueur n , et Y ** pour représenter la séquence de sortie cible de longueur m *:

Entrée source et sortie cible

(Les variables en gras représentent des vecteurs, les mêmes ci-dessous) Le
codeur est une structure RNN bidirectionnelle (d'autres structures RNN peuvent également être sélectionnées), y compris l'état caché des couches avant et arrière. La couture dimensionnelle simple peut représenter l'état de codage actuel, ce qui peut être compris comme considérant simultanément les informations supérieure et inférieure du mot en tête:

Représentation d'état masqué RNN bidirectionnel

Le réseau de décodage a un état caché St au temps t -incluant l'état caché de la séquence précédente, la sortie précédente et le vecteur de contexte (somme pondérée de toutes les séquences d'entrée), les poids sont les suivants:

Calcul de l'attention

Pour le premier modèle d'alignement sera i ème séquence d'entrée et la t ème séquences de sortie, un score d'alignement affecté au juge (yt, xi) l' effet d'alignement. Dans l'article de Bahdanau, le vecteur de score d'alignement est organisé par le réseau direct d'une seule couche cachée et est formé conjointement avec d'autres parties du réseau global. Entrez la fonction de calcul du score:

calcul du score

La matrice de score d'alignement est un bon sous-produit et peut indiquer visuellement le degré de corrélation entre la séquence d'entrée et la séquence de sortie.

Visualisation de l'attention du modèle de traduction

Voici un très bon tutoriel sur la méthode d'implémentation fournie par l'équipe Tensorflow .

Mécanisme d'attention "famille"

Grâce à l'aide de l'attention, la dépendance entre l'entrée source et la séquence de sortie cible n'est plus limitée par le problème de distance. C'est un gros gain dans les tâches de traduction automatique. Bientôt, il a été bien étendu dans le domaine de la vision par ordinateur (Xu et al. 2015), les gens ont commencé à explorer diverses variantes des mécanismes d'attention (Luong, et al., 2015; Britz et al., 2017; Vaswani, et al., 2017).

Présentation

Le tableau suivant montre plusieurs mécanismes d'attention traditionnels (ou des mécanismes d'attention plus larges)
Présentation du mécanisme d'attention

  • (*) Signifie «concat» dans Luong, et al., 2015, et signifie «attention additive» dans Vaswani, et al.
  • (^) Facteur d'échelle supplémentaire 1 / sqrt (n) -lorsque l'entrée est grande, la fonction softmax peut avoir un très petit gradient, ce qui rend difficile la mise à jour efficace de l'apprentissage
  • (&) 指 «intra-attention»

Auto-attention

L'auto-attention , également appelée "intra-attention", est un mécanisme lié au poids et à la position de la séquence lors du calcul de la même représentation de séquence. Il s'est avéré très efficace pour la compréhension de la lecture automatique, le résumé abstrait (résumé abstractif) et la génération de description d'image .

Ce papier [réseau de mémoire à court terme] utilise le mécanisme d'auto-attention pour la lecture automatique. Comme le montre la figure ci-dessous, le mécanisme d'auto-attention peut apprendre la corrélation entre le mot actuel et le mot précédent dans la phrase.

Visualisation du mécanisme d'auto-attention

Dans l'article [montrer, assister et raconter], le mécanisme d'auto-attention est appliqué à la tâche de générer et de décrire des images. L'image est d'abord codée par CNN, puis entrée dans le réseau RNN avec un mécanisme d'auto-attention pour apprendre la relation de mappage entre chaque caractéristique de l'image et chaque mot dans la description. La visualisation des poids d'attention montre clairement que le modèle génère un mot pour chaque partie de la fonction.

Mécanisme d'auto-attention dans les tâches visuelles

Attention flexible vs rigide

"Flexibilité" vs "rigidité" est une autre façon de définir l'attention. L'idée originale a été initialement proposée dans l'article [montrer, assister et raconter] en se basant sur la question de savoir si l'attention doit être portée sur l'ensemble de l'image ou seulement une petite partie:

  • Attention flexible : les poids d'alignement sont appris et mappés à travers tous les "patchs" de l'image source, ce qui est cohérent avec Bahdanau et al., 2015
    • Pro: Le modèle est lisse et dérivable
    • Inconvénient: lorsque l'image d'entrée est grande, le coût de la formation est élevé
  • Attention rigide : sélectionnez un seul "patch" dans l'image à la fois
    • Pro: moins de calculs à l'étape d'inférence
    • Inconvénients: le modèle n'est pas guidé et nécessite des moyens techniques plus sophistiqués, tels que la réduction de la variance ou l'apprentissage par renforcement pour s'entraîner (Luong, et al., 2015)

Attention globale vs locale

Luong et al., 2015 ont proposé les concepts d'attention «globale» et «locale». L'attention globale est très similaire à l'attention flexible; l'attention locale est une combinaison de "flexibilité" et de "rigidité" par rapport à la rigidité, des améliorations sont apportées pour la rendre dérivable: le modèle prédit d'abord l'alignement approximatif du mot cible actuel, puis à cette source Une fenêtre centrale est utilisée pour encadrer la position d'entrée et le vecteur de contexte est calculé.

Une attention globale et locale

Réseau de pointeurs

Dans les problèmes de commande ou de vendeur de voyages, l'entrée et l'entrée sont des données de séquence. Le nombre total de catégories discrètes d'éléments de sortie est inconnu à l'avance et dépend de l'échelle des variables d'entrée. Ceci est difficile à résoudre avec le modèle classique Seq2Seqm ou NMT. Des réseaux de pointeurs (Ptr-Net; Vinyals, et al. 2015) sont proposés pour résoudre de tels problèmes: lorsque les éléments de sortie sont liés à la position de la séquence d'entrée, le réseau de pointeurs n'utilise pas l'attention pour mélanger l'état caché de l'encodeur dans le contexte uniquement Vecteur (comme illustré sur la figure 8), mais le mécanisme d'attention est appliqué à l'élément d'entrée, et la sortie d'une étape de décodage de siège est sélectionnée à la fois.

Sortie réseau pointeur

La sortie de Ptr-Net est l'indice entier de la séquence c = (c1, ..., cm), étant donné le vecteur de séquence d'entrée x = (x1, ..., xn) et 1 <ci <n (vous pouvez prendre le signe égal) . Le modèle utilise toujours le cadre de codage-décodage. Les états cachés de codage et de décodage sont (h1, ..., hn) et (s1, ..., sm). si est la porte de sortie activée par le décodeur. Le réseau de pointeurs applique une attention cumulative entre les états masqués, puis la normalise via softmax.

Structure du réseau Ptr-Net

Le mécanisme d'attention est simplifié, car le réseau de pointeurs n'utilise pas le poids d'attention pour mélanger uniquement l'état de codage et la sortie. Ici, la sortie est uniquement liée à la position, pas à l'entrée.

Transformateur

[L'attention est tout ce dont vous avez besoin] Cet article est sans aucun doute l'article le plus influent de 2017. Il montre que l'attention flexible a été considérablement améliorée et rend possible la modélisation Seq2Seq sans unité RNN Le modèle de "transformateur" proposé n'est construit que par le mécanisme d'auto-attention.
Le secret réside dans son architecture réseau.

clé, Valeur 和 Requête

Le transformateur est principalement composé d'une unité appelée mécanisme d'auto-attention à plusieurs têtes - il considère la représentation codée des éléments d'entrée comme des paires clé-valeur (k, v), qui sont toutes de dimension n (n est la longueur de la séquence d'entrée); Dans le contexte de NMT, les clés et les valeurs sont des états masqués de l'encodeur. Dans le décodeur, la sortie de l'étape précédente est compressée en une requête Q (dimension m), et la sortie de l'étape suivante est générée en mappant cette requête à l'ensemble de clés et de valeurs.

Le transformateur utilise l' attention du produit scalaire mis à l'échelle : la sortie est obtenue par la somme pondérée des valeurs, et le poids attribué à chaque élément est obtenu par la requête et le produit scalaire de toutes les clés.

Méthode de calcul Attention Attention dans Transformer

Mécanisme d'auto-attention multi-têtes

Mécanisme d'auto-attention multi-têtes

Par rapport au calcul unique de l'attention, le mécanisme d'attention à plusieurs têtes utilise le mécanisme d'attention du produit scalaire pour paralléliser plusieurs calculs. Chaque sortie d'attention indépendante est simplement épissée et convertie linéairement dans l'espace dimensionnel spécifié. Est-ce parce que l'intégration est toujours efficace? Selon la description de l'article: "L'attention multi-têtes permet au modèle d'assister conjointement aux informations provenant de différents sous-espaces de représentation à différentes positions. Avec une seule tête d'attention, la moyenne inhibe cela."

Méthode de calcul multi-têtes

Encodeur

Structure du codeur dans Transformer

L'encodeur peut générer une représentation basée sur l'attention et a la capacité de localiser des informations pertinentes à partir d'un espace de contexte potentiellement infini.

  • N = 6 même pile de couches
  • Chaque couche a une couche d' auto-attention multi-têtes et un réseau direct entièrement connecté sensible à la position
  • Chaque couche de sous-réseau utilise une connexion résiduelle et une régularisation de la couche réseau. Toutes les données de sortie de la sous-couche ont 512 dimensions

Décodeur

Structure du décodeur dans Transformer

Le décodeur peut extraire des informations d'analyse de la représentation de l'encodeur.

  • N = 6 même pile de couches
  • Chaque couche a deux structures de sous-réseau avec une couche d'auto-attention à plusieurs têtes et un réseau direct entièrement connecté
  • Semblable au décodeur, chaque couche de sous-réseau utilise des résidus et la régularisation du réseau
  • La première sous-couche d'auto-attention multi-têtes est modifiée pour empêcher la transmission des informations de position aux positions suivantes, tout comme lorsque nous prédisons les informations de la position actuelle, nous ne voulons pas jeter un œil aux futures informations appartenant à la séquence cible.

Structure globale

Enfin, regardons la structure du réseau du transformateur dans son ensemble:

  • Les séquences d'entrée source et de sortie cible passeront d'abord par la couche d'intégration pour obtenir des données de 512 dimensions
  • Afin de conserver les informations de position, un codeur de position basé sur l'onde sinusoïdale est intégré et appliqué à la couche d'intégration
  • Les couches softmax et linéaires sont ajoutées à la sortie décodée finale

Structure globale du transformateur

Essayer d'implémenter le réseau Transformer est très intéressant, c'est le code implémenté par le blogueur d'origine: lilianweng / transformer-tensorflow

ESCARGOT

Il n'y a pas de structure RNN ou CNN dans le modèle de transformateur. Même si un codage lié à la position est introduit dans le vecteur d'intégration, c'est une faible intégration de l'ordre des séquences. C'est un problème pour les tâches sensibles à la position telles que l'apprentissage par renforcement.

Un simple méta-apprenant neuronal d'attention (SNAIL) a été proposé pour résoudre partiellement ce problème - à l'aide du mécanisme d'auto-attention du transformateur avec temporel. Les expériences montrent que ce type de réseau est meilleur pour les tâches d'apprentissage supervisé et d'apprentissage par renforcement.

Structure du réseau Simple Neural Attention Meta-Learner (SNAIL)

SNAIL est né dans le méta-apprentissage - cela vaut la peine d'ouvrir un blog séparé pour le présenter séparément. En termes simples, de He modèle méta-apprentissage devrait être généralisables à Novel, Tâches dans à de la Unseen distribution similaire
contenu détaillé peut se référer à ici

Auto-attention GAN

Enfin, je veux mentionner les réseaux génératifs antagonistes et le GAN d'auto-attention récemment populaires (SAGAN; Zhang et al., 2018), et montrer comment le mécanisme d'attention peut améliorer la qualité des images générées.

Le réseau classique de génération de confrontation convolutionnelle profonde (DCGAN) utilise un réseau CNN multicouche pour représenter le générateur et le discriminateur. Cependant, la capacité de représentation du réseau est limitée par la taille du noyau de convolution, car les caractéristiques d'un pixel sont limitées à une petite zone locale. Afin de connecter des régions plus éloignées, les caractéristiques doivent être diluées par des opérations de convolution et les informations de dépendance ne sont pas conservées.

Dans les tâches visuelles, le vecteur de contexte sous le mécanisme d'attention flexible peut clairement apprendre la relation entre un pixel et d'autres positions, même s'il est éloigné, cela peut facilement capturer des dépendances globales. Par conséquent, le GAN avec mécanisme d'attention peut également capturer ces détails.

Opération de convolution et mécanisme d'auto-attention

SAGAN utilise un réseau neuronal non local pour calculer les poids d'attention. Les fonctions d'image convolutionnelle peuvent mapper x en trois copies, correspondant respectivement à la clé, à la valeur et à la requête dans Transformer.

Ensuite, nous utilisons cliquez pour calculer le poids d'attention de la sortie de la fonction finale:

Parmi eux, αij est un exemple dans la cartographie de l'attention, qui indique le poids à attribuer à la position i lorsque le modèle synthétise le pixel de position j . W est un noyau de convolution 1 × 1. Si vous pensez que le noyau de convolution 1 × 1 est très étrange, vous pouvez parcourir ce tutoriel par Andrew Ng . La sortie oj est le vecteur colonne avec la sortie finale o = (o1, ..., oj, ..., oN).

Ensuite, la sortie de la couche d'attention est multipliée par le paramètre d'échelle pour accumuler la carte d'entités d'entrée d'origine:

Parmi eux, le paramètre d'échelle γ augmente de 0 pendant le processus de formation. Le réseau dépend d'abord davantage de la zone locale, puis met progressivement à jour l'apprentissage en attribuant des poids à la zone éloignée.


* Si vous remarquez des erreurs dans ce blog, veuillez contacter [email protected] à temps.

Littérature

  • [1] "Attention et mémoire dans le Deep Learning et la PNL." - 3 janvier 2016 par Denny Britz
  • [2] «Tutoriel de traduction automatique neuronale (seq2seq)»
  • [3] Dzmitry Bahdanau, Kyunghyun Cho et Yoshua Bengio. "Traduction automatique de neurones par + apprendre conjointement à aligner et à traduire." ICLR 2015.
  • [4] Kelvin Xu, Jimmy Ba, Ryan Kiros, Kyunghyun Cho, Aaron Courville, Ruslan Salakhudinov, Rich Zemel et Yoshua Bengio. "Montrez, assistez et dites: génération de légendes d'images neuronales avec attention visuelle." ICML, 2015.
  • [5] Ilya Sutskever, Oriol Vinyals et Quoc V. Le. "Séquence à séquence d'apprentissage avec les réseaux de neurones." NIPS 2014.
  • [6] Thang Luong, Hieu Pham, Christopher D. Manning. "Approches efficaces de la traduction automatique de neurones basée sur l'attention." EMNLP 2015.
  • [7] Denny Britz, Anna Goldie, Thang Luong et Quoc Le. "Exploration massive d'architectures de traduction automatique de neurones." ACL 2017.
  • [8] Ashish Vaswani et al. "L'attention est tout ce dont vous avez besoin." NIPS 2017.
  • [9] Jianpeng Cheng, Li Dong et Mirella Lapata. "Réseaux de mémoire à court terme pour la lecture de machine." EMNLP 2016.
  • [10] Xiaolong Wang et al. «Réseaux de neurones non locaux». CVPR 2018
  • [11] Han Zhang, Ian Goodfellow, Dimitris Metaxas et Augustus Odena. «Réseaux d'opposition génératifs auto-attention.» arXiv preprint arXiv: 1805.08318 (2018).
  • [12] Nikhil Mishra, Mostafa Rohaninejad, Xi Chen et Pieter Abbeel. "Un simple méta-apprenant attentif aux neurones." Atelier NIPS sur le méta-apprentissage. 2017.
  • [13] «WaveNet: un modèle génératif pour l'audio brut» - 8 septembre 2016 par DeepMind.
  • [14] Oriol Vinyals, Meire Fortunato et Navdeep Jaitly. "Réseaux de pointeurs." NIPS 2015.

Je suppose que tu aimes

Origine www.cnblogs.com/CocoML/p/12725925.html
conseillé
Classement