Tout ce dont vous devez savoir sur le modèle du perceptron

Veritas Luminis
11 min readJun 7, 2023
Infographic representation of a neuron cell in our brain
Une neurone, l’unité équivalente du perceptron dans notre cerveau.

Les neurones constituent la base de notre système nerveux central. Ce sont les cellules qui communiquent entre elles et transmettent des informations dans tout le corps. Par leurs activités, ils créent une symphonie de pensées, de sentiments, de souvenirs et d’actions. Les neurones sont de minuscules étincelles de vie qui illuminent notre esprit et font ce que nous sommes. Ils apprennent constamment et s’adaptent à de nouvelles expériences, formant des connexions qui façonnent notre personnalité et nos compétences.

Cependant, l’avènement de l’intelligence artificielle ces dernières années a refaçonné notre compréhension des schèmes cognitifs. Si les neurones sont les travailleurs miraculeux de notre système nerveux , les perceptrons sont les puissants moteurs derrière les modèles de réseaux neuronaux modernes. Introduits pour la première fois par Frank Rosenblat en 1957, les perceptrons sont maintenant le bloc fondateur des IAs modernes les plus puissantes telles que Lc0, MuZero et ChatGPT. Ils forment des connexions intimes entre eux de manière à peu près similaire aux neurones de notre cerveau. Pour mieux comprendre les unités de base de l’intelligence artificielle, nous devons d’abord plonger dans le domaine mathématique des perceptrons.

Définition du perceptron

Selon l’office québécois de la langue française, le perceptron est un « modèle de neurone artificiel dans lequel les signaux reçus sont d’abord pondérés, puis additionnés et enfin transformés collectivement, à l’aide d’une formule mathématique, en un signal unique émis à la sortie. »

« Le perceptron a été conçu à l’origine comme un classificateur binaire permettant de déterminer si un élément appartient ou non à une classe d’objets. Il a servi de modèle pour la conception des réseaux de neurones artificiels qui ont suivi. » Le perceptron est notamment capable d’accomplir des tâches de classification et de régression.

Problème de classification à gauche et de régression à droite.

De nos jours, plusieurs perceptrons sont souvent utilisés ensemble pour former une couche plus large ou même pour former plusieurs couches distinctes dans le but de permettre au modèle d’apprendre un motif plus complexe. De plus, ces couches elles-mêmes peuvent être combinées avec d’autres types des couches de neurones tel que le CNN, le RCNN, et le LSTM pour accomplir une plus grande variété de tâches. Bref, le perceptron trouve encore sa place dans les modèles les plus complexes!

Terminologie

Avant d’étudier la structure du perceptron, il est important de comprendre quelques terminologies utilisées dans le domaine. Le suivant est une liste de proposée par l’Office québécois de la langue française. La suite de cet article utilisera ces termes pour désigner les actions et les composantes du perceptron:

Biais: Valeur numérique, ajoutée à la somme pondérée des signaux d’entrée d’un neurone artificiel ou soustraite de celle-ci, qui entre dans le calcul de la fonction d’activation.

Coefficient synaptique: Nombre qui, en multipliant les différentes valeurs des signaux reçus à l’entrée d’un neurone artificiel, sert à calculer la valeur du signal émis à la sortie.

Couche de neurone: Regroupement de neurones artificiels au sein d’un réseau.

Fonction d’activation: Fonction mathématique qui sert à calculer la valeur du signal émis à la sortie d’un neurone artificiel à partir de la somme pondérée des différentes valeurs des signaux à l’entrée.

Rétropropagation d’erreurs: Mécanisme par lequel les erreurs d’interprétation, calculées à la sortie d’une ou de plusieurs couches de neurones d’un réseau de neurones artificiels, produisent des signaux qui sont transmis vers les neurones qui ont contribué précédemment à créer des écarts, afin que des correctifs soient apportés en ajustant les coefficients synaptiques ou les biais responsables.

Analogie biologique

Structure d’une neurone à gauche et celle du perceptron à droite.

Un neurone biologique reçoit des stimulations principalement à travers ses dendrites connectés aux neurones adjacents. En moyenne, chaque neuronne possède 1 000 à 10 000 connections capables de lui transmettre de l’information sous forme d’influx électrique. Cet influx voyage ensuite dans le corps cellulaire où il fait augmenter le potentiel du neurone. Si une certaine limite est atteinte, le neurone décharge à son tour un influx nerveux à travers son axone pour stimuler d’autres neurones environnants.

Le perceptron représente un modèle simplifié du neurone biologique en imitant son mécanisme d’action à travers des formules mathématiques. Brièvement, le perceptron reçoit plusieurs stimulations entrantes qu’il multiplie au coefficient synaptique pour déterminer le poid (ou l’importance) de chaque stimulation avant de les additionner. Ensuite, ce signal est traité par la fonction d’activation, puis envoyé vers la sortie. Le mécanisme du calcul sera expliqué en détail dans la prochaine section.

