Tom
Marx
>_

Introduction aux réseaux de neurones - Partie 1 : Théorie

Cet article vous permettera de comprendre comment un neurone artificiel fonctionne, et comment le machine learning permet de prédire des résultats en s'appuyant sur des données d'entrainement.

15 minutes

Introduction

L'intelligence artificielle est un sujet en vogue. Une des branches les plus populaire de l'IA, les réseaux de neurones, sont présentés comme un outil puissant permettant de résoudre des problèmes jusqu'alors réservés au cerveau humain. Nous verrons ici leur cas d'utilisation et leur fonctionnement. Cette première partie est centrée sur le fonctionnement théorique d'un seul neurone, qui constitue la base d'un réseau de neurones. Un neurone seul peut, nous le verrons, résoudre des problèmes simples. Après les explications théoriques je vous montrerai dans la partie 2 comment implémenter un neurone en Python, et nous résoudrons un premier problème grâce au machine learning.
Nous utiliserons principalement des additions et des multiplications, aucune notion de maths avancés ou d'informatique n'est requise ! Cet article se veut destiné aux débutants, certains détails seront simplifiés afin de rendre les explications les plus claires possible.

À quoi sert un réseau de neurones ?

Un réseau de neurones à un but précis : prédire un résultat à partir de valeurs données. Voici une liste d'exemple :

Dans tous ces cas, le réseau prend en entrée des données, et sort des nouvelles valeurs.

Mais comment le réseau peut-il "deviner" la valeur attendue ? C'est là qu'intervient l'aspect machine learning. Il faut entrainer le réseau avec des milliers voir des millions de cas déjà résolus selon la complexité du problème.
Reprenons l'exemple du spam : votre messagerie doit détecter si un mail reçu est un spam ou non. Il va constituer une base de données de mails spam signalés par les utilisateurs. Grâce à cette base de mails spam il peut entrainer son réseau de neurones à détecter de nouveaux cas inconnus. Un réseau de neurones crée une règle générale à partir de données existantes afin de pouvoir appliquer cette règle à de nouveaux cas.

Comment fonctionne un neurone ?

Nous rentrons maintenant dans la partie technique. Un neurone virtuel est une imitation très simplifiée d'un neurone biologique. Ce neurone prend en entrée une liste de valeurs. Il fait un calcul que nous détaillerons plus tard et retourne une valeur de sortie.
À chaque entrée correspond un poids. Le poids est un coefficient qui indique quelle est l'influence d'une entrée sur le résultat. Quelle valeur ces poids prennent t-ils ? Ils sont calculés grâce à l'entrainement du neurone. La seule fonction de l'entrainement est de trouver des poids qui donnent le résultat le plus correcte possible. Imaginez une boite avec des potars qui correspondent au poids. Le machine learning, ça consiste à tourner ces boutons dans tous les sens pour trouver une configuration qui donne le résultat le plus satisfaisant possible.
Prenons un exemple : notre neurone a pour but de prédire si un patient est malade ou non. Il renvoi 1 si le patient est malade, 0 si il est sain. Ses entrées sont :

Toutes ces entrées sont binaires, soit 1, soit 0. On entraine le neurone avec une base de données de milliers de patients malades et sains, pour lesquels on connaît les entrées et la sortie. On peut anticiper les valeurs que les poids vont prendre après l'entrainement :

Schéma du fonctionement d'un neurone

Voyons maintenant comment en connaissant les poids et les entrées, le neurone calcule une sortie. C'est relativement simple, cela ce fait en deux étapes :

Schéma du fonctionement d'un neurone

Résumons tous les composants d'un neurone artificiel :

Pour effectuer une prédiction, le neurone multiplie chaque entrée par son poid respectif, ajoute le bias lui aussi multiplié par son poid. Il additionne toutes ces valeurs, et passe la somme par une fonction d'activation.

L'apprentissage du neurone

Nous allons maintenant aborder une partie cruciale dans le fonctionnement d'un réseau de neurones : l'apprentissage. Le machine learning consiste à donner une grande quantité d'exemples issus d'un dataset, un large ensemble de données, afin de trouver les poids qui donne un résultat le plus juste possible. Autrement dit, il faut minimiser l'erreur d'un neurone. Pour chaque donnée d'entrainement, le neurone va ajuster ses poids pour se rapprocher du résultat attendu. Voici le procédé d'apprentissage :

On peut résumer ce procédé avec ce schéma :

Schéma machine learning

On voit ici que :

On en déduit qu'il faut un très grand nombre de répétitions afin de trouver les poids optimums. Il faut également un dataset qui offre beaucoup de combinaisons différentes.

Conclusion

Résumons ce que nous avons vu dans cette première partie :

Un neurone est composé :

Dans la partie 2, nous allons implémenter cette théorie en code, et résoudre notre premier problème.