🇫🇷Perceptron

Dans cet article, on va découvrir ensemble la base des réseaux de neurones artificiels, souvent appelée perceptron, ou plus simplement… neurone.

C’est quoi, un perceptron ?

Le perceptron est un réseau de neurones artificiels très simple : il ne contient qu’un seul neurone. À la base, il a été inventé pour imiter le neurone du cerveau. D’où le nom.

Dans sa forme la plus simple, un neurone biologique reçoit des signaux d’entrée (via les synapses), les traite, puis transmet une réponse. Le perceptron reproduit ce schéma : il reçoit une entrée, la transforme à l’aide d’une fonction mathématique, puis produit une sortie.

Plus précisément :

  • Les entrées sont des nombres.

  • Chaque entrée est pondérée, puis toutes les entrées pondérées sont additionnées avec un biais.

  • Le résultat est ensuite passé à une fonction d’activation.

  • Le résultat final, un nombre, est la sortie du perceptron.

Modélisation matématique d'un neurone ou perceptron : xix_i les entrées, aia_i les poids, ff une fonction linéaire, et ϕ\phi la fonction d'activation.

Activation, kézako ?

En biologie, les synapses ne transmettent pas toujours un signal. Il faut dépasser un seuil pour activer la transmission. Ce principe est reproduit dans les neurones artificiels via une fonction d’activation.

La fonction d’activation détermine dans quelles conditions une sortie est produite. Plusieurs fonctions existent dans la littérature, les plus connues étant : la fonction de Heaviside (fonction seuil), la fonction sigmoïde, la fonction ReLU, la fonction tanh... bref, il en a plusieurs.

Que faire du perceptron ?

Le perceptron est principalement utilisé pour résoudre des problèmes de classification binaire. Cela peut paraître abstrait, alors prenons un exemple concret.

Exemple : Classification de points en bleu ou rouge

Considérons un nuage de points dans le plan (voir image ci-dessous). L’objectif est de construire un modèle capable de déterminer si un point est bleu ou rouge.

Analyse et observation

Visuellement, on se rend vite compte qu’il suffit de tracer une ligne qui sépare les rouges des bleus. Selon quel côté de la ligne se trouve ton point, il sera bleu ou rouge.

On devine ici un fonctionnement de type perceptron :

  • La droite est définie par une fonction linéaire : ax+by+c=0

  • Le fait d’attribuer une couleur en fonction de la position par rapport à cette droite revient à utiliser une fonction d’activation.

    • Si ax+by+c≥0, on décide que le point est bleu.

    • Sinon, il est rouge.

Modélisation

  1. Chaque point est représenté par ses coordonnées : une entrée X=[x1,x2].

  2. La couleur du point est codée par un nombre :

    • 1 pour bleu,

    • 0 pour rouge.

  3. Le neurone est défini par : ([w1,w2],b,ϕ) où :

    • w1,w2 sont les poids,

    • b est le biais,

    • Ï• est la fonction d’activation (ici, la sigmoïde).

  4. La prédiction du neurone est notée ŷ.

Préparation des données

Nous disposons d’un ensemble de points, chacun associé à une couleur. Nous divisons ce jeu de données en trois ensembles :

  • Ensemble d’entraînement : utilisé pour apprendre à distinguer rouge et bleu.

  • Ensemble de validation : pour vérifier si le modèle généralise bien.

  • Ensemble de test : pour tester le modèle sur des données jamais vues.

Comment il apprend, ce neurone ?

Entraîner un neurone consiste à trouver les poids et biais permettant de faire de bonnes prédictions. On essaye de minimiser la différence entre la réponse attendue et celle trouvée

La méthode la plus répandue, c’est la descente de gradient.. La fonction d'écart sera la binary cross entropy function (ou log loss); celle-ci est adaptée pour de la classification binaire.

Le code complet est sur mon GitHubarrow-up-right.

Résultats et performance

On observe que le neurone agit comme une droite de séparation. la plupart des points sont bien classés, mais il y a toujours des erreurs : le modèle est trop simple.

Et si on ajoute un neurone ?

En ajoutant un deuxième neurone (2 neurones en sortie), on obtient quasiment les mêmes résultats. En termes d'explicabilité, on peut supposer que:

  • Le neurone 1 calcule la probabilité que le point soit bleu.

  • Le neurone 2 calcule celle qu’il soit rouge.

  • On prend la couleur correspondant à la probabilité la plus élevée.

Ex : p_1 > p_0, alors le point est bleu.

Dans le fond, ces deux probabilités sont liées (p1≈1−p2p_1 \approx 1-p_2 ) donc le modèle peut se ramener à un seul perceptron d'où la similarité des résultats.

Encore un autre neurone

Si on modifie la structure du perceptron, par exemple en ajoutant un neurone de sortie (2 neurones en entrée, 1 en sortie), les performances se dégradent lorsque l'on réutilise les mêmes paramètres. Le modèle ne correspond pas à notre problème. En générale, la structure du modèle adéquat à la résolution d'un problème s'obtient de façon empirique.

Remarques

Dans la résolution du problème, nous avons eu à effectuer plusieurs choix que je vais expliquer succinctement :

  • La modélisation du problème : parvenir à caractériser nos données en objets mathématiques.

  • Le choix de la fonction d’activation : chaque fonction d’activation est adaptée à une classe de problèmes.

  • Le choix de la fonction d'erreur.

  • La méthode de minimisation de la fonction d’erreur. Dans notre cas, nous avons utilisé la méthode de gradient classique.

  • La structure du modèle : nous l’avons évoquée brièvement mais le nombre de neurones, ainsi que la façon dont ceux-ci sont interconnectés, a un fort impact sur la résolution du problème. Nous aborderons ce point dans un prochain article sur les réseaux de neurones.

Pour finir

Cet article vous donne les bases pour mieux comprendre les réseaux de neurones. Le cas d’usage sur le perceptron se généralise facilement aux réseaux de neurones, avec quelques éléments supplémentaires à prendre en compte. Dans un prochain article, j’irai au-delà du perceptron pour parler des réseaux de neurones et des questions que l’on se pose lorsqu’il s’agit de les utiliser.

Last updated