Propagation avant

La propagation avant désigne le processus qui permet à un réseau de neurone « de penser ». Il s’agit d’un terme général dont l’utilisation n’est pas restreinte aux perceptrons, mais à tous les réseau de neurone. Durant cette étape, le perceptron évalue l’information entrante pour donner une réponse au problème, notamment à travers des calculs vectoriels et matriciels. Nous allons maintenant analyser en détail le calcul mathématique derrière la progation avant.

Tout d’abord, l’information entrante arrive au perceptron sous forme d’un vecteur. Le contenu de ce vecteur dépend de la tâche du perceptron. Pour l’instant, concentrons-nous uniquement sur l’aspect mathématique.

Vecteur de données entrantes

Ensuite, le perceptron évalue l’importance de chaque connection en multipliant chaque valeur entrante par un coefficient synaptique associé. Plus, le coefficient est grand, plus cette connection est importante. Le biais est ensuite ajouté à la valeur pondérée pour rendre le modèle plus flexible.

Ce calcul peut être exprimé plus compactement en utilisant le produit vectoriel:

Finalement, le perceptron applique la fonction d’activation, f, pour obtenir le résultat final. Notons toutefois que la fonction d’activation n’est pas obligatoire dans le contexte d’un seul perceptron, car il n’est pas possible d’obtenir une classification non-linéaire même avec une fonction d’activation.

En résumé, voici une seule formule qui résume la propagation avant du perceptron.

Fonctions de coût

Pour pouvoir évaluer la précision de la prédiction du perceptron dans un contexte précis, il est nécessaire de faire appel à une fonction d’erreur. En général, la fonction de coût est une fonction à valeur vectorielle qui prend deux vecteurs en argument, soit le vecteur prédiction et le vecteur théorie. À l’aide d’un calcul mathématique plus ou moins complexe, cette fonction produit ensuite un scalaire qui indique la précision du perceptron. Plus le nombre est petit, plus le perceptron est précis.

Pour optimiser la performance du modèle, il est essentiel de choisir le type de fonction qui satisfait à la tâche demandée. De plus, la valeur de la fonction choisie doit impérativement diminuer à mesure que le modèle progresse, car le but de l’entrainement consiste seulement à diminuer la valeur de la fonction objectif. Si cette diminution ne s’accompagne pas d’une meilleure prédiction, le perceptron ne s’améliorera pas. Nous allons maintenant voir deux fonctions objectifs particulièrement populaires en raison de leur efficacité et de leur grande efficacité.

Voici la fonction charnière quadratique (Squared Hinge en anglais). Elle donne une valeur minimale lorsque les deux valeurs de y s’accordent. La fonction peut être utilisée dans un contexte de classification binaire où la valeur de sortie se situe entre -1 et 1. Remarquons que l’erreur diminue à mesure que le vecteur prédiction s’approche de la valeur théorique de 1 ou de -1.

Graphiques de la fonction d’objectif SH dans l’intervalle de -2 à 2.
Graphiques de la fonction de coût SH dans l’intervalle de -2 à 2.

Pour les problèmes de régression, nous utilisons couramment la fonction erreur quadratique moyenne (Mean Squared Error ou MSE en anglais). Selon cette fonction, la valeur d’erreur obtenue diminue à mesure que la valeur prédite s’approche de la valeur théorique.

Cette fonction peut également être exprimée de la manière suivante en remplaçant la sommation par un produit vectorielle. Cette forme sera à privilégier lorsqu’on souhaite trouver le gradient de la fonction.

Graphiques de la fonction de coût MSE entre l’intervalle -1 à 1.

Bien entendu, il existe une multitude d’autres fonctions de coût qui permettent d’évaluer la précision d’un modèle de machine learning et d’optimiser ses performances. Le choix de la fonction objective appropriée dépendra du type de modèle, de la nature des données et de la tâche à accomplir. Il est important de bien comprendre les avantages et les inconvénients de chaque fonction objective afin de prendre une décision éclairée pour l’optimisation des performances du modèle.

Rétropropagation d’erreurs

Lorsque le perceptron est initialisé pour la première fois, un vecteur de coefficient synaptique quelconque ainsi qu‘une valeur du biais lui sont assignés aléatoirement (ou parfois, les valeurs sont assignés en suivant certaines règles d’initialisation). Il est très improbable que ces valeurs correspondent parfaitement aux données d’apprentissage. La rétropropagation de l’erreur vise alors à corriger petit à petit les paramètres internes du perceptron dans le but de rendre ses prédiction plus exactes. Dans cette article, nous étudierons l’algorithme de descente de gradient.

Algorithme de gradient (Principe)

L’algorithme de descente du gradient est une méthode d’optimisation fréquemment utilisée pour trouver le minimum de la fonction de coût dans un problème d’apprentissage automatique.

