← Retourner à la liste des articles
Image blog
Auteur

Par Maxime Jumelle

CTO & Co-Founder

Publié le 27 janv. 2022

Catégorie Machine Learning

Réseaux de neurones : tout comprendre

Plus anciens qu'on ne le pense, les réseaux de neurones artificiels ont façonné les dernières années en matière de tâches de reconnaissance ou même de traitement de la donnée. En effet, leurs mécaniques s'inspirant directement du fonctionnement du neurone biologique en font un modèle puissant, mais néanmoins difficile à interpréter et à analyser. Pour autant, il reste un modèle de choix pour les Data Scientists lorsqu'ils travaillent sur des images ou du texte (NLP).

Dans cet article, nous allons détailler le fonctionnement des réseaux de neurones, leurs évolutions et les cas d'usage de nos jours.

Histoire des réseaux de neurones

Les réseaux de neurones sont un ensemble de modèles qui puisent leur inspiration du vivant, et plus précisément du cerveau tel que nous le rencontrons chez les êtres humains. Notre cerveau est un organe formidable, et il est simple de se rendre compte de sa complexité et des prouesses qui lui sont liées. En effet, robuste lors de l'apprentissage, tolérant aux fautes, flexible dans sa capacité d'apprentissage et d'adaptation, il est même capable de gérer l'information incomplète, comme lorsque l'on ne voit pas un virage en voiture, mais que l'on est capable de dessiner les informations qui le suivront.

Contrairement à ce que l'on pourrait penser, sa véritable force ne réside pas forcément dans sa capacité de calcul, puisque bien que très puissant, il est surpassé dans ce domaine par plusieurs supercalculateurs. Elle réside dans sa capacité à paralléliser les calculs et les opérations à un niveau non seulement inégalé, mais encore incompris : tous les neurones travaillent en quelque sorte main dans la main pour parvenir à une finalité sur une tâche donnée qui peut s'avérer extrêmement complexe.


À lire aussi : découvrez notre formation MLOps


Le premier neurone formel

Suivant l'idée du neurone mathématique imaginé en 1956, leur utilité fut remise en cause continuellement depuis les années 1980 et malgré les travaux de nombreux chercheurs, peu d'entre eux y voyaient un intérêt réel dans le développement de telles solutions.

C'est avec les travaux de trois chercheurs, considérés comme les pionniers et pères du Deep Learning (Machine Learning avec des réseaux de neurones), que leur utilité fût démontrée, chacun à travers la mise au point d'éléments-clés que nous étudions tous les jours.

Ayant travaillé ensemble, ou chacun sur des thématiques qui leur sont propres, ils ont reçu le Turing Award 2018 pour l'ensemble de leurs carrières ayant posés les fondations comme la prospective de l'Intelligence Artificielle moderne (rien que ça !). Chacun d'entre eux est d'ailleurs connu pour certaines découvertes :

  • Goeffrey Hinton (milieu) pour la conceptualisation moderne des réseaux de neurones ainsi que l'invention effective de la méthode permettant de les entraîner.
  • Yann LeCun (gauche) avec l'invention des réseaux de neurones convolutifs, l'amélioration importante du mécanisme inventé par Hinton.
  • Yoshua Bengio (droite) et ses travaux ayant façonné le traitement automatique du langage, la reconnaissance de caractères et la génération de données.

Mais avant de décrire ce qu'est un réseau de neurones, il faut déjà savoir ce qu'est un seul neurone, et comment il fonctionne.

Le perceptron

Le principe de la formalisation des unités de notre cerveau humain est apparu bien plus tôt qu'on ne le pense. En effet, les premiers travaux sur cette dernière date de 1943, puis en l'année charnière 1956 avec ce que l'on appelle aujourd'hui le perceptron. Un mot étrange qui cache en réalité un formalisme assez simple, pas si éloigné du modèle linéaire ...

La définition du neurone formel présent au sein du perceptron s'inspire directement du neurone biologique, comme une métaphore de ce dernier. Regardons de plus près le fonctionnement du neurone biologique.

Neurone biologique

De manière très simplifiée, un neurone biologique reçoit l'information par ses dendrites. Ces dernières vont propager l'information jusqu'au noyau. L'information est ensuité traitée et envoyée sous forme bioélectrique dans l'axone qui va lui même être connecté à d'autres neurones.

En 1957, F. Rosenblatt propose un modèle mathématique de neurone artificiel inspiré du neurone formel construit en 1943 par W. McCulloch et W. Pitts.

  • Les entrées (inputs) \(x_i\) (de 1 à \(p\)) jouent le rôle des dendrites et apportent un signal (une valeur continue).
  • Chaque entrée est multiplié par un poids (weight) \(w_i\), remplaçant les synapses du neurone biologique.
  • La somme de ces entrées, multipliées par leurs poids respectifs, est injectée dans le noyau et dont le résultat est calculé à l'aide de la fonction d'activation\(h\).

Pour être plus précis, la sortie \(h\) (output), envoyé biologiquement dans l'axone, se calcule comme une combinaison linéaire des poids et des entrées (plus un biais \(w_0\)).

$$y=h \left( w_0 + \sum_{i=1}^p w_i x_i \right)$$

Cette fonction d'activation \(h\) permet de prendre une décision. Historiquement, la fonction d'activation \(h\) imaginée par F. Rosenblatt était la fonction seuil.

  • Si la combinaison linéaire était supérieure ou égale à 0, alors la sortie \(y\) valait 1.
  • Dans le cas contraire, la sortie \(y\) valait 0.

Le schéma suivant illustre le parallèle entre les composantes du neurone biologique et celles du neurone formel.

Perceptron

Le modèle de ce perpetron, c'est qu'il ne sait faire que des séparations linéaires : il n'est pas capable de construire des courbes pour séparer des points dans l'espace. C'est pour cela que nous avons besoin de créer des couches de perceptrons.

Perceptron multi-couches

Une seule couche de perceptrons

Pourquoi avoir besoin de rajouter plusieurs couches ? Prenons un cas simple où les données ne sont pas linéairement séparables.

Si nous traçons une droite dans l'espoir de séparer les points oranges des points bleus, nous ne pourrons jamais réussir.

Maintenant, imaginons que l'on construit non pas un seul mais deux perceptrons, côtes-à-côtes, alors deux plans vont se former. Nous allons pouvoir décider de la couleur non pas en fonction de la position par rapport à une seule droite, mais par rapport à deux droites.

Si l'on augmente le nombre de perceptrons, on arrive rapidement à construire un polygone avec de plus en plus de côtés qui va alors englober les points bleus.

Plusieurs couches de perceptrons

Prenons un exemple encore plus difficile.


À lire aussi : découvrez notre formation MLOps


Si nous reprenons le cas des 8 perceptrons, nous ne pouvons plus construire un modèle qui sépare les deux couleurs.

L'idée consiste alors à créer non pas une seule mais plusieurs couches de perceptrons : cela forme alors un réseau de neurones que l'on appelle perceptron multi-couche (ou MLP pour Multi Layer Perceptron).

Nous pouvons voir que le modèle à 4 couches est bien plus efficace que ceux à 2 et 3 couches.

Dans un MLP, chaque sortie des neurones d'une couche est injecté en entrée de tous les neurones de la couche suivante.

Si la couche précédente possède 8 perceptrons, alors que perceptron de la couche suivante aura 8 entrées (une pour chaque sortie de la couche précédente).

En théorie, plus on rajoute de perceptrons et de couche, plus le modèle sera précis, mais en pratique, les temps de calculent explosent !

Architectures avancées

Il existe bien évidemment des architectures plus poussées de réseau de neurones que le MLP. Dresser le portrait de l'intégralité des architectures existantes serait présomptueux compte tenu du nombre très conséquent de publications, découvertes et innovations qui apparaissent constamment. Néanmoins, certains modèles sont prépondérants puisque utilisés comme fondements de nombreux autres.

Nous avons vu le réseau de neurones classique avec le MLP, mais sa structure le rend peu robuste aux changements opérants dans les images par exemple. En effet, une translation de l'objet que l'on cherche à identifier dans l'image n'est pas du tout pris en compte par le modèle classique, puisque tous les neurones de la première couche cachée sont connectés à tous les pixels d'une image fournie dans la couche d'entrée : si on déplace l'objet, les neurones autrefois utiles, laissent leur place à d'autres, donnant un modèle peu performant et dont la complexité explose (le nombre de connexions est énorme !).

Pour palier à cela, les réseaux convolutifs utilisent une opération de convolution qui vise à passer des filtres sur l'image pour détecter des éléments: la proximité spatiale du filtre, usant du fait que des pixels proches dépendent fortement les uns des autres, règle en partie le problème des translations. De plus, la taille des images réduit au fur et à mesure amenant une complexité moindre. Enfin, des couches de neurones comme vues auparavant s'occupent de la classification en fin de réseau.

Dans un autre cadre, le réseau de neurones classique ne sait pas correctement manipuler des séquences. En effet, puisque le nombre de neurones est fixé, il faudrait analyser des séquences de taille fixe, ce qui n'est pas le cas des textes que l'on rencontre par exemple dans la majorité des cas. Les réseaux de neurones récurrents permettent alors de les utiliser, grâce à l'utilisation d'états qui vont répéter les opérations dans le temps pour modéliser les dépendances entre éléments d'une séquence (par exemple, les mots d'une phrase). Plus précisément, on peut avoir des entrées et des sorties de tailles différentes, ce qui répond à notre problème initial.

Par exemple, le "many to one" peut correspondre à la classification d'une séquence de plusieurs mots (many) en un sentiment (one). Le "many to many" correspondrait à la traduction d'une phrase dans une autre langue. Le "one to many" peut être relié à la génération d'une description d'image donnée en entrée. Les possibilités sont nombreuses et presque sans limites. 😯

Apprendre les réseaux de neurones

Les réseaux de neurones sont des algorithmes indispensables pour des sujets liées à la Computer Vision ou au traitement du langage naturel. Un Data Scientist doit maîtriser les architectures de base telles que les réseaux convolutifs ou récurrents.

La formation Deep Learning de Blent permet de maîtriser les fondamentaux du Deep Learning ainsi que les principales architectures que l'on rencontre, avec des applications sur des projets concrets.

De plus, de nombreuses notions sur des techniques spécialisées sous couvertes par la formation, telles que la stabilité numérique ou encore la régularisation pour éviter le sur-apprentissage.

Articles similaires

Blog

20 sept. 2022

Machine Learning

Hugging Face est une startup française qui s'est fait connaître grâce à l'infrastructure NLP qu'ils ont développée. Aujourd'hui, elle est sur le point de révolutionner le domaine du Machine Learning et traitement automatique du langage naturel. Dans cet article, nous allons présenter Hugging Face et détailler les taches de base que cette librairie permet de réaliser. Nous allons également énumérer ses avantages et ses alternatifs.

Nada Belaidi

Équipe Blent

Data Scientist

Lire l'article

Blog

12 juil. 2022

Machine Learning

spaCy est une bibliothèque open-source pour le traitement avancé du langage naturel. Elle est conçue spécifiquement pour une utilisation en production et permet de construire des applications qui traitent et comprennent de grands volumes de texte.

Nada Belaidi

Équipe Blent

Data Scientist

Lire l'article

Blog

4 juil. 2022

Machine Learning

Un auto-encodeur est une structure de réseaux neuronaux profonds qui s'entraîne pour réduire la quantité de données nécessaires pour représenter une donnée d'entrée. Ils sont couramment utilisés en apprentissage automatique pour effectuer des tâches de compression de données, d'apprentissage de représentations et de détection de motifs.

Nada Belaidi

Équipe Blent

Data Scientist

Lire l'article