Les transformateurs sont un modèle d'apprentissage en profondeur très puissant qui a pu devenir un standard dans de nombreuses tâches de traitement du langage naturel et est également sur le point de révolutionner le domaine de la vision par ordinateur.
Tout a commencé en 2017 lorsque Google Brain a publié l'article destiné à tout changer, Attention Is All You Need [4]. Les chercheurs appliquent cette nouvelle architecture à plusieurs problèmes de traitement du langage naturel, et il est immédiatement évident à quel point cela peut surmonter certaines des limitations qui affligent les RNN, traditionnellement utilisés pour des tâches telles que la traduction d'une langue à une autre.
Si ce contenu éducatif approfondi vous est utile, abonnez-vous à notre liste de diffusion de recherche sur l'IA d'être alerté lorsque nous publierons du nouveau matériel.
Au fil des années, les Transformers sont devenus une institution dans le domaine du Natural Language Processing et Google Brain, en 2020, se demande, seront-ils aussi efficaces sur les images ? La réponse est oui, les Vision Transformers sont nés et, avec quelques modifications préliminaires aux images, ils parviennent à exploiter l'architecture classique des Transformers et atteignent bientôt l'état de l'art dans de nombreux problèmes également dans ce domaine.
L'effervescence est grande et après quelques mois, début 2021, les chercheurs de Facebook ont publié une nouvelle version des Transformers cette fois-ci cependant, spécifiquement pour la vidéo, les TimeSformers. Évidemment, même dans ce cas, avec quelques modifications structurelles mineures, cette architecture est bientôt gagnante en vidéo et Facebook annonce en février 2021 qu'il l'utiliserait avec les vidéos de son réseau social pour créer de nouveaux modèles à des fins très variées.
Pourquoi avons-nous besoin de transformateurs ?
Mais prenons du recul et explorons les motivations qui ont poussé les chercheurs de Google à rechercher une nouvelle architecture alternative pour résoudre les tâches de traitement du langage naturel.
Traditionnellement, une tâche telle que la traduction était effectuée à l'aide de réseaux de neurones récurrents, qui sont connus pour poser un certain nombre de problèmes. L'un des principaux problèmes est son fonctionnement séquentiel. Par exemple, pour traduire une phrase de l'anglais vers l'italien, avec ce type de réseaux, le premier mot de la phrase à traduire était passé dans un encodeur avec un état initial, et l'état suivant était ensuite passé dans un deuxième encodeur avec le deuxième mot de la phrase, et ainsi de suite jusqu'au dernier mot. L'état résultant du dernier codeur est ensuite transmis à un décodeur qui renvoie en sortie à la fois le premier mot traduit et un état suivant, qui est transmis à un autre décodeur, et ainsi de suite.
Le problème ici est assez évident, pour terminer l'étape suivante, je dois avoir le résultat de l'étape précédente. C'est un gros défaut car vous ne profitez pas de la capacité de parallélisation des GPU modernes et donc perdez en termes de performances. Il existe également d'autres problèmes tels que l'explosion du gradient, l'incapacité à détecter les dépendances entre des mots distants dans la même phrase, etc.
L'attention est-elle tout ce dont vous avez besoin ?
La question s'est alors posée : existe-t-il un mécanisme que nous pouvons calculer de manière parallélisée qui nous permette d'extraire les informations dont nous avons besoin de la phrase ? La réponse est oui, et ce mécanisme est l'attention.
Si nous devions définir l'attention en oubliant un instant les aspects techniques et de mise en œuvre, comment procéderions-nous ?
Prenons un exemple de phrase et demandons-nous, en nous concentrant sur le mot « donné », sur quels autres mots de la phrase devrais-je porter mon attention pour ajouter du sens à ce mot ? Je pourrais me poser une série de questions, par exemple, qui a donné ? Et dans ce cas, je me concentrerais sur le mot « je », puis je pourrais demander À qui a donné ? En plaçant mon attention dans ce cas sur le mot Charlie et enfin, je pourrais demander, qu'est-ce qui a donné ? En se concentrant enfin sur le mot nourriture.
En me posant ces questions et peut-être en faisant cela pour chacun des mots de la phrase, je pourrais peut-être en comprendre le sens et les facettes. Le problème à ce stade est de savoir comment mettre en œuvre ce concept dans la pratique ?
Pour comprendre le calcul de l'attention, nous pouvons établir des parallèles avec le monde des bases de données. Lorsque nous effectuons une recherche dans la base de données, nous soumettons une requête (Q) et nous recherchons parmi les données disponibles une ou plusieurs clés qui satisfont la requête. La sortie est la valeur associée à la clé la plus pertinente pour la requête.
Ce qui se passe dans le cas du calcul de l'attention est extrêmement similaire.
Nous commençons par regarder la phrase sur laquelle calculer l'attention comme un ensemble de vecteurs. Chaque mot, via un mécanisme d'inclusion de mots, est codé dans un vecteur. Nous considérons ces vecteurs comme les clés parmi lesquelles rechercher, par rapport à une requête que nous recherchons, qui peut être un mot de la même phrase (auto-attention) ou d'une autre phrase. À ce stade, nous devons calculer la similarité entre la requête et chacune des clés disponibles, mathématiquement via le produit scalaire mis à l'échelle. Ce processus va retourner une série de valeurs réelles, peut-être très différentes les unes des autres, mais comme on veut obtenir des poids entre 0 et 1 dont la somme est égale à 1, on applique un SoftMax aux résultats. Une fois les poids obtenus il faut multiplier le poids de chaque mot, et donc sa pertinence par rapport à la requête, par le vecteur qui le représente. Nous renvoyons enfin la combinaison de ces produits comme vecteur d'attention.
Pour construire ce mécanisme, nous utilisons des couches linéaires qui, à partir du vecteur d'entrée, génèrent des clés, des requêtes et des valeurs, par multiplication matricielle. La combinaison de clés et de requêtes permettra d'obtenir la correspondance la plus correcte entre ces deux ensembles, dont le résultat sera ensuite combiné avec les valeurs afin d'obtenir la combinaison la plus pertinente.
Mais ce mécanisme serait suffisant si on voulait se focaliser sur un seul mot, mais et si on voulait regarder la phrase sous plusieurs points de vue et ensuite calculer plusieurs fois, en parallèle, l'attention ? Nous utilisons ce qu'on appelle l'attention multi-têtes, avec une structure similaire dont les résultats sont simplement combinés à la fin pour renvoyer un seul vecteur résumant toute l'attention calculée.
Maintenant que nous avons compris quel mécanisme utiliser et nous sommes assurés de sa parallélisabilité, analysons la structure au sein de laquelle s'encastre l'attention multi-têtes et qui constitue le transformateur.
Considérant toujours une tâche de traduction, concentrons-nous dans un premier temps sur la partie gauche de l'image, la partie encodage, qui prend en entrée l'intégralité de la phrase à traduire de l'anglais vers l'italien. Déjà ici on voit qu'il y a une énorme révolution par rapport à l'approche RNN car au lieu de traiter la phrase mot à mot, elle est soumise entièrement. Avant de procéder au calcul de l'attention, les vecteurs représentant les mots sont combinés avec un mécanisme de codage positionnel, basé sur le sinus et le cosinus, qui intègre dans les vecteurs des informations sur la position des mots dans la phrase. Ceci est très important car nous savons que dans n'importe quelle langue la position des mots dans la phrase est plus que pertinente et c'est une information que nous ne pouvons absolument pas perdre si nous voulons faire une évaluation correcte. Toutes ces informations passent dans un mécanisme d'attention multi-têtes, dont le résultat est normalisé et transmis à un feed-forward. L'encodage peut être effectué N fois pour obtenir des informations plus significatives.
Mais la phrase à traduire n'est pas la seule entrée du transformateur, nous avons un deuxième bloc, le décodeur, qui recueille la sortie de l'exécution précédente du transformateur. Si nous supposons, par exemple, que nous avons déjà traduit les deux premiers mots et que nous voulons prédire le troisième mot de la phrase en italien, nous passerons dans le décodeur les deux premiers mots traduits. L'encodage positionnel et l'attention multi-têtes seront effectués sur ces mots et le résultat sera combiné avec le résultat de l'encodeur. L'attention est recalculée sur la combinaison et le résultat, au moyen d'une couche linéaire et d'un softmax, sera un vecteur de mots candidats potentiels pour être le nouveau mot traduit, avec une probabilité associée à chacun d'eux. A l'itération suivante, le décodeur prendra alors également ce mot en plus des précédents.
Cette structure s'est donc avérée incroyablement efficace et performante, c'est parce qu'elle traite la phrase dans son intégralité et non mot par mot, retient des informations sur la position des mots dans la phrase et exploite l'attention qui est un mécanisme capable d'exprimer efficacement le contenu de la phrase.
Après toutes ces belles explications, vous pourriez penser que les transformateurs sont parfaits et sans aucun défaut. Evidemment, il n'en est rien et l'une de ses forces est aussi sa faiblesse, le calcul de l'attention !
Afin de calculer l'attention de chaque mot par rapport à tous les autres je dois effectuer des calculs de N² qui, même partiellement parallélisables, restent très coûteux. Avec une telle complexité, imaginons ce que signifie calculer l'attention, plusieurs fois, sur un paragraphe de centaines et de centaines de mots.
Graphiquement, vous pouvez imaginer une matrice qui doit être remplie avec les valeurs d'attention de chaque mot par rapport à n'importe quel autre et cela a clairement un coût pertinent. Il est important de préciser qu'en option et généralement sur le décodeur, il est possible de calculer l'attention masquée dans laquelle vous évitez de calculer l'attention entre le mot de requête et tous les suivants
Certains pourraient alors argumenter, mais avons-nous vraiment besoin de toute cette structure vue ci-dessus si alors de nombreux avantages apportés par les transformateurs sont plutôt liés au mécanisme d'attention ? Mais le premier article de Google Brain de 2017 ne disait-il pas « L'attention est tout ce dont vous avez besoin » ? [4] Certes légitime, mais en mars 2021, à nouveau, des chercheurs de Google ont publié un article intitulé « L'attention n'est pas tout ce dont vous avez besoin » [6]. Qu'est-ce que ça veut dire? Les chercheurs ont mené des expériences analysant le comportement du mécanisme d'auto-attention menées sans aucun des autres composants des transformateurs et ont constaté qu'il converge vers une matrice de rang 1 avec un taux doublement exponentiel. Cela signifie que ce mécanisme, en lui-même, est pratiquement inutile. Alors pourquoi les transformateurs sont-ils si puissants ? Elle est due à un bras de fer entre le mécanisme d'auto-attention qui tend à réduire le rang de la matrice et deux autres composants des transformateurs, les connexions sautées et le MLP.
Le premier permet de diversifier la distribution des chemins en évitant d'obtenir tous le même chemin et cela réduit drastiquement la probabilité que la matrice soit réduite au rang 1. Le MLP parvient au contraire à augmenter le rang de la matrice résultante du fait de sa non-linéarité. En revanche, il a été montré que la normalisation ne joue aucun rôle pour éviter ce comportement du mécanisme d'auto-attention. Par conséquent, l'attention n'est pas tout ce dont vous avez besoin, mais l'architecture du transformateur parvient à l'utiliser à son avantage pour obtenir des résultats impressionnants.
Transformateurs de vision
Arrivés à ce stade en 2020, les chercheurs de Google se sont de nouveau demandé : "Mais si les Transformers se sont révélés si efficaces dans le domaine du traitement du langage naturel, comment fonctionneront-ils avec les images ?". Un peu comme cela a été fait avec la PNL, on part de la notion d'attention mais cette fois appliquée aux images. Essayons de le comprendre à travers un exemple.
Si nous considérons une image d'un chien debout devant un mur, n'importe lequel d'entre nous dira qu'il s'agit d'une « image de chien » et non d'une « image d'un mur », c'est parce que nous concentrons notre attention sur le sujet dominant et discriminant de l'image et c'est exactement ce que fait le mécanisme d'attention appliqué aux images.
Maintenant que nous comprenons que le concept d'attention peut également être étendu aux images, il ne nous reste plus qu'à trouver un moyen d'entrer des images dans un transformateur classique.
On sait que le transformateur prend en entrée des vecteurs, ceux des mots, alors comment peut-on convertir une image en vecteurs ? Une première solution serait sûrement d'utiliser tous les pixels de l'image et de les mettre « en ligne » pour obtenir un vecteur. Mais arrêtons-nous un instant et voyons ce qui se passerait si nous choisissions cette option.
Nous avons dit précédemment que le calcul de l'attention a une complexité égale à O(N²) cela signifie que si nous devons calculer la complexité de chaque pixel par rapport à tous les autres, dans une image basse résolution comme 256×256 pixels nous aurions une quantité extrême de calculs et absolument insurmontable avec les ressources d'aujourd'hui. Cette approche n'est donc certainement pas viable.
La solution est assez simple et dans l'article « Une image vaut 16 × 16 mots » [2] est proposé de diviser l'image en patchs, puis de convertir chaque patch en vecteur à l'aide d'une projection linéaire qui mappera les patchs dans un vecteur espace.
Il ne nous reste plus qu'à aller voir l'architecture du Vision Transformer.
L'image est ensuite divisée en patchs, qui passent par une projection linéaire pour obtenir des vecteurs, qui sont couplés à des informations sur la position du patch dans l'image et soumis à un transformateur classique. L'ajout d'informations sur la position d'origine du patch à l'intérieur de l'image est fondamental car lors de la projection linéaire cette information serait perdue même s'il est très important de bien comprendre le contenu de l'image. Un autre vecteur est inséré qui est indépendant de l'image en cours d'analyse et qui permet d'obtenir des informations globales sur l'ensemble de l'image et en fait, la sortie correspondant à ce patch est la seule qui est considérée et passée dans un MLP qui renverra la classe prévue.
Cependant, il y a un point dans ce processus où il y a une perte très importante d'informations. En fait, lors de la transition du patch au vecteur, toute information sur la position des pixels dans le patch est perdue. C'est certainement une chose sérieuse, soulignent les auteurs de Transformer in Transformer (TnT) [3] car la disposition des pixels au sein d'une portion de l'image à analyser est une information certaine que nous ne voudrions pas perdre pour faire une qualité prédiction.
Les auteurs de TnT se sont alors demandés, est-il possible de trouver un meilleur moyen de soumettre les vecteurs au transformateur ?
Leur proposition est alors de prendre chaque patch individuel (pxp) de l'image, qui sont eux-mêmes des images sur 3 canaux RVB, et de le transformer en un tenseur de canal c. Ce tenseur est alors divisé en p' parties avec p'
Ils sont ensuite concaténés et projetés linéairement afin de leur donner la même taille que le vecteur obtenu à partir de la projection linéaire du patch d'origine et combiné avec celui-ci.
En faisant cela, les vecteurs d'entrée du transformateur seront également affectés par la disposition des pixels dans les patchs et, ce faisant, les auteurs ont réussi à améliorer encore les performances sur diverses tâches de vision par ordinateur.
TimeSformers
Compte tenu des grands succès des transformateurs d'abord en PNL puis dans leur application aux images, les chercheurs de Facebook ont tenté en 2021 d'appliquer également cette architecture à la vidéo.
Intuitivement, il est clair qu'il est possible de le faire puisque nous savons tous qu'une vidéo n'est rien de plus qu'un ensemble d'images l'une après l'autre et que les images ne sont rien de plus que des images.
Il n'y a qu'un petit détail qui les différencie des Vision Transformers, il faut prendre en compte non seulement l'espace mais aussi le temps. Dans ce cas en fait, lorsque nous allons calculer l'attention, nous ne pouvons pas regarder les images comme des images isolées mais nous devrions trouver une forme d'attention qui tienne compte de la variation qui se produit entre les images consécutives car elle est centrale dans l'évaluation de une vidéo.
Pour tenter de résoudre ce problème, les auteurs ont suggéré plusieurs nouveaux mécanismes d'attention, de ceux qui se concentrent exclusivement sur l'espace, utilisé principalement comme point de référence, à ceux qui calculent l'attention de manière axiale, dispersée, ou conjointement entre l'espace et le temps.
Cependant, la méthode qui a obtenu les meilleurs résultats est l'Attention Espace-Temps Divisé. Elle consiste, étant donné une trame à l'instant t et un de ses patchs comme requête, à calculer l'attention spatiale sur l'ensemble de la trame puis l'attention temporelle dans le même patch de la requête mais dans la trame précédente et suivante.
Mais pourquoi cette approche fonctionne-t-elle si bien ? La raison en est qu'il apprend plus de fonctionnalités distinctes que les autres approches et est donc mieux à même de comprendre les vidéos de différentes catégories. Nous pouvons le voir dans la visualisation suivante où chaque vidéo est représentée par un point dans l'espace et sa couleur représente la catégorie à laquelle elle appartient.
Les auteurs se sont également interrogés sur la pertinence de la résolution des vidéos et du nombre d'images qu'elles contiennent et ont constaté que plus la résolution était élevée, meilleure était la précision du modèle, jusqu'à un certain point. En ce qui concerne le nombre d'images, encore une fois à mesure que le nombre d'images augmente, la précision augmente également. La chose intéressante est qu'il n'était pas possible de faire des tests avec un nombre d'images supérieur à celui indiqué dans le graphique et donc potentiellement la précision pourrait encore s'améliorer, nous n'avons pas encore trouvé la limite supérieure de cette amélioration.
Dans Vision Transformers, il est connu qu'un ensemble de données d'entraînement plus important entraîne souvent une meilleure précision. Cela a également été vérifié par les auteurs sur TimeSformers et encore une fois, à mesure que le nombre de vidéos de formation considérées augmente, la précision augmente également.
Conclusions
Que reste-t-il à faire maintenant ? Les transformateurs viennent d'atterrir dans le monde de la vision par ordinateur et semblent plus que déterminés à remplacer les réseaux convolutifs traditionnels ou du moins à se tailler un rôle important dans ce domaine. La communauté scientifique est donc en effervescence pour tenter d'améliorer encore les Transformers, les combiner avec diverses techniques et les appliquer à de vrais problèmes, pour enfin pouvoir faire des choses qui n'étaient pas possibles jusqu'à récemment. De grands géants comme Facebook et Google travaillent activement au développement et à l'application de Transformers et nous n'avons probablement encore fait qu'effleurer la surface.
Avez-vous aimé l'article? Rejoignez-moi sur LinkedIn! Et si vous êtes intéressé par Transformers lire mon article sur DINO!
Références et idées
[1] "Gedas Bertasis, Heng Wang et Lorenzo Torresani". "L'attention spatio-temporelle est-elle tout ce dont vous avez besoin pour comprendre la vidéo ? ».
[2] "Alexey Dosovitskiy et al.". "Une image vaut 16 × 16 mots: des transformateurs pour la reconnaissance d'image à grande échelle ».
[3] "Kai Han et al.". "Transformateur dans Transformateur ».
[4] "Ashish Vaswani et al.". "L'attention est tout ce dont vous avez besoin ».
[5] " Qizhe Xie et al. ". "L'auto-formation avec Noisy Student améliore la classification ImageNet ».
[6] "Yihe Dong et al.", "L'attention n'est pas tout ce dont vous avez besoin : l'attention pure perd son rang de manière doublement exponentielle avec la profondeur »
[7] "Nicola Messina et al.", "Réseau de raisonnement Transformer pour la correspondance et la récupération d'images et de textes »
[8] "Nicola Messina et al.", "Alignement textuel visuel à grain fin pour la récupération intermodale à l'aide d'encodeurs de transformateur »
[9] « David Coccomini », «TimeSformer pour la classification vidéo avec code d'entraînement »
Cet article a été publié initialement le Vers la science des données et republié sur TOPBOTS avec la permission de l'auteur.
Profitez de cet article? Inscrivez-vous pour plus de mises à jour de l'IA.
Nous vous informerons lorsque nous publierons plus de formation technique.
Services Connexes
Source : https://www.topbots.com/transformers-timesformers-and-attention/
- 2020
- 2021
- 7
- 9
- Compte
- Avantage
- AI
- recherche ai
- Tous
- parmi
- Annonce
- Application
- architecture
- Réservé
- L'art
- article
- auteurs
- LES MEILLEURS
- Bit
- construire
- Change
- Voies
- classification
- Communautés
- calcul
- Vision par ordinateur
- Connexions
- contenu
- données
- Base de données
- bases de données
- l'apprentissage en profondeur
- détail
- développer
- Éducation
- pédagogique
- Efficace
- Anglais
- exécution
- Exploiter
- Fonctionnalités:
- finalement
- Prénom
- défaut
- Focus
- nourriture
- formulaire
- gif
- Global
- GPU
- l'
- ici
- Comment
- HTTPS
- majeur
- Des centaines
- image
- Reconnaissance d'image
- ImageNet
- Améliore
- d'information
- Institution
- IT
- ACTIVITES
- clés
- langue
- apprentissage
- Localisation
- Mars
- modèle
- mois
- Langage naturel
- Traitement du langage naturel
- réseau et
- réseaux
- Neural
- les réseaux de neurones
- nlp
- Option
- de commander
- Autre
- Autres
- Papier
- Pièce
- Patches
- performant
- image
- pixel
- Peste
- prédiction
- Produit
- Produits
- proposition
- qualité
- réduire
- un article
- Ressources
- Résultats
- Retours
- Rechercher
- Série
- set
- étapes
- Taille
- petit
- So
- Réseaux sociaux
- RÉSOUDRE
- Space
- Spatial
- Commencer
- Région
- Étudiant
- soumis
- Surface
- Technique
- tests
- Le graphique
- fiable
- Formation
- Traduction
- Actualités
- us
- Plus-value
- Vidéo
- Vidéos
- Voir
- vision
- visualisation
- guerre
- WHO
- dans les
- des mots
- Activités principales
- world
- vaut
- années