Essentiellement, cet algorithme consiste à calculer les gradients de la fonction de coût par rapport aux paramètres du modèle, puis de mettre à jour ces paramètres dans la direction opposée au gradient de la fonction de coût afin de minimiser la valeur de la fonction de coût. Souvenons-nous qu’une diminution de la valeur de la fonction de coût témoigne nécessairement d’une meilleure capacité de prédiction.

L’image ci-dessous indique la diminution d’une variable d’apprentissage suivant le gradient de la fonction de coût. À chaque étape, la valeur de la variable est diminuée d’une quantité proportionnelle à la pente de la fonction.

Image Source: Why neural networks don’t work and how to use them — The Aquila consortium (aquila-consortium.eu)

Formellement, pour un modèle avec des paramètres θ et une fonction de coût J(θ), l’algorithme de descente du gradient peut être décrit en trois étapes:

  1. Calculer le gradient de la fonction de coût par rapport à chacun des variables dans le modèle.
  2. Mettre à jour chacun des paramètres variables en soustrayant du paramètre d’apprentissage la valeur du gradient.
  3. Répéter les étapes 1 et 2 jusqu’à ce qu’un critère d’arrêt soit atteint. Souvent, l’apprentissage s’arrêter lorsque que la fonction coût diminue en dessous d’une valeur de tolérance.

Algorithme de gradient (Formules)

Pour appliquer l’algorithme de gradient dans le cas d’un perceptron, il sera nécessaire de remonter les étapes de la propagation avant au moyen de la dérivée en chaine afin de déterminer le gradient de la fonction de coût par rapport aux variables w et b. Ce gradient nous indiquera la direction dans laquelle il faut se déplacer pour minimiser la valeur de la fonction de coût. Le calcul du gradient correspond à la première étape dans l’algorithme de descente de gradient.

Les étapes de la rétroprogation de l’erreur sont identiques à la propagation avant.

La formule générale du gradient de la fonction du coût par rapport à la variable w est obtenue à l’aide de la dérivation en chaine:

Similairement, le gradient de la fonction du coût par rapport à la variable b est donnée par la formule suivante:

Finalement, il suffit de soustraire du paramète d’apprentissage la valeur gradient pour faire un pas de plus vers un modèle plus précis! Pour ce faire, il faut simplement appliquer la formule ci-contre. À chaque étape, elle doit être appliquée sur chaque paramètre du modèle pour trouver une nouvelle valeur qui permettra de minimiser les erreurs. Ceci correspond à la deuxième étape dans l’algorithme de descente de gradient.

Dans cette formule, alpha représente le taux d’apprentissage, un hyperparamètre de l’algorithme qui détermine la taille des pas de mise à jour des paramètres. ∇J(θ) représente le gradient de la fonction de coût.

Dans le cas de l’entrainement d’un perceptron, il faut l’appliquer en tout deux fois par étape, une fois pour le paramètre w et une fois pour le paramètre b. Évidemment, un entrainement efficace s’effectue en plusieurs étapes.

Exemple de rétropropagation en utilisant la fonction de coût MSE

Maintenant, nous allons mettre en pratique ce que nous avons appris dans les dernières sections en appliquant l’algorithme de rétropropagation d’erreur sur la fonction MSE (erreur quadratique moyenne). Tout d’abord, rappelons-nous de quelques fonctions et définitions:

Nous commencerons par trouver le gradient de la fonction par rapport à la variable w en utilisant la règle de la dérivée en chaine:

De la même manière, nous appliquerons la dérivée en chaine pour déterminer la gradient associé à la variable b:

À l’aide des gradients calculés, nous pouvons finalement appliquer la formule de la descente en gradient pour entrainer le modèle:

LR représente le taux d’apprentissage, c’est-à-dire le facteur qui détermine la grandeur des pas à faire à chaque étape d’apprentissage. Il est important de l’ajuster en fonction du type de perceptron et de la complexité des données. Avec, un taux trop grand, le réseau n’apprend pas. Avec un taux trop petit, l’apprentissage se fera très lentement. Les courbes suivantes démontrent le rythme d’apprentissage à des taux variés.

Voilà toute la théorie derrière un perceptron! Je vous encourage à essayer d’implémenter votre perceptron en code. Un modèle très simple est disponible à l’URL suivant: https://drive.google.com/drive/folders/1I2Xg4QuiJfWYtSnFg5Hu4lbiwUN0Wh18?usp=sharing

Pour aller plus loin…

  • Visualiser l’apprentissage d’un réseau de neuronne sur TensorFlow Playground: A Neural Network Playground (tensorflow.org)
  • Empiler plusieurs perceptrons dans une même couche. On parle alors d’une couche dense.
  • Ajouter plusieurs couches de manière à ce que l’information traverse successivement plusieurs perceptrons. On parle de perceptron multicouche.
  • Apprendre les différents optimizateurs (Adam, AdaGrad, SGD, etc.) qui facilitent et stabilisent le processus de la descente en gradient.

--

--