• 8 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 25/05/2021

Découvrez le neurone formel

Dans ce chapitre, nous allons découvrir les origines du neurone formel et apprendre à l'utiliser et l'entraîner.  $\(\newcommand{\abbva}{\texttt{v.a.}} \newcommand{\abbea}{\texttt{e.a.}} \newcommand{\abbddp}{\texttt{d.d.p.}} \newcommand{\vaX}{\mathrm{X}} \newcommand{\vaY}{\mathrm{Y}} \newcommand{\msR}{\mathbb{R}} \newcommand{\sH}{\mathcal{H}} \newcommand{\sV}{\mathcal{V}} \newcommand{\sW}{\mathcal{W}} \newcommand{\sX}{\mathcal{X}} \newcommand{\sY}{\mathcal{Y}} \newcommand{\sZ}{\mathcal{Z}} \newcommand{\va}{\mathbf{a}} \newcommand{\vb}{\mathbf{b}} \newcommand{\ve}{\mathbf{e}} \newcommand{\vf}{\mathbf{f}} \newcommand{\vg}{\mathbf{g}} \newcommand{\vh}{\mathbf{h}} \newcommand{\vm}{\mathbf{m}} \newcommand{\vq}{\mathbf{q}} \newcommand{\vr}{\mathbf{r}} \newcommand{\vu}{\mathbf{u}} \newcommand{\vv}{\mathbf{v}} \newcommand{\vw}{\mathbf{w}} \newcommand{\vx}{\mathbf{x}} \newcommand{\vy}{\mathbf{y}} \newcommand{\vz}{\mathbf{z}} \newcommand{\valpha}{\boldsymbol{\alpha}} \newcommand{\vze}{{\Pi}} \newcommand{\mA}{\mathbf{A}} \newcommand{\mB}{\mathbf{B}} \newcommand{\mC}{\mathbf{C}} \newcommand{\mF}{\mathbf{F}} \newcommand{\mG}{\mathbf{G}} \newcommand{\mH}{\mathbf{H}} \newcommand{\mQ}{\mathbf{Q}} \newcommand{\mR}{\mathbf{R}} \newcommand{\mP}{\mathbf{P}} \newcommand{\mS}{\mathbf{S}} \newcommand{\mK}{\mathbf{K}} \newcommand{\norml}{\mathcal{N}} \newcommand{\normc}{\boldsymbol{\mu}} \newcommand{\norms}{\boldsymbol{\Sigma}} \newcommand{\normf}{f_{\mathcal{N}}} \newcommand{\dyncolor}[1]{ {\color{magenta!50!black} #1 }} \newcommand{\obscolor}[1]{ {\color{yellow!50!black} #1 } } \newcommand{\priorcolor}[1]{ {\color{blue!50!black} #1 } } \DeclareMathOperator*{\argmax}{arg\,max} \DeclareMathOperator*{\mmax}{max} \DeclareMathOperator*{\argmin}{arg\,min} \DeclareMathOperator*{\mmin}{min} \DeclareMathOperator*{\msup}{sup} \DeclareMathOperator*{\minf}{inf} \)$

Le neurone biologique

Les réseaux de neurones artificiels ou RNN sont des modèles mathématiques inspirés de la biologie.  La brique de base de ces réseaux, le neurone artificiel, était issu au départ d'une volonté de modélisation du fonctionnement d'un neurone biologique. Regardons donc comment fonctionne un neurone in vivo.

Source: https://commons.wikimedia.org/wiki/File:Complete_neuron_cell_diagram_fr.svg   This work has been released into the public domain by its author, LadyofHats. This applies worldwide. In some countries this may not be legally possible; if so: LadyofHa
Un neurone biologique [domaine public - source : https://commons.wikimedia.org/wiki/File:Complete_neuron_cell_diagram_fr.svg]

Schématiquement, on peut décomposer le neurone en 3 grandes entités :

  • un corps cellulaire, appelé péricaryon ;

  • un ensemble de dendrites (de l'ordre de 7 000) ;

  • un axone.

Lorsque l'excitation du corps cellulaire dépasse un certain seuil, un afflux nerveux est émis le long de l'axone de façon centrifuge, c'est-à-dire du corps cellulaire à l'extrémité de l'axone. La quantification de l'excitation se fait par modulation de fréquence. Plus le neurone est excité, plus rapprochées sont les impulsions dans l'axone.

L'extrémité de l'axone peut être en contact avec une dendrite d'un autre neurone. La zone de contact est appelée synapse. Elle permet la transmission de l'information d'un neurone à un autre.

Un réseau est ainsi formé.

Le neurone formel

Le perceptron, encore appelé neurone artificiel ou neurone formel, cherche à reproduire le fonctionnement d'un neurone biologique. Il existe différents  niveaux d'abstraction, suivant la précision de la modélisation voulue.

Dans notre cas, nous n'allons pas chercher à reproduire exactement et exhaustivement tous les processus biologiques en œuvre dans un neurone biologique. Il s'agit d'une version simplifiée.

Un neurone formel
Un neurone formel

 Nous allons considérer les entités suivantes :

  • des entrées, notées $\(\vx\)$ sous formes de vecteurs, représentant les dendrites ;

  • une sortie, notée $\(y\)$, représentant l'axone ;

  • des paramètres, notés $\(\vw\)$ et $\(b\)$ , influençant le fonctionnement du neurone.

Équation d'un neurone formel :
  $\(\hat{\vy}=f(\langle\vw,\vx\rangle+b)\)$

Cette équation dit comment la sortie est calculée. Chaque entrée est multipliée par un poids, un coefficient $\( \vw\)$. Toutes les entrées sont alors sommées et additionnées à un biais $\(b\)$ . Le résultat de la somme passe à travers une fonction de transfert $\(f\)$ (le plus souvent non linéaire). Cette fonction produit alors la sortie voulue.

On le voit, plus les entrées sont grandes en valeur absolue, plus la somme peut être grande en valeur absolue. Nous sommes donc en modulation d'amplitude (et non plus de fréquence, comme dans un neurone biologique).

Exemple sur une séparation linéaire

Regardons ce qu'il se passe pour un exemple simple.

Points exemples
Points exemples

 

Nous cherchons à classer ces points en deux camps.

Voici les paramètres d'un neurone adapté à ce problème :

Pour $\(\vw\)$

0.985

2.186

Pour $\(b\)$

-0.522

On va appliquer l'équation du neurone sur quelques exemples. Les deux premières colonnes du tableau suivant montrent les coordonnées de l'exemple, la dernière colonne montre le résultat de l'application de l'équation du neurone.

 $\(\vx_0\)$

 $\(\vx_1\)$

 $\(\hat{y}\)$

 0.896

 1.410

 3.445

 -1.509

 -1.438

 -5.155

 1.443

 1.333

 3.816

 -1.895

 -0.613

 -3.731

 -2.048

 -2.420

 -7.833

Si on trace la droite qui sépare les exemples avec un résultat positif et avec un résultat négatif, on obtient la figure suivante :

Séparateur linéaire
Séparateur linéaire

Nous constatons que le neurone a réussi à séparer les exemples en deux camps.

Mais comment trouver les bons paramètres pour être capable de faire cela ?

Cette étape s'appelle l'apprentissage. Nous allons voir comment cela fonctionne pour un neurone simple.

Apprentissage par descente de gradient

L'apprentissage d'un neurone se fait par optimisation d'une fonction de perte. C'est-à-dire que l'on va chercher les paramètres $\(\vw\)$ et $\(b\)$ , qui minimisent la fonction de perte. Dans le cas de la classification, on va utiliser la log-vraisemblance négative.

$$L(\hat{y},y)=-\left(y.log(\hat{y})+(1-y).log(1-\hat{y})\right)$$

Quand tout est dérivable, on peut utiliser la descente de gradient.

À chaque étape, les paramètres sont déplacés de la manière suivante :

$$\frac{\partial L}{\partial \vw_{i}}= \frac{\partial L}{\partial \vy} f' (\langle\mathbf{w},\mathbf{x}\rangle+b) \vx_i\\$$

Voici comment vont évoluer les paramètres pour l'exemple précédent.

Évolution de la fonction de décision à chaque étape de la descente
Évolution de la fonction de décision à chaque étape de la descente

La zone cyan représente la partie négative, la zone magenta la partie positive de la fonction de décision.

Allez plus loin

Article sur le Perceptron.

La Plus Belle Histoire de l'intelligence, Des origines aux neurones artificiels : vers une nouvelle étape de l'évolution. Stanislas DEHAENE, Yann LE CUN, Jacques GIRARDON. Collection : La Plus Belle Histoire. Date de parution : 18/10/2018 chez Robert Laffont.

En résumé

Dans ce chapitre, nous avons vu comment un neurone formel ou  neurone artificiel est inspiré d'un neurone biologique. Puis à partir d'un modèle dérivable et d'un ensemble de données linéairement séparables, nous avons vu comment apprendre les paramètres d'un neurone par descente de gradient.

Exemple de certificat de réussite
Exemple de certificat de réussite