Qu’est-ce que l’apprentissage profond. En termes simples sur le complexe : que sont les réseaux de neurones ? Apprentissage profond : vue géométrique

Il y a aujourd’hui beaucoup de discussions et d’écrits sur les réseaux de neurones artificiels, à la fois dans le contexte du big data et de l’apprentissage automatique et en dehors de ceux-ci. Dans cet article, nous rappellerons la signification de ce concept, exposerons à nouveau la portée de son application et parlerons également d'une approche importante associée aux réseaux de neurones - l'apprentissage profond, nous décrirons son concept, ainsi que les avantages et les inconvénients dans des cas d'utilisation spécifiques.

Qu'est-ce qu'un réseau de neurones ?

Comme vous le savez, le concept de réseau neuronal (NN) vient de la biologie et constitue un modèle quelque peu simplifié de la structure du cerveau humain. Mais n'entrons pas dans les profondeurs des sciences naturelles - le plus simple est d'imaginer un neurone (y compris artificiel) comme une sorte de boîte noire avec de nombreux trous d'entrée et une sortie.

Mathématiquement, un neurone artificiel transforme un vecteur de signaux d'entrée (impacts) X en un vecteur de signaux de sortie Y à l'aide d'une fonction appelée fonction d'activation. Au sein de la connexion (réseau de neurones artificiels - ANN), trois types de neurones fonctionnent : entrée (recevant des informations du monde extérieur - les valeurs des variables qui nous intéressent), sortie (renvoyant les variables souhaitées - par exemple, les prévisions , ou signaux de contrôle), ainsi que des neurones intermédiaires, remplissant certaines fonctions internes (« cachées »). Un ANN classique se compose donc de trois couches ou plus de neurones, et dans la deuxième couche et les suivantes (« cachées » et sortie), chaque élément est connecté à tous les éléments de la couche précédente.

Il est important de rappeler la notion de feedback, qui détermine le type de structure ANN : transmission directe du signal (les signaux passent séquentiellement de la couche d'entrée à travers la couche cachée et entrent dans la couche de sortie) et structure récurrente, lorsque le réseau contient des connexions remontant , des neurones les plus éloignés aux plus proches ). Tous ces concepts constituent l'information minimale nécessaire pour passer au niveau suivant de compréhension de l'ANN : former un réseau de neurones, classer ses méthodes et comprendre les principes de fonctionnement de chacune d'elles.

Formation aux réseaux de neurones

Nous ne devons pas oublier pourquoi de telles catégories sont utilisées en général - sinon nous risquons de nous enliser dans des mathématiques abstraites. En fait, les réseaux de neurones artificiels sont compris comme une classe de méthodes permettant de résoudre certains problèmes pratiques, parmi lesquels les principaux sont les problèmes de reconnaissance de formes, de prise de décision, d'approximation et de compression des données, ainsi que les problèmes de cluster les plus intéressants pour nous. analyse et prévision.

Sans tomber dans l’autre extrême et sans entrer dans le détail du fonctionnement des méthodes ANN dans chaque cas précis, rappelons qu’en toutes circonstances, c’est la capacité d’un réseau de neurones à apprendre (avec un professeur ou « tout seul »). ") C'est le point clé pour l'utiliser pour résoudre des problèmes pratiques.

En général, la formation d’un ANN est la suivante :

  1. les neurones d'entrée reçoivent des variables (« stimuli ») de l'environnement externe ;
  2. conformément aux informations reçues, les paramètres libres du réseau neuronal changent (les couches intermédiaires de neurones fonctionnent) ;
  3. En raison des changements dans la structure du réseau neuronal, le réseau « réagit » différemment aux informations.

Il s’agit de l’algorithme général d’entraînement d’un réseau neuronal (rappelons-nous du chien de Pavlov - oui, c’est exactement le mécanisme interne de formation d’un réflexe conditionné - et oublions tout de suite : après tout, notre contexte consiste à opérer avec des concepts et des exemples techniques).

Il est clair qu’un algorithme d’apprentissage universel n’existe pas et, très probablement, ne peut pas exister ; Conceptuellement, les approches d’apprentissage sont divisées en apprentissage supervisé et apprentissage non supervisé. Le premier algorithme suppose que pour chaque vecteur d'entrée (« apprentissage »), il existe une valeur requise du vecteur de sortie (« cible ») - ainsi, ces deux valeurs forment une paire d'apprentissage, et l'ensemble de ces paires est le ensemble de formation. Dans le cas d'un apprentissage non supervisé, l'ensemble de formation est constitué uniquement de vecteurs d'entrée - et cette situation est plus plausible du point de vue de la vie réelle.

Apprentissage profond

Le concept d'apprentissage profond fait référence à une classification différente et désigne une approche de formation de structures dites profondes, qui incluent des réseaux neuronaux à plusieurs niveaux. Un exemple simple dans le domaine de la reconnaissance d'images : il est nécessaire d'apprendre à une machine à identifier des traits de plus en plus abstraits par rapport à d'autres traits abstraits, c'est-à-dire à déterminer la relation entre l'expression de l'ensemble du visage, des yeux et de la bouche, et, en fin de compte, des groupes de pixels colorés mathématiquement. Ainsi, dans un réseau neuronal profond, chaque niveau de fonctionnalités possède sa propre couche ; Il est clair que la formation d'un tel « colosse » nécessite l'expérience appropriée des chercheurs et le niveau de matériel. Les conditions favorables à l'apprentissage neuronal profond ne se sont développées qu'en 2006 - et huit ans plus tard, nous pouvons parler de la révolution que cette approche a produite dans l'apprentissage automatique.

Ainsi, tout d'abord, dans le contexte de notre article, il convient de noter ce qui suit : dans la plupart des cas, l'apprentissage profond n'est pas supervisé par une personne. Autrement dit, cette approche implique la formation d'un réseau de neurones sans enseignant. C’est le principal avantage de l’approche « profonde » : l’apprentissage automatique supervisé, notamment dans le cas de structures profondes, nécessite d’énormes coûts de temps – et de main d’œuvre. L’apprentissage profond, quant à lui, est une approche qui modélise (ou du moins tente de se rapprocher) de la pensée abstraite humaine, plutôt que de l’utiliser.

L'idée, comme d'habitude, est merveilleuse, mais des problèmes tout à fait naturels se posent dans la manière d'approcher - en premier lieu, enracinés dans ses prétentions à l'universalité. En fait, même si les approches d’apprentissage profond ont connu des succès significatifs dans le domaine de la reconnaissance d’images, le même traitement du langage naturel soulève encore bien plus de questions que de réponses. Il est évident que dans les n années à venir, il est peu probable qu'il soit possible de créer un « Léonard de Vinci artificiel » ou même - du moins ! - « l'homo sapiens artificiel ».

Mais les chercheurs en intelligence artificielle sont déjà confrontés à la question de l’éthique : les craintes exprimées dans tout film de science-fiction qui se respecte, de « Terminator » à « Transformers », ne paraissent plus drôles (les réseaux de neurones modernes et sophistiqués peuvent déjà être considérés comme un modèle plausible du travail du cerveau de l'insecte !), mais sont clairement inutiles pour l'instant.

L'avenir technologique idéal nous apparaît comme une époque où l'homme pourra déléguer la plupart de ses pouvoirs à une machine - ou du moins lui permettre de faciliter une partie importante de son travail intellectuel. Le concept d’apprentissage profond est un pas vers ce rêve. Le chemin à parcourir est long, mais il est déjà clair que les réseaux de neurones et les approches en constante évolution qui leur sont associées sont capables de réaliser les aspirations des écrivains de science-fiction au fil du temps.

Comment un discours de conférence est-il devenu une sensation dans le monde de l’intelligence artificielle ? Natalie Wolchower de WIRED a rendu compte d'une découverte qui pourrait donner des indices sur le fonctionnement des réseaux d'apprentissage profond.

Bien que les algorithmes connus sous le nom de « réseaux de neurones profonds » aient appris à conduire des voitures, à battre des champions de jeux vidéo et de Go, à peindre des tableaux et à faire des découvertes scientifiques, ils ont dérouté leurs créateurs car personne ne s’attendait à ce que les algorithmes d’apprentissage profond fonctionnent aussi bien. Après tout, ces systèmes reposaient sur une compréhension extrêmement vague de l’architecture du cerveau (dont personne ne comprend non plus le fonctionnement).

Comme le cerveau, un réseau neuronal profond comporte des couches de neurones, uniquement artificiels, c'est-à-dire des fragments de mémoire informatique. Lorsqu'un neurone se déclenche, il envoie des signaux à ses neurones associés dans une autre couche. Lors de l'apprentissage profond, les connexions au sein du réseau sont renforcées ou affaiblies afin que le système puisse mieux transmettre un signal provenant de données externes (par exemple, une photo d'un chien) aux couches de neurones associées aux concepts de haut niveau souhaités, par exemple : "chien". Après qu’un réseau neuronal profond ait appris de milliers d’échantillons de photos de chiens, il sera capable de reconnaître les chiens sur les photos, tout comme les humains. Le saut magique des cas spécifiques aux concepts généraux est ce qui donne leur pouvoir aux réseaux neuronaux, car il sous-tend la pensée humaine, la créativité et d’autres capacités collectivement appelées « intelligence ». Les experts ne savaient pas ce qui permettait aux réseaux d’apprentissage profond de se généraliser et dans quelle mesure cette perception de la réalité était similaire à celle du cerveau humain.

En juillet dernier, un enregistrement d'un discours prononcé lors d'une conférence à Berlin est apparu sur YouTube, suggérant une réponse possible. Dans son rapport Naftali Tishbi , scientifique et neuroscientifique à l'Université hébraïque de Jérusalem, a présenté des preuves à l'appui d'une nouvelle théorie expliquant l'apprentissage profond. Tishby estime que les réseaux neuronaux profonds apprennent grâce à un « goulot d'étranglement de l'information », une procédure que lui et ses collègues décrit en 1999. L’idée est que le réseau neuronal se débarrasse des données d’entrée et des détails inutiles, « poussant » les informations à travers un goulot d’étranglement et ne laissant que les caractéristiques les plus appropriées pour une définition générale.Expériences informatiques Tishby et son élève Ravid Schwartz-Ziv ont montré comment cette procédure se produit lors de l'apprentissage profond.

Ces découvertes ont enthousiasmé la communauté de l’IA. "Je pense que l'idée du goulot d'étranglement pourrait être très importante dans les futures recherches sur les réseaux neuronaux", a déclaré Alex Alemi de Google Research, qui a déjà développé de nouvelles méthodes d'approximation pour explorer la théorie sur des réseaux de neurones plus grands. Le goulot d’étranglement peut agir « non seulement comme un outil théorique pour comprendre le fonctionnement des réseaux de neurones, mais aussi comme un outil pour créer de nouveaux objectifs et de nouvelles structures pour les réseaux de neurones », a déclaré Alemi.

Certains chercheurs doutent que cette théorie explique pleinement le succès du deep learning, mais Kyle Cranmer de l’Université de New York, qui utilise l’apprentissage automatique pour étudier les collisions de particules au Large Hadron Collider, affirme que « cela semble être vrai ».

Geoffrey Hinton, pionnier de l'apprentissage profond, a écrit une lettre à Tishby après avoir regardé son discours. «C'est très intéressant. Il me faudra l'écouter dix mille fois encore pour vraiment le comprendre, mais il est rare de nos jours d'entendre une performance avec une idée vraiment originale qui pourrait être la réponse à un grand mystère. »

Selon Tishby, qui considère ce principe comme fondamental à tout apprentissage, cette réponse tant attendue signifie que « la partie la plus importante de l’apprentissage est l’oubli ».

Goulot

Tishby a commencé à réfléchir au goulot d'étranglement de l'information lorsque d'autres chercheurs ont commencé à travailler avec des réseaux neuronaux profonds, même si aucun des deux concepts n'avait encore de nom. C'est dans les années 1980 que Tishby réfléchissait à la capacité des humains à reconnaître la parole de chacun, ce qui était à l'époque un problème dans l'étude de l'intelligence artificielle. Tishby s'est rendu compte que le nœud du problème était une question de pertinence : quelles sont les caractéristiques les plus significatives d'un mot parlé et comment les séparer des variables telles que les accents, la diction et l'intonation ? Quels signaux retenons-nous de la mer de données de réalité ?

"Cette idée de pertinence de l'information a été évoquée à plusieurs reprises, mais elle n'a jamais été correctement formulée", a déclaré Tishby dans une interview. "Pendant de nombreuses années, les gens ont pensé que la théorie de l'information n'était pas appropriée pour réfléchir à la pertinence, et ces idées fausses remontent à Shannon lui-même."

Claude Shannon, le créateur de la théorie de l'information, a en quelque sorte lancé l'étude de l'information dans les années 1940 en permettant de considérer l'information comme une catégorie abstraite, des zéros et des uns ayant une signification purement mathématique. Comme le dit Tishby, Shannon a accepté l’idée selon laquelle « l’information n’a rien à voir avec la sémantique ». Mais Tishby estime que ce n’est pas le cas. Grâce à la théorie de l’information, « vous pouvez définir la « pertinence » de manière rigoureuse ».

Imaginez que X soit un ensemble complexe de données, comme les pixels d'une photo d'un chien, et Y soit une variable simple représentée par ces données, comme le mot « chien ». Vous pouvez capturer toutes les informations « pertinentes » sur X dans Y en compressant X autant que possible sans perdre la capacité de prédire Y. Dans leur article de 1999, Tishby et ses co-auteurs Fernando Pereira (maintenant chez Google) et William Bialek ( maintenant à l'Université de Princeton) a formulé cette hypothèse comme un problème d'optimisation mathématique. C'était une idée fondamentale sans application pratique.

« J'y ai réfléchi dans différents contextes au cours des trente dernières années », explique Tishby. "J'ai de la chance que les réseaux neuronaux profonds soient devenus si importants."

Les yeux sur les visages des gens

Bien que le concept de réseaux neuronaux profonds existe depuis des décennies, leurs performances dans les tâches de reconnaissance vocale et d’image ont augmenté au début des années 2010 grâce à des programmes de formation améliorés et à des processeurs informatiques plus puissants. Tishby a pris conscience du lien potentiel entre cette amélioration et son principe du goulot d'étranglement en 2014 après avoir lu articles les physiciens David Schwab et Pankaj Mehta.

Ils ont appris que l'algorithme de Hinton, appelé réseau de croyances profondes, fonctionne comme la renormalisation, une technique utilisée en physique pour acquérir une compréhension globale d'un système physique à partir de ses détails. Lorsque Schwab et Mehta ont appliqué le réseau de croyances profondes à un modèle d'aimant à son « point critique », où le système est fractal à n'importe quelle échelle, ils ont découvert que le réseau utilisait automatiquement une technique de type renormalisation pour calculer l'état du modèle. . C'était un signe surprenant que « l'extraction de caractéristiques pertinentes dans le contexte de la physique statistique et l'extraction de caractéristiques dans le contexte de l'apprentissage profond ne sont pas simplement appelées de la même manière, mais sont la même chose », comme l'a dit le biophysicien. Ilya Nemenman.

Le seul problème est que le monde réel n’est pas fractal. "Le monde naturel n'est pas des oreilles sur des oreilles, mais des yeux sur des visages sur des gens", a déclaré Cranmer. "Je ne dirais donc pas que [la procédure de renormalisation] est la raison pour laquelle les réseaux de neurones fonctionnent bien avec les images." Mais Tishby, qui suivait à l’époque une chimiothérapie pour un cancer du pancréas, s’est rendu compte qu’il y avait une idée plus large derrière tout cela. « Penser à la science et au rôle de mes anciennes idées a été une partie importante de ma guérison », a-t-il déclaré.

En 2015, Tishbi et son élève Noga Zaslavsky supposé que l'apprentissage profond est une procédure de goulot d'étranglement de l'information qui élimine les données inutiles tout en conservant les informations sur le sujet que les données représentent. De nouvelles expériences avec des réseaux neuronaux profonds montrent comment se produit la procédure de goulot d'étranglement. Dans un cas, les chercheurs ont utilisé de petits réseaux qui pouvaient être entraînés à étiqueter les données entrantes avec un un ou un zéro (« chien » ou « pas chien ») et ont créé des signaux aléatoires dans 282 connexions neuronales. Ils ont ensuite suivi ce qui s'est passé lorsque les réseaux ont commencé à s'entraîner sur 3 000 ensembles de données.

L'algorithme de base utilisé dans la plupart des procédures d'apprentissage profond pour régler la façon dont les connexions neuronales réagissent aux données est appelé « descente de gradient stochastique ». Chaque fois que le réseau reçoit des données, le signal traverse des couches de neurones artificiels. Lorsque le signal atteint la couche supérieure, le motif final peut être comparé à l'étiquette correcte de l'image - 1 ou 0, « chien » ou « pas chien ». Toutes les différences entre ce modèle et la bonne réponse sont « propagées » à travers les couches, comme un enseignant corrigeant un examen, l'algorithme renforçant ou affaiblissant chaque connexion pour améliorer le réseau afin de produire le signal de sortie correct. Au fur et à mesure que l'entraînement progresse, les modèles communs dans les données d'entraînement se reflètent dans la force des connexions, et le réseau devient expert dans l'étiquetage correct des données, dans la reconnaissance d'un chien, d'un mot ou d'une unité.

Dans leurs expériences, Tishby et Schwartz-Ziv ont suivi la quantité d'informations que chaque couche d'un réseau neuronal profond stockait sur les données d'entrée et quelles informations chacune stockait sur l'étiquette de sortie. Les scientifiques ont découvert que les réseaux ont progressivement convergé vers un goulot d'étranglement théorique en matière d'information : la limite théorique dérivée de l'article original de Tishby, Pereira et Bialek. La limite représente le meilleur résultat absolu que le système peut obtenir lors de l'extraction d'informations pertinentes. À cette limite, le système compresse les données d’entrée aussi étroitement que possible sans sacrifier la capacité de prédire avec précision leur catégorie.

Tishby et Schwartz-Ziv ont fait la découverte intéressante que l'apprentissage profond se déroule en deux phases : une courte phase de « réglage » au cours de laquelle le réseau apprend à étiqueter les données d'entraînement, et une longue phase de « compression » au cours de laquelle le réseau s'améliore en généralisation. qui est mesurée par la performance des réseaux dans l’étiquetage des nouvelles données de test.

Lorsqu'un réseau neuronal ajuste ses connexions pour une descente de gradient stochastique, au début, le nombre de bits qu'il stocke sur l'entrée reste à peu près constant ou augmente légèrement à mesure que les connexions sont réglées pour coder des modèles dans l'entrée et que le réseau obtient de bons résultats pour l'étiqueter. Certains experts ont comparé cette étape à la mémorisation.

L’apprentissage passe ensuite à la phase de compression. Le réseau commence à compresser les informations sur les données d'entrée, en suivant uniquement les caractéristiques les plus importantes en corrélation avec l'étiquette de sortie. Cela se produit parce qu'à chaque itération de descente de gradient, des corrélations aléatoires se produisent, indiquant au réseau de faire différentes choses et de rendre les connexions plus fortes ou plus faibles. Cette randomisation est une compression de la représentation du système des données d'entrée. Par exemple, certaines photos peuvent montrer des chiens à la maison, tandis que d’autres non. Lorsque le réseau analyse ces photos, il peut « oublier » la corrélation entre les maisons et les chiens sur certaines photos, même si d’autres photos y résistent. La compréhension par le système des concepts généraux se forme en oubliant certaines caractéristiques. En fait, des expériences ont montré que la capacité de généralisation d’un réseau neuronal s’améliore pendant la phase de compression. (Un réseau neuronal profond entraîné sur des photos de chiens peut être testé sur d'autres photos, avec ou sans chiens.)

Il reste à voir si le goulot d’étranglement de l’information régit tous les modes d’apprentissage profond ou s’il existe d’autres méthodes de généralisation que la compression. Certains experts en IA considèrent les idées de Tishby comme l'une des découvertes théoriques récentes les plus importantes sur l'apprentissage profond. Andrew Sachs, chercheur en IA et neuroscientifique à l'Université Harvard, a observé que certains grands réseaux neuronaux ne nécessitent pas une longue phase de compression pour bien se généraliser. Au lieu de cela, les chercheurs programment quelque chose appelé arrêt précoce, qui réduit le temps de formation pour empêcher le réseau de coder trop de corrélations.

Tishby affirme que les modèles de réseau analysés par Sachs et ses collègues diffèrent de l'architecture de réseau neuronal standard, mais la théorie des goulots d'étranglement de l'information explique mieux leurs performances que les autres méthodes. Les questions relatives à l'existence ou non d'un goulot d'étranglement dans les réseaux neuronaux plus grands sont en partie abordées dans des expériences récentes menées par Tishby et Schwartz-Ziv, dans lesquelles ils entraînent des réseaux neuronaux beaucoup plus grands, dotés de 330 000 connexions, à reconnaître les chiffres manuscrits dans la base de données MNIST de 60 000 images. référence bien connue pour évaluer les performances des algorithmes de deep learning. Les scientifiques ont constaté la même convergence des réseaux ; ils ont également observé deux phases distinctes d’apprentissage profond, séparées par une transition encore plus nette que dans les réseaux plus petits. "Je suis désormais complètement convaincu qu'il s'agit d'un phénomène général", a déclaré Tishby.

Les gens et les machines

Le mystère de la façon dont le cerveau filtre les signaux de nos sens et les élève au niveau de conscience a suscité beaucoup d'intérêt parmi les premiers chercheurs en intelligence artificielle qui espéraient recréer le processus d'apprentissage du cerveau. Pour la plupart, ils ont déjà abandonné cette voie du progrès technologique et ont commencé à améliorer la productivité plutôt que de rechercher la plausibilité biologique. Cependant, alors que les machines pensantes réalisent des exploits toujours plus grands, faisant même craindre que l’IA ne devienne un jour une menace existentielle, nombreux sont ceux qui espèrent que ces études révéleront des idées générales sur l’apprentissage et l’intelligence.

Brenden Lake, qui étudie les différences et les similitudes entre l'apprentissage humain et l'apprentissage automatique, a déclaré que les découvertes de Tishby représentaient « une étape importante vers l'ouverture de la boîte noire des réseaux neuronaux », mais il a souligné que le cerveau est une boîte noire beaucoup plus complexe. Nos cerveaux adultes, qui comptent plusieurs centaines de milliards de connexions entre 86 milliards de neurones, utilisent probablement un certain nombre d’astuces pour améliorer la généralisation au-delà des procédures d’apprentissage de base et de reconnaissance sonore qui se produisent pendant la petite enfance et qui peuvent ressembler à de nombreux égards à l’apprentissage profond.

Par exemple, Lake a déclaré que les deux phases de l’apprentissage profond ne sont pas similaires à la façon dont les enfants apprennent les lettres manuscrites, qu’il étudie. Les enfants n’ont pas besoin de voir des milliers d’exemples et de comprimer leur compréhension des lettres sur une longue période pour apprendre d’autres exemples de ces lettres et les écrire eux-mêmes. Ils peuvent l’apprendre à partir d’un exemple. Les modèles de Lake et de ses collègues suggèrent que le cerveau peut déconstruire une nouvelle lettre sous la forme d'une série de « battements » – des constructions mentales préexistantes – qui permettent de lier le concept d'une lettre à des connaissances antérieures. « Au lieu de considérer l'image d'une lettre comme un motif de pixels et d'apprendre le concept comme une représentation de ces caractéristiques », comme dans les algorithmes d'apprentissage automatique standard, Lake a expliqué : « J'essaie de construire un modèle causal simple de l'image d'une lettre. lettre », c'est-à-dire créer un raccourci vers la généralisation.

De telles idées sur le cerveau pourraient être utiles à la communauté de l’IA, facilitant l’échange d’informations entre ces domaines. Tishby pense que sa théorie s'avérera utile dans les deux disciplines, même si elle prend une forme plus générale dans l'apprentissage humain. La théorie nous permet déjà de comprendre quels types de problèmes les réseaux de neurones réels et artificiels peuvent résoudre. "Cela donne une caractérisation complète des problèmes qui peuvent être étudiés", explique Tishby. Ce sont « des problèmes dans lesquels je peux supprimer le bruit de l’entrée sans nuire à ma capacité de classification. Ce sont des problèmes de vision naturelle et de reconnaissance vocale. C’est exactement le genre de problèmes que notre cerveau peut gérer.

Cependant, les réseaux de neurones réels et artificiels ne peuvent pas faire face à des problèmes dans lesquels chaque détail est important, et une différence de minutes peut gâcher l'ensemble du résultat. Par exemple, de nombreuses personnes ne peuvent pas multiplier rapidement deux grands nombres dans leur tête. « Nous avons un grand nombre de problèmes similaires, des problèmes logiques, très sensibles aux changements d’une variable. Classification, problèmes discrets, problèmes cryptographiques. Je ne pense pas que l’apprentissage profond m’aidera un jour à déchiffrer les codes cryptographiques.

La généralisation – un goulot d’étranglement de l’information – implique l’abandon de certains détails. Il ne convient pas aux calculs mentaux complexes, mais ils ne constituent pas la tâche principale du cerveau. Nous recherchons des visages familiers dans une foule, de l'ordre dans le chaos, des signaux perceptibles dans un monde bruyant.

Aujourd'hui, un graphique est l'un des moyens les plus acceptables pour décrire les modèles créés dans un système d'apprentissage automatique. Ces graphiques informatiques sont composés de sommets de neurones reliés par des arêtes de synapse qui décrivent les connexions entre les sommets.

Contrairement à un processeur graphique central ou vectoriel scalaire, un IPU, un nouveau type de processeur conçu pour l'apprentissage automatique, permet de construire de tels graphiques. Un ordinateur conçu pour manipuler des graphiques est une machine idéale pour calculer des modèles de graphiques créés grâce à l’apprentissage automatique.

L’un des moyens les plus simples de décrire le processus de l’intelligence artificielle est de le visualiser. L'équipe de développement de Graphcore a créé une collection de ces images qui sont affichées sur l'UIP. Il est basé sur le logiciel Poplar, qui visualise le travail de l'intelligence artificielle. Les chercheurs de cette société ont également découvert pourquoi les réseaux profonds nécessitent autant de mémoire et quelles solutions existent pour résoudre le problème.

Poplar comprend un compilateur graphique conçu dès le départ pour traduire les opérations d'apprentissage automatique standard en code d'application IPU hautement optimisé. Il vous permet de rassembler ces graphiques en utilisant le même principe que la collecte des POPNN. La bibliothèque contient un ensemble de différents types de sommets pour les primitives généralisées.

Les graphiques sont le paradigme sur lequel reposent tous les logiciels. Dans Poplar, les graphiques vous permettent de définir un processus de calcul, dans lequel les sommets effectuent des opérations et les arêtes décrivent la relation entre eux. Par exemple, si vous souhaitez additionner deux nombres, vous pouvez définir un sommet avec deux entrées (les nombres que vous souhaitez ajouter), quelques calculs (une fonction pour additionner deux nombres) et une sortie (le résultat).

Généralement, les opérations avec les sommets sont beaucoup plus complexes que dans l'exemple décrit ci-dessus. Ils sont souvent définis par de petits programmes appelés codelets (noms de code). L'abstraction graphique est attrayante car elle ne fait aucune hypothèse sur la structure du calcul et décompose le calcul en composants que l'UIP peut utiliser pour fonctionner.

Poplar utilise cette abstraction simple pour créer de très grands graphiques représentés sous forme d'images. La génération logicielle du graphique nous permet de l'adapter aux calculs spécifiques nécessaires pour garantir l'utilisation la plus efficace des ressources de l'UIP.

Le compilateur traduit les opérations standard utilisées dans les systèmes d'apprentissage automatique en code d'application hautement optimisé pour l'UIP. Le compilateur de graphiques crée une image intermédiaire du graphique informatique, qui est déployée sur un ou plusieurs appareils IPU. Le compilateur peut afficher ce graphique de calcul, de sorte qu'une application écrite au niveau du cadre de réseau neuronal affiche une image du graphique de calcul qui s'exécute sur l'UIP.


Graphique du cycle complet de formation AlexNet dans les sens avant et arrière

Le compilateur graphique Poplar a transformé la description AlexNet en un graphe informatique de 18,7 millions de sommets et 115,8 millions d'arêtes. Le clustering clairement visible est le résultat d’une communication forte entre les processus de chaque couche du réseau, avec une communication plus facile entre les couches.

Un autre exemple est un simple réseau entièrement connecté formé sur MNIST, un simple ensemble de données de vision par ordinateur, une sorte de « Bonjour le monde » en apprentissage automatique. Un réseau simple pour explorer cet ensemble de données permet de comprendre les graphiques pilotés par les applications Poplar. En intégrant des bibliothèques de graphiques à des frameworks tels que TensorFlow, la société propose l'un des moyens les plus simples d'utiliser les IPU dans les applications d'apprentissage automatique.

Une fois le graphique construit à l’aide du compilateur, il doit être exécuté. Ceci est possible en utilisant le moteur graphique. L'exemple de ResNet-50 démontre son fonctionnement.


Graphique ResNet-50

L'architecture ResNet-50 permet la création de réseaux profonds à partir de partitions répétitives. Le processeur n'a qu'à définir ces sections une seule fois et à les rappeler. Par exemple, le cluster de niveau conv4 est exécuté six fois, mais mappé une seule fois sur le graphique. L'image montre également la variété de formes des couches convolutives, chacune possédant un graphique construit selon une forme naturelle de calcul.

Le moteur crée et gère l'exécution d'un modèle d'apprentissage automatique à l'aide d'un graphique généré par le compilateur. Une fois déployé, le moteur graphique surveille et répond aux IPU, ou appareils, utilisés par les applications.

L'image ResNet-50 montre l'intégralité du modèle. À ce niveau, il est difficile d'identifier les connexions entre les sommets individuels, il vaut donc la peine de regarder des images agrandies. Vous trouverez ci-dessous quelques exemples de sections au sein des couches de réseaux neuronaux.

Pourquoi les réseaux profonds ont-ils besoin d’autant de mémoire ?

Les grandes empreintes mémoire constituent l’un des plus grands défis des réseaux neuronaux profonds. Les chercheurs tentent de lutter contre la bande passante limitée des dispositifs DRAM, que les systèmes modernes doivent utiliser pour stocker un grand nombre de poids et d'activations dans un réseau neuronal profond.

Les architectures ont été conçues à l'aide de puces de processeur conçues pour le traitement séquentiel et l'optimisation de la DRAM pour la mémoire haute densité. L'interface entre ces deux appareils constitue un goulot d'étranglement qui introduit des limitations de débit et ajoute une surcharge importante en termes de consommation d'énergie.

Bien que nous n’ayons pas encore une compréhension complète du cerveau humain et de son fonctionnement, il est généralement admis qu’il n’existe pas de grande mémoire séparée. On pense que la fonction de la mémoire à long et à court terme dans le cerveau humain est ancrée dans la structure des neurones et des synapses. Même des organismes simples comme les vers, dotés d’une structure cérébrale neurale d’un peu plus de 300 neurones, ont un certain degré de fonction de mémoire.

Intégrer de la mémoire dans des processeurs conventionnels est un moyen de contourner le problème des goulots d'étranglement de la mémoire, en libérant une énorme bande passante tout en consommant beaucoup moins d'énergie. Cependant, la mémoire sur puce est coûteuse et n'est pas conçue pour les très grandes quantités de mémoire attachées aux CPU et aux GPU actuellement utilisés pour former et déployer des réseaux neuronaux profonds.

Il est donc utile d'examiner comment la mémoire est utilisée aujourd'hui dans les processeurs et les systèmes d'apprentissage profond basés sur GPU et de se demander : pourquoi ont-ils besoin de dispositifs de stockage de mémoire aussi volumineux alors que le cerveau humain fonctionne très bien sans eux ?

Les réseaux de neurones ont besoin de mémoire pour stocker les données d'entrée, les poids et les fonctions d'activation au fur et à mesure que l'entrée se propage à travers le réseau. En apprentissage, l'activation sur l'entrée doit être maintenue jusqu'à ce qu'elle puisse être utilisée pour calculer les erreurs dans les gradients de sortie.

Par exemple, un réseau ResNet à 50 couches possède environ 26 millions de paramètres de poids et calcule 16 millions d'activations directes. Si vous utilisez un float 32 bits pour stocker chaque poids et activation, cela nécessitera environ 168 Mo d'espace. En utilisant une valeur de précision inférieure pour stocker ces poids et activations, nous pourrions réduire de moitié, voire quadrupler ce besoin de stockage.

Un problème majeur de mémoire vient du fait que les GPU s’appuient sur des données représentées sous forme de vecteurs denses. Par conséquent, ils peuvent utiliser un thread d’instruction unique (SIMD) pour atteindre une densité de calcul élevée. Le processeur utilise des unités vectorielles similaires pour le calcul haute performance.

Les GPU ont une largeur de synapse de 1 024 bits, ils utilisent donc des données à virgule flottante de 32 bits, ils les divisent donc souvent en mini-lots parallèles de 32 échantillons pour créer des vecteurs de données de 1 024 bits. Cette approche du parallélisme vectoriel augmente de 32 fois le nombre d'activations et le besoin de stockage local d'une capacité supérieure à 2 Go.

Les GPU et autres machines conçues pour l'algèbre matricielle sont également soumis à une charge de mémoire due aux poids ou aux activations de réseaux neuronaux. Les GPU ne peuvent pas effectuer efficacement les petites convolutions utilisées dans les réseaux neuronaux profonds. Par conséquent, une transformation appelée « réduction » est utilisée pour convertir ces convolutions en multiplications matrice-matrice (GEMM), que les GPU peuvent gérer efficacement.

Une mémoire supplémentaire est également nécessaire pour stocker les données d'entrée, les valeurs temporaires et les instructions du programme. La mesure de l'utilisation de la mémoire lors de l'entraînement du ResNet-50 sur un GPU haut de gamme a montré qu'il nécessitait plus de 7,5 Go de DRAM locale.

Certains pourraient penser qu’une précision de calcul moindre pourrait réduire la quantité de mémoire requise, mais ce n’est pas le cas. En basculant les valeurs des données sur une demi-précision pour les poids et les activations, vous ne remplirez que la moitié de la largeur du vecteur SIMD, gaspillant ainsi la moitié des ressources de calcul disponibles. Pour compenser cela, lorsque vous passerez de la pleine précision à la demi-précision sur le GPU, vous devrez alors doubler la taille du mini-batch pour forcer suffisamment de parallélisme des données pour utiliser tous les calculs disponibles. Ainsi, passer à des pondérations et des activations de précision inférieures sur le GPU nécessite toujours plus de 7,5 Go de mémoire dynamique en libre accès.

Avec autant de données à stocker, il est tout simplement impossible de toutes les intégrer dans un GPU. Chaque couche de réseau neuronal convolutif doit stocker l'état de la DRAM externe, charger la couche réseau suivante, puis charger les données dans le système. En conséquence, l'interface de mémoire externe, déjà limitée en bande passante, souffre de la charge supplémentaire liée au rechargement constant des balances et au stockage et à la récupération des fonctions d'activation. Cela ralentit considérablement le temps d'entraînement et augmente considérablement la consommation d'énergie.

Il existe plusieurs façons de résoudre ce problème. Premièrement, des opérations telles que les fonctions d'activation peuvent être effectuées « sur place », permettant aux données d'entrée d'être réécrites directement dans la sortie. De cette façon, la mémoire existante peut être réutilisée. Deuxièmement, l'opportunité de réutilisation de la mémoire peut être obtenue en analysant la dépendance des données entre les opérations sur le réseau et l'allocation de la même mémoire aux opérations qui ne l'utilisent pas actuellement.

La deuxième approche est particulièrement efficace lorsque l'ensemble du réseau neuronal peut être analysé au moment de la compilation pour créer une mémoire allouée fixe, puisque la surcharge de gestion de la mémoire est réduite à presque zéro. Il s'est avéré que la combinaison de ces méthodes peut réduire de deux à trois fois l'utilisation de la mémoire d'un réseau neuronal.
Une troisième approche significative a été récemment découverte par l’équipe Baidu Deep Speech. Ils ont appliqué diverses techniques d'économie de mémoire pour réduire de 16 fois la consommation de mémoire des fonctions d'activation, leur permettant ainsi de former des réseaux comportant 100 couches. Auparavant, avec la même quantité de mémoire, ils pouvaient former des réseaux à neuf couches.

La combinaison de ressources de mémoire et de traitement dans un seul appareil présente un potentiel significatif pour améliorer les performances et l'efficacité des réseaux de neurones convolutifs, ainsi que d'autres formes d'apprentissage automatique. Des compromis peuvent être faits entre la mémoire et les ressources de calcul pour atteindre un équilibre entre les fonctionnalités et les performances du système.

Les réseaux de neurones et les modèles de connaissances dans d’autres méthodes d’apprentissage automatique peuvent être considérés comme des graphiques mathématiques. Il y a une énorme quantité de parallélisme concentrée dans ces graphiques. Un processeur parallèle conçu pour exploiter le parallélisme dans les graphiques ne repose pas sur le mini-batch et peut réduire considérablement la quantité de stockage local requise.

Les résultats des recherches actuelles ont montré que toutes ces méthodes peuvent améliorer considérablement les performances des réseaux de neurones. Les GPU et CPU modernes ont une mémoire intégrée très limitée, seulement quelques mégaoctets au total. Les nouvelles architectures de processeur spécialement conçues pour l'apprentissage automatique équilibrent la mémoire et le calcul sur puce, offrant des améliorations significatives en termes de performances et d'efficacité par rapport aux processeurs et GPU actuels.

Intelligence artificielle, réseaux de neurones, apprentissage automatique : que signifient réellement tous ces concepts actuellement populaires ? Pour la plupart des non-initiés, dont je suis moi-même, ils ont toujours semblé fantastiques, mais en réalité, leur essence réside en surface. J'ai depuis longtemps l'idée d'écrire dans un langage simple sur les réseaux de neurones artificiels. Découvrez par vous-même et dites aux autres ce qu'est cette technologie, comment elle fonctionne, réfléchissez à son histoire et à ses perspectives. Dans cet article, j'ai essayé de ne pas entrer dans les détails, mais de parler simplement et populairement de cette direction prometteuse dans le monde de la haute technologie.

Intelligence artificielle, réseaux de neurones, apprentissage automatique : que signifient réellement tous ces concepts actuellement populaires ? Pour la plupart des non-initiés, dont je suis moi-même, ils ont toujours semblé fantastiques, mais en réalité, leur essence réside en surface. J'ai depuis longtemps l'idée d'écrire dans un langage simple sur les réseaux de neurones artificiels. Découvrez par vous-même et dites aux autres ce qu'est cette technologie, comment elle fonctionne, réfléchissez à son histoire et à ses perspectives. Dans cet article, j'ai essayé de ne pas entrer dans les détails, mais de parler simplement et populairement de cette direction prometteuse dans le monde de la haute technologie.

Un peu d'histoire

Pour la première fois, le concept de réseaux de neurones artificiels (ANN) est apparu dans le but de simuler les processus cérébraux. La première avancée majeure dans ce domaine peut être considérée comme la création du modèle de réseau neuronal McCulloch-Pitts en 1943. Les scientifiques ont développé pour la première fois un modèle de neurone artificiel. Ils ont également proposé la conception d'un réseau de ces éléments pour effectuer des opérations logiques. Mais surtout, les scientifiques ont prouvé qu’un tel réseau est capable d’apprendre.

La prochaine étape importante fut le développement par Donald Hebb du premier algorithme de calcul de l'ANN en 1949, qui devint fondamental pendant plusieurs décennies suivantes. En 1958, Frank Rosenblatt a développé le parceptron, un système qui imite les processus cérébraux. À une certaine époque, cette technologie n’avait pas d’équivalent et reste aujourd’hui fondamentale dans les réseaux de neurones. En 1986, presque simultanément, indépendamment les uns des autres, des scientifiques américains et soviétiques ont considérablement amélioré la méthode fondamentale de formation d'un perceptron multicouche. En 2007, les réseaux de neurones connaissent une renaissance. L'informaticien britannique Geoffrey Hinton a été le premier à développer un algorithme d'apprentissage profond pour les réseaux neuronaux multicouches, qui est désormais utilisé, par exemple, pour faire fonctionner des véhicules sans pilote.

En bref sur l'essentiel

Au sens général du terme, les réseaux de neurones sont des modèles mathématiques qui fonctionnent sur le principe des réseaux de cellules nerveuses dans un organisme animal. Les ANN peuvent être implémentés dans des solutions programmables et matérielles. Pour rendre les choses plus faciles à comprendre, un neurone peut être considéré comme une cellule possédant de nombreux trous d’entrée et un trou de sortie. La manière dont plusieurs signaux entrants sont transformés en un signal de sortie est déterminée par l'algorithme de calcul. Des valeurs efficaces sont fournies à chaque entrée neuronale, qui sont ensuite distribuées le long des connexions interneurones (synopsis). Les synapses ont un paramètre - le poids, grâce auquel les informations d'entrée changent lors du passage d'un neurone à un autre. La façon la plus simple d'imaginer le principe de fonctionnement des réseaux de neurones est de mélanger les couleurs. Les neurones bleus, verts et rouges ont des poids différents. L’information du neurone dont le poids est le plus élevé sera dominante dans le neurone suivant.

Le réseau neuronal lui-même est un système composé de nombreux neurones (processeurs). Individuellement, ces processeurs sont assez simples (beaucoup plus simples qu'un processeur d'ordinateur personnel), mais lorsqu'ils sont connectés à un système plus vaste, les neurones sont capables d'effectuer des tâches très complexes.

Selon le domaine d'application, un réseau de neurones peut être interprété de différentes manières. Par exemple, du point de vue de l'apprentissage automatique, un ANN est une méthode de reconnaissance de formes. D'un point de vue mathématique, il s'agit d'un problème multiparamétrique. Du point de vue de la cybernétique - un modèle de contrôle adaptatif de la robotique. Pour l’intelligence artificielle, l’ANN est un composant fondamental pour modéliser l’intelligence naturelle à l’aide d’algorithmes informatiques.

Le principal avantage des réseaux de neurones par rapport aux algorithmes informatiques conventionnels réside dans leur capacité à apprendre. Au sens général du terme, l'apprentissage consiste à trouver les coefficients de couplage corrects entre les neurones, ainsi qu'à résumer les données et à identifier les dépendances complexes entre les signaux d'entrée et de sortie. En fait, une formation réussie d'un réseau neuronal signifie que le système sera capable d'identifier le résultat correct sur la base de données qui ne figurent pas dans l'ensemble de formation.

Situation actuelle

Et aussi prometteuse que puisse être cette technologie, les ANN sont encore très loin des capacités du cerveau et de la pensée humains. Pourtant, les réseaux de neurones sont déjà utilisés dans de nombreux domaines de l’activité humaine. Jusqu'à présent, ils ne sont pas capables de prendre des décisions très intelligentes, mais ils sont capables de remplacer une personne là où elle était auparavant nécessaire. Parmi les nombreux domaines d'application d'ANN, on peut noter : la création de systèmes de processus de production auto-apprenants, de véhicules sans pilote, de systèmes de reconnaissance d'images, de systèmes de sécurité intelligents, de robotique, de systèmes de contrôle de la qualité, d'interfaces d'interaction vocale, de systèmes d'analyse et bien plus encore. Cette utilisation généralisée des réseaux de neurones est, entre autres, due à l'émergence de diverses méthodes permettant d'accélérer la formation ANN.

Aujourd'hui, le marché des réseaux de neurones est énorme : il se chiffre en milliards et en milliards de dollars. Comme le montre la pratique, la plupart des technologies de réseaux neuronaux dans le monde diffèrent peu les unes des autres. Cependant, l’utilisation de réseaux de neurones est une activité très coûteuse, que seules les grandes entreprises peuvent se permettre dans la plupart des cas. Le développement, la formation et les tests de réseaux neuronaux nécessitent une grande puissance de calcul, et il est évident que les grands acteurs du marché informatique en disposent en abondance. Parmi les principales entreprises à la pointe des développements dans ce domaine figurent la division Google DeepMind, la division Microsoft Research, IBM, Facebook et Baidu.

Bien sûr, tout cela est bien : les réseaux de neurones se développent, le marché se développe, mais jusqu'à présent le principal problème n'est pas résolu. L’humanité n’a pas réussi à créer une technologie approchant même les capacités du cerveau humain. Examinons les principales différences entre le cerveau humain et les réseaux de neurones artificiels.

Pourquoi les réseaux de neurones sont-ils encore loin du cerveau humain ?

La différence la plus importante, qui change radicalement le principe et l'efficacité du système, réside dans la transmission différente des signaux dans les réseaux de neurones artificiels et dans un réseau biologique de neurones. Le fait est que dans un ANN, les neurones transmettent des valeurs qui sont des valeurs réelles, c'est-à-dire des nombres. Dans le cerveau humain, les impulsions sont transmises avec une amplitude fixe et ces impulsions sont presque instantanées. Cela conduit à un certain nombre d’avantages du réseau de neurones humain.

Premièrement, les lignes de communication dans le cerveau sont beaucoup plus efficaces et économiques que celles du RNA. Deuxièmement, le circuit d'impulsions assure la facilité de mise en œuvre de la technologie : il suffit d'utiliser des circuits analogiques au lieu de mécanismes informatiques complexes. En fin de compte, les réseaux pulsés sont insensibles aux interférences audio. Les nombres réels sont sujets au bruit, ce qui augmente le risque d'erreurs.

Conclusion

Bien entendu, au cours de la dernière décennie, le développement des réseaux de neurones a connu un véritable essor. Cela est principalement dû au fait que le processus de formation ANN est devenu beaucoup plus rapide et plus simple. Les réseaux neuronaux dits « pré-entraînés » ont également commencé à être activement développés, ce qui peut accélérer considérablement le processus d'introduction de la technologie. Et s'il est trop tôt pour dire si les réseaux de neurones seront un jour capables de reproduire pleinement les capacités du cerveau humain, la probabilité que dans la prochaine décennie les ANN soient capables de remplacer les humains dans un quart des métiers existants se confirme de plus en plus. .

Pour ceux qui veulent en savoir plus

  • La grande guerre neuronale : ce que Google prépare réellement
  • Comment les ordinateurs cognitifs pourraient changer notre avenir

Aujourd'hui, un graphique est l'un des moyens les plus acceptables pour décrire les modèles créés dans un système d'apprentissage automatique. Ces graphiques informatiques sont composés de sommets de neurones reliés par des arêtes de synapse qui décrivent les connexions entre les sommets.

Contrairement à un processeur graphique central ou vectoriel scalaire, un IPU, un nouveau type de processeur conçu pour l'apprentissage automatique, permet de construire de tels graphiques. Un ordinateur conçu pour manipuler des graphiques est une machine idéale pour calculer des modèles de graphiques créés grâce à l’apprentissage automatique.

L’un des moyens les plus simples de décrire le processus de l’intelligence artificielle est de le visualiser. L'équipe de développement de Graphcore a créé une collection de ces images qui sont affichées sur l'UIP. Il est basé sur le logiciel Poplar, qui visualise le travail de l'intelligence artificielle. Les chercheurs de cette société ont également découvert pourquoi les réseaux profonds nécessitent autant de mémoire et quelles solutions existent pour résoudre le problème.

Poplar comprend un compilateur graphique conçu dès le départ pour traduire les opérations d'apprentissage automatique standard en code d'application IPU hautement optimisé. Il vous permet de rassembler ces graphiques en utilisant le même principe que la collecte des POPNN. La bibliothèque contient un ensemble de différents types de sommets pour les primitives généralisées.

Les graphiques sont le paradigme sur lequel reposent tous les logiciels. Dans Poplar, les graphiques vous permettent de définir un processus de calcul, dans lequel les sommets effectuent des opérations et les arêtes décrivent la relation entre eux. Par exemple, si vous souhaitez additionner deux nombres, vous pouvez définir un sommet avec deux entrées (les nombres que vous souhaitez ajouter), quelques calculs (une fonction pour additionner deux nombres) et une sortie (le résultat).

Généralement, les opérations avec les sommets sont beaucoup plus complexes que dans l'exemple décrit ci-dessus. Ils sont souvent définis par de petits programmes appelés codelets (noms de code). L'abstraction graphique est attrayante car elle ne fait aucune hypothèse sur la structure du calcul et décompose le calcul en composants que l'UIP peut utiliser pour fonctionner.

Poplar utilise cette abstraction simple pour créer de très grands graphiques représentés sous forme d'images. La génération logicielle du graphique nous permet de l'adapter aux calculs spécifiques nécessaires pour garantir l'utilisation la plus efficace des ressources de l'UIP.

Le compilateur traduit les opérations standard utilisées dans les systèmes d'apprentissage automatique en code d'application hautement optimisé pour l'UIP. Le compilateur de graphiques crée une image intermédiaire du graphique informatique, qui est déployée sur un ou plusieurs appareils IPU. Le compilateur peut afficher ce graphique de calcul, de sorte qu'une application écrite au niveau du cadre de réseau neuronal affiche une image du graphique de calcul qui s'exécute sur l'UIP.


Graphique du cycle complet de formation AlexNet dans les sens avant et arrière

Le compilateur graphique Poplar a transformé la description AlexNet en un graphe informatique de 18,7 millions de sommets et 115,8 millions d'arêtes. Le clustering clairement visible est le résultat d’une communication forte entre les processus de chaque couche du réseau, avec une communication plus facile entre les couches.

Un autre exemple est un simple réseau entièrement connecté formé sur MNIST, un simple ensemble de données de vision par ordinateur, une sorte de « Bonjour le monde » en apprentissage automatique. Un réseau simple pour explorer cet ensemble de données permet de comprendre les graphiques pilotés par les applications Poplar. En intégrant des bibliothèques de graphiques à des frameworks tels que TensorFlow, la société propose l'un des moyens les plus simples d'utiliser les IPU dans les applications d'apprentissage automatique.

Une fois le graphique construit à l’aide du compilateur, il doit être exécuté. Ceci est possible en utilisant le moteur graphique. L'exemple de ResNet-50 démontre son fonctionnement.


Graphique ResNet-50

L'architecture ResNet-50 permet la création de réseaux profonds à partir de partitions répétitives. Le processeur n'a qu'à définir ces sections une seule fois et à les rappeler. Par exemple, le cluster de niveau conv4 est exécuté six fois, mais mappé une seule fois sur le graphique. L'image montre également la variété de formes des couches convolutives, chacune possédant un graphique construit selon une forme naturelle de calcul.

Le moteur crée et gère l'exécution d'un modèle d'apprentissage automatique à l'aide d'un graphique généré par le compilateur. Une fois déployé, le moteur graphique surveille et répond aux IPU, ou appareils, utilisés par les applications.

L'image ResNet-50 montre l'intégralité du modèle. À ce niveau, il est difficile d'identifier les connexions entre les sommets individuels, il vaut donc la peine de regarder des images agrandies. Vous trouverez ci-dessous quelques exemples de sections au sein des couches de réseaux neuronaux.

Pourquoi les réseaux profonds ont-ils besoin d’autant de mémoire ?

Les grandes empreintes mémoire constituent l’un des plus grands défis des réseaux neuronaux profonds. Les chercheurs tentent de lutter contre la bande passante limitée des dispositifs DRAM, que les systèmes modernes doivent utiliser pour stocker un grand nombre de poids et d'activations dans un réseau neuronal profond.

Les architectures ont été conçues à l'aide de puces de processeur conçues pour le traitement séquentiel et l'optimisation de la DRAM pour la mémoire haute densité. L'interface entre ces deux appareils constitue un goulot d'étranglement qui introduit des limitations de débit et ajoute une surcharge importante en termes de consommation d'énergie.

Bien que nous n’ayons pas encore une compréhension complète du cerveau humain et de son fonctionnement, il est généralement admis qu’il n’existe pas de grande mémoire séparée. On pense que la fonction de la mémoire à long et à court terme dans le cerveau humain est ancrée dans la structure des neurones et des synapses. Même des organismes simples comme les vers, dotés d’une structure cérébrale neurale d’un peu plus de 300 neurones, ont une certaine fonction de mémoire.

Intégrer de la mémoire dans des processeurs conventionnels est un moyen de contourner le problème des goulots d'étranglement de la mémoire, en libérant une énorme bande passante tout en consommant beaucoup moins d'énergie. Cependant, la mémoire sur puce est coûteuse et n'est pas conçue pour les très grandes quantités de mémoire attachées aux CPU et aux GPU actuellement utilisés pour former et déployer des réseaux neuronaux profonds.

Il est donc utile d'examiner comment la mémoire est utilisée aujourd'hui dans les processeurs et les systèmes d'apprentissage profond basés sur GPU et de se demander : pourquoi ont-ils besoin de dispositifs de stockage de mémoire aussi volumineux alors que le cerveau humain fonctionne très bien sans eux ?

Les réseaux de neurones ont besoin de mémoire pour stocker les données d'entrée, les poids et les fonctions d'activation au fur et à mesure que l'entrée se propage à travers le réseau. En apprentissage, l'activation sur l'entrée doit être maintenue jusqu'à ce qu'elle puisse être utilisée pour calculer les erreurs dans les gradients de sortie.

Par exemple, un réseau ResNet à 50 couches possède environ 26 millions de paramètres de poids et calcule 16 millions d'activations directes. Si vous utilisez un float 32 bits pour stocker chaque poids et activation, cela nécessitera environ 168 Mo d'espace. En utilisant une valeur de précision inférieure pour stocker ces poids et activations, nous pourrions réduire de moitié, voire quadrupler ce besoin de stockage.

Un problème majeur de mémoire vient du fait que les GPU s’appuient sur des données représentées sous forme de vecteurs denses. Par conséquent, ils peuvent utiliser un thread d’instruction unique (SIMD) pour atteindre une densité de calcul élevée. Le processeur utilise des unités vectorielles similaires pour le calcul haute performance.

Les GPU ont une largeur de synapse de 1 024 bits, ils utilisent donc des données à virgule flottante de 32 bits, ils les divisent donc souvent en mini-lots parallèles de 32 échantillons pour créer des vecteurs de données de 1 024 bits. Cette approche du parallélisme vectoriel augmente de 32 fois le nombre d'activations et le besoin de stockage local d'une capacité supérieure à 2 Go.

Les GPU et autres machines conçues pour l'algèbre matricielle sont également soumis à une charge de mémoire due aux poids ou aux activations de réseaux neuronaux. Les GPU ne peuvent pas effectuer efficacement les petites convolutions utilisées dans les réseaux neuronaux profonds. Par conséquent, une transformation appelée « réduction » est utilisée pour convertir ces convolutions en multiplications matrice-matrice (GEMM), que les GPU peuvent gérer efficacement.

Une mémoire supplémentaire est également nécessaire pour stocker les données d'entrée, les valeurs temporaires et les instructions du programme. La mesure de l'utilisation de la mémoire lors de l'entraînement du ResNet-50 sur un GPU haut de gamme a montré qu'il nécessitait plus de 7,5 Go de DRAM locale.

Certains pourraient penser qu’une précision de calcul moindre pourrait réduire la quantité de mémoire requise, mais ce n’est pas le cas. En basculant les valeurs des données sur une demi-précision pour les poids et les activations, vous ne remplirez que la moitié de la largeur du vecteur SIMD, gaspillant ainsi la moitié des ressources de calcul disponibles. Pour compenser cela, lorsque vous passerez de la pleine précision à la demi-précision sur le GPU, vous devrez alors doubler la taille du mini-batch pour forcer suffisamment de parallélisme des données pour utiliser tous les calculs disponibles. Ainsi, passer à des pondérations et des activations de précision inférieures sur le GPU nécessite toujours plus de 7,5 Go de mémoire dynamique en libre accès.

Avec autant de données à stocker, il est tout simplement impossible de toutes les intégrer dans un GPU. Chaque couche de réseau neuronal convolutif doit stocker l'état de la DRAM externe, charger la couche réseau suivante, puis charger les données dans le système. En conséquence, l'interface de mémoire externe, déjà limitée en bande passante, souffre de la charge supplémentaire liée au rechargement constant des balances et au stockage et à la récupération des fonctions d'activation. Cela ralentit considérablement le temps d'entraînement et augmente considérablement la consommation d'énergie.

Il existe plusieurs façons de résoudre ce problème. Premièrement, des opérations telles que les fonctions d'activation peuvent être effectuées « sur place », permettant aux données d'entrée d'être réécrites directement dans la sortie. De cette façon, la mémoire existante peut être réutilisée. Deuxièmement, l'opportunité de réutilisation de la mémoire peut être obtenue en analysant la dépendance des données entre les opérations sur le réseau et l'allocation de la même mémoire aux opérations qui ne l'utilisent pas actuellement.

La deuxième approche est particulièrement efficace lorsque l'ensemble du réseau neuronal peut être analysé au moment de la compilation pour créer une mémoire allouée fixe, puisque la surcharge de gestion de la mémoire est réduite à presque zéro. Il s'est avéré que la combinaison de ces méthodes peut réduire de deux à trois fois l'utilisation de la mémoire d'un réseau neuronal.
Une troisième approche significative a été récemment découverte par l’équipe Baidu Deep Speech. Ils ont appliqué diverses techniques d'économie de mémoire pour réduire de 16 fois la consommation de mémoire des fonctions d'activation, leur permettant ainsi de former des réseaux comportant 100 couches. Auparavant, avec la même quantité de mémoire, ils pouvaient former des réseaux à neuf couches.

La combinaison de ressources de mémoire et de traitement dans un seul appareil présente un potentiel significatif pour améliorer les performances et l'efficacité des réseaux de neurones convolutifs, ainsi que d'autres formes d'apprentissage automatique. Des compromis peuvent être faits entre la mémoire et les ressources de calcul pour atteindre un équilibre entre les fonctionnalités et les performances du système.

Les réseaux de neurones et les modèles de connaissances dans d’autres méthodes d’apprentissage automatique peuvent être considérés comme des graphiques mathématiques. Il y a une énorme quantité de parallélisme concentrée dans ces graphiques. Un processeur parallèle conçu pour exploiter le parallélisme dans les graphiques ne repose pas sur le mini-batch et peut réduire considérablement la quantité de stockage local requise.

Les résultats des recherches actuelles ont montré que toutes ces méthodes peuvent améliorer considérablement les performances des réseaux de neurones. Les GPU et CPU modernes ont une mémoire intégrée très limitée, seulement quelques mégaoctets au total. Les nouvelles architectures de processeur spécialement conçues pour l'apprentissage automatique équilibrent la mémoire et le calcul sur puce, offrant des améliorations significatives en termes de performances et d'efficacité par rapport aux processeurs et GPU actuels.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :