IA : c’est quoi exactement un neurone (informatique), comment ça marche

IA : c’est quoi exactement un neurone (informatique), comment ça marche

C’est un truc qui fait des calculs

13

IA : c’est quoi exactement un neurone (informatique), comment ça marche

Neurone… c’est un mot qui revient souvent quand on parle d’intelligence artificielle. Mais c’est quoi exactement un neurone artificiel ? Comment ça marche et à quoi ça sert ? On vous explique simplement, avec un petit détour dans les années 40 pour remonter à sa création.

Au cours des derniers mois, nous vous avons proposé un petit lexique des termes courants utilisés en intelligence artificielle. Le but : vous permettre de bien comprendre de quoi il en retourne et d’appréhender les changements majeurs que l’IA apporte actuellement.

AGI, modèles de fondation, prompt injection, empoisonnement, inférence, hallucination, paramètre, quantification, neurone… Tous ces mots ne devraient plus trop avoir de secret pour vous. Mais un élément mérite qu’on s’attarde davantage sur son fonctionnement : le neurone, qui est à la base des IA modernes.

Dessine-moi un neurone

Une fois n’est pas coutume, on va donner une présentation des plus simplistes du neurone, puis vous expliquer plus finement de quoi il en retourne. Un neurone, c’est simplement un outil mathématique qui réalise une somme pondérée de variables. Voilà, vous pouvez passer à autre chose… ou bien continuer à nous lire et en savoir bien plus.

On monte dans la DeLorean pour un retour dans le temps de 80 ans. On profite du voyage pour évacuer une question : quel rapport entre les neurones de nos cerveaux et ceux des ordinateurs ? Le mode de fonctionnement.

« Un neurone, ça capte de l’information par des dendrites. Ces informations vont arriver un peu de partout et être compilées dans le noyau de la cellule de votre neurone. Le noyau va ressortir un résultat qui est une information électrique dans votre cerveau. Il va être transmis à d’autres neurones par l’intermédiaire des synapses », explique Alexia Audevart, Google Developer Expert in Machine Learning, lors d’une conférence Devoxx en 2021.

Une précision sur la composition du cerveau humain par le CNRS : « il comprend environ 100 milliards de neurones connectés par des millions de kilomètres de « connecteurs » (axones) et de 10 000 à 100 000 milliards de « contacts » (synapses) ». Restons humble, étudions un seul neurone artificiel.

Le neurone artificiel commence sa vie dans les années 40

Sur le principe, le neurone artificiel va lui aussi récupérer des informations, les « tripatouiller » pour en sortir un résultat, puis le passer à d’autres neurones. Les ressemblances entre neurones artificiels et réels s’arrêtent là.

C’est dans les années 40 que commence l’histoire des neurones artificiels : « il y a des mathématiciens qui créaient des neurones artificiels avec un vecteur d’entrée d’informations. Ces informations sont pondérées […], on leur donne plus ou moins d’importance. Ça nous donne une somme, qui passe par une fonction d’activation », ajoute Alexia Audevart. Oui, un neurone, c'est un peu une calculatrice qui fait le même genre d’opérations à longueur de journée.

Le graphique ci-dessous retrace les grandes lignes de la découverte des neurones artificiels et de l’avancée de la recherche sur l’IA et les réseaux de neurones. Il est tiré de « La revanche des neurones. L’invention des machines inductives et la controverse de l’intelligence artificielle » de Dominique Cardon, Jean-Philippe Cointet et Antoine Mazières. Nous n’allons pas détailler l’ensemble du graphique, mais nous attarder sur quelques points. Il est dans tous les cas intéressants pour avoir une vue globale.

Évolution de l’influence académique des approches connexionniste et symbolique
La revanche des neurones. Dominique Cardon, Jean-Philippe Cointet, Antoine Mazières

Détour par le perceptron et son neurone

Dans une vidéo, sur l’introduction au deep learning, les chercheurs Bertrand Cabot et Jean-Luc Parouty rappellent que c’est en 1957/1958 que Franck Rosenblatt a conçu « une première machine d’intelligence artificielle capable de classer des choses » : le perceptron.

« C’était un classifieur avec un seul neurone, mais qui fonctionnait. 1958 a été une année très importante, c’était la première fois qu’on avait une machine capable de reproduire un raisonnement, modeste certes mais qui fonctionnait », expliquent les scientifiques. Une manière de rappeler que le neurone n’est pas nouveau, loin de là.

Ensuite, on connait l’histoire avec le premier hiver de l’intelligence artificielle dans les années 70. De nouvelles recherches sont arrivées dans la fin des années 80, notamment avec les réseaux de neurones (avec des couches de neurones) et l’augmentation de la puissance de calcul en informatique.

Un neurone, c’est une addition et des multiplications

Pour en revenir à notre neurone, c’est donc en quelque sorte une fonction qui prend des valeurs en entrées et renvoie une sortie. Plusieurs neurones peuvent être « branchés » en parallèle sur les entrées, on parle alors de couche. Les neurones d’une couche ont tous les mêmes entrées, mais chacun avec ses propres coefficients.

Un réseau de neurones, ce sont des couches de neurones qui s’enchainent les unes aux autres. Les sorties d’une couche sont les entrées de la couche suivante (on n’est pas obligé d’avoir le même nombre de neurones dans chaque couche), une opération que l’on peut répéter autant que nécessaire.

Réseau de neurones formels de type Perceptron Multicouche Par HRcommons- Wikipédia

Avec un neurone, on peut avoir des centaines/milliers d’entrées, chacune avec donc son propre coefficient. Tous les neurones reçoivent les mêmes données en entrées, mais tous ont des coefficients différents. Imaginez un réseau de 50 neurones avec 150 données en entrée, cela nous donne 7 500 paramètres.

Le travail d’entrainement d’une IA consiste justement à trouver les meilleurs coefficients possibles pour chaque neurone. On peut également ajouter un biais, qui est une valeur ne dépendant d’aucune variable. D’une certaine manière, cela permet de « décaler » la fonction. De 7 500 paramètres dans notre exemple, on arrive donc à 7 550 paramètres à ajuster.

Un peu de math pour la route

Appelons le biais a0. On a ensuite les données en entrée x1, x2,…, xn, leur coefficient a1, a2 jusqu’à … an. Un neurone fait simplement un calcul :

f(x1, x2,…, xn)= a0+ a1x1+ a2x2+…+ anxn. 

Pour ceux que les formules rebutent, on additionne simplement les valeurs en entrée pondérées de leur coefficient respectif et on ajoute le biais. De 1958 à nos jours, le principe du neurone reste le même.

Structure d'un neurone artificiel ou neurone formel
Structure d'un neurone artificiel ou neurone formel - Crédits : Réseau de neurones artificiels - Wikipédia

La fonction d’activation juste avant la sortie

Une fois le calcul terminé, le résultat passe à la moulinette d’une fonction d’activation. Elle ne dépend plus directement des entrées ou des coefficients, mais d’une nouvelle opération. Il en existe plusieurs, trop pour toutes les détailler.

Commençons par l’une des plus simples : la marche de Heaviside. Si le résultat du calcul du neurone est négatif, alors la fonction d’activation renvoie 0. Dans le cas contraire, elle renvoie 1. La sortie du neurone vaut donc 0 ou 1 en fonction des valeurs en entrées et des poids associés. Simple, mais sans granularité.

Signalons aussi ReLU (Rectified Linear Unit ou Unité Linéaire Rectifiée) qui retourne 0 si le résultat est négatif et le résultat sans modification dans le cas contraire. Pour ceux qui aiment les formules, c’est donc max (0,x) ou x est le résultat de la fonction du neurone.

Nous avons également sigmoïde et tangente hyperbolique que l’on pourrait comparer à la marche de Heaviside, mais avec une marche plus douce sous la forme d’une courbe. Suivant les besoins, on utilise une fonction d’activation ou un autre.

Wikipédia propose une liste de fonctions d’activation, avec les graphiques, les équations et d’autres informations associées. On se rend assez facilement compte de leur fonctionnement :

Dans un prochain article, nous vous expliquerons comment programmer et entrainer une intelligence artificielle capable de reconnaitre des chiffres avec seulement une dizaine de lignes de code.

Commentaires (13)


Hâte de lire la suite !
Merci pour cette synthèse
Super intéressant le débat symbolique vs connexionniste. Merci pur l'article
Merci beaucoup !
C'est fou parce que ca me fait penser a 2 trucs :

- Les GPU ont beaucoup de petits coeurs pour faire du traitement graphique, et ca tombe bien car on a besoin de beaucoup de petits processeurs pour paralléliser efficacement les fonctions d'activation et de combinaisons
- les fonctions mathématique qu'on vois sur le dernier schéma, ça ressemble également des fonctions utilisés dans certains traitement graphique (dans Photoshop le mode seuils, ou les différents rendu Sombre, Multiplier, Overlay, Brulure, Diff, Exclusions...)

Merci beaucoup pour cette série d'articles !!
Très intéressant, merci !
Mathématiquement (et informatiquement), il existe une opération qui s'appelle le produit matriciel. Ce produit permet de prendre en entrée la sortie de tous les neurones de la couche précédentes (un vecteur de taille n) et le poids de tous les neurones de la couche en cours (une matrice de taille (m, n)) et ressort un vecteur de taille m. Ce dernier est le résultat pour chacun des m neurones de la somme pondérée. Cette opération est tellement centrale dans les réseaux de neurones que NVidia a décidé de faire un cœur dédié rien qu'à ça dans ses cartes : les tensor core et ça prend une certaine surface sur ses cartes (depuis les RTX pour les cartes grand public).

Faire des produits matriciels à la chaine ne sert à rien, car il est possible de résumer cette suite d'opération en une seule, exactement comme faire des multiplications les unes à la suite des autres, il est possible de résumer ceci en une seule opération. Il faut donc ajouter une opération non linéaire entre deux opérations linéaires.C'est le rôle de la fameuse fonction d'activation.

Il est intéressant de voir ça comme une suite de transformations géométriques d'un espace de n dimension vers un espace à m dimension. Un produit matriciel répond à certaines règles (les points restent alignés, les proportions des segments restent les mêmes, le zéro reste en zéro). L'opération non linéaire permet de casser ces règles et de déformer l'espace. Au final, j'avais bien aimé la représentation des réseaux de neurone comme quelqu'un qui prend une feuille avec des points (les données) dessus et qui plie cette feuille dans tous les sens pour faire en sorte que les points s'organisent bien.
J’ai peut-être manqué un épisode mais je suis intéressé par cette présentation, où peut on la trouver ?

rm

J’ai peut-être manqué un épisode mais je suis intéressé par cette présentation, où peut on la trouver ?
Dans les entrailles pas très saines de mes méninges malheureusement.

Des quelques introductions que j'ai lu, celle que l'on retrouve dans le livre "Deep Learning With Python" par François Chollet est surement l'un des plus simples et pourtant précises. Après, le mec, il est aussi auteur de la bibliothèque "Keras", ce qui laisse à penser qu'il a les idées claires dans le domaine.

Il est intéressant de signaler que l'on peut voir les réseaux de neurones selon 3 angles différents :
- l'angle biologique, celui qui voit des neurones qui sont organisés en couche
- L'angle arithmétique, qui voit que des opérations mathématiques, mais derrière ouvre la voie vers le 3ième angle et aussi vers les études les plus poussées.
- L'angle géométrique. Celui-là, je l'aime bien, car on arrive, sur des MLP (multi layer perceptron, et dans une moindre mesure les CNN (convolutional neural network) et les RNN (recursive neural network), à visualiser les transformations successives des données.

Souvent, on présente les réseaux de neurones par l'angle biologique, mais je trouve que c'est celui qui explique le moins bien ce qui se passe réellement.
Whoa, pleins de choses dites, mais un poil rapidement. Je vais donner des exemples pour ceux qui, comme moi, les préfèrent pour comprendre des concepts.

Déjà, le perceptron. Son origine, et ce qu'il arrive à "imiter", ce sont les insectes, avec une intelligence limitée, basé uniquement sur la perception (d'où son nom). Par exemple, vous avez une voiture jouet électrique. Vous lui mettre un détecteur de présence à l'arrière, que vous relier au moteur. Quand une main (ou quoi que ce soit) s'approche, le moteur se déclenche, et la voiture avance pour "fuir". Il ne s'agit pas d'intelligence en tant que tel, mais ça imite parfaitement un insecte qui fuit dès que quelque chose s'approche de lui. Et il n'y a qu'un neurone : l'entrée (la distance à l'objet 'x') est pondéré (du genre 'ax+b' par exemple, pour a,b,x ∈ ℝ), et et émet une sortie binaire, déclenchant le moteur ou non. Ca peut également contrôler le moteur analogiquement : plus quelque chose est proche, plus le moteur va vite, simulant une fuite lente quand on est loin et une fuite rapide quand on est proche.
De la même manière, vous pouvez mettre deux détecteur de présence, un a l'arrière droite l'autre à l'arrière gauche, déclenchant le moteur de la roue de son côté, pour ajouter une rotation en plus de la fuite. Si on rajoute deux détecteur de lumière à l'avant, branchés sur les roues opposées (détecteur avant gauche sur moteur avant droit) "l'insecte" va simuler une attirance vers la lumière.
Ainsi, avec quelques capteurs et quelques neurones "directs", on pourrait simuler presque parfaitement le fonctionnement d'un insecte.
(ces voitures s'appellent des véhicules de Braitenberg, voir pages 36 à 41 de ce PDF pour des illustrations de ce que je décris http://cqcb.mm.free.fr/cours/M2S1/ASI/cours1b_2007.pdf)

Les réseaux de neurones, c'est la même chose, mais multiplié par beaucoup. Notre cerveau fonctionne de la même façon : chaque neurone reçoit en entrée des données pondérés, les additionne, et si ça dépasse un seuil spécifique au neurone, transmet l'information au neurone suivant.
Ca a l'air simple comme ça, mais c'est vraiment comme ça que fonctionne notre cerveau, et les réseaux de neurones informatiques.
Mais le plus important, c'est la remontée du gradient : quand au final, le résultat donné par le réseau est faux, on baisse la pondération de tous les neurones ayant contribué à ce résultat. Quand le résultat est bon, on augmente tous les poids qui ont contribué au résultat. Et on recommence le même calcul. Encore et encore et encore. Puis on change légèrement une variable d'entrée, et on réessaye jusqu'à ce que ça fonctionne à nouveau, et on revient à la première pour vérifier que ça fonctionne encore, et on recommence, encore et encore. C'est cette partie qui est désignée comme l'apprentissage d'un réseau de neurones, faussement appelé IA.
Pour donner un exemple concret. Imaginez que vous êtes dans le désert, et une course automobile va avoir lieu. Il y a trois lieux de départ, un pour une voiture, un pour un camion, un pour une moto. Et une seule arrivé, avec des routes qui se chevauchent. Vous voulez tricher, et vous assurer que les véhicules arrivent dans l'ordre que vous souhaitez. Pour cela vous aller tout d'abord faire une course, voir quel est l'ordre d'arrivé. Suivant cela, vous aller peut-être bouger une dune, adoucir une pente, bref, modifier légèrement le terrain. Vous allez relancer une course, et voir ce qui a changé par rapport à la précédente, et modifier à nouveau le terrain. Encore et encore et encore. Jusqu'à ce que le résultat souhaité soit atteint.
C'est ça, l'apprentissage d'un réseau de neurone : c'est extrêmement complexe et surtout demande énormément de calculs, parce qu'il faut utiliser des millions de fois le réseau de neurone à chaque phase de l'entraînement. Et c'est aussi une boite noire : personne ne sait pourquoi une dune est à un endroit plutôt qu'à un autre. C'est aussi extrêmement fragile : remplacer la moto par un quad par exemple invaliderait totalement le processus d'apprentissage, et rendrait tout ces efforts inutiles.
Bref, un réseau de neurones peut faire beaucoup de choses, mais c'est pas une panacée, et il faut savoir l'utiliser avec discernement. Par exemple, dans le cas de la course dans le désert, il aurait été plus efficace et moins cher de corrompre les pilotes que d'essayer d'arranger des dunes ;)
(pour ceux qui veulent en savoir plus, je recommande la lecture de ce PDF http://cqcb.mm.free.fr/cours/M2S1/IA/livre_touzet.pdf)

Je suis ouvert à toutes les questions que vous pourriez avoir sur l'IA.

(note : ce post est libre de droit, excepté les PDFs liés)
Cela devient moins nébuleux, merci ! <3
Je suis pas super d'accord avec la slide sur l'histoire du neurone. La sortie d'un neurone ce n'est pas plutôt les synapses ?
L'axone ne sert qu'à transmettre l'information électrique, mais c'est à la synapse que ce fait la conversion électrique chimique.

Où alors j'ai manqué quelque chose...
Il y a cette vidéo de Vsauce qui illustre bien je trouve le concept de neurone et l'assemblage pour faire quelque chose. https://youtu.be/rA5qnZUXcqo?feature=shared
Bon article. Elektor a fait une petite série d'article là-dessus, avec au final un article très didactique sur comment entraîner et faire tourner un réseau de neurones sur un arduino afin de déterminer si une couleur est chaude ou froide (en 2021).
Fermer