Thématiques principales

mercredi 11 juillet 2018

IA : Neuromimétique, le neurone

Aujourd'hui un article sur l'approche neuromimétique et plus particulièrement, son élément fondamental qu'est le neurone. L'objectif de l'article est d'introduire de façon simple les éléments constitutifs du neurone afin de mieux appréhender cet outil et également introduire les articles qui viendront sur les réseaux de neurones en générales.

Histoire

Le neurone est avant toute chose qu'un outil mathématique datant du début du siècle dernier, formalisé par McCULLOCH et PITTS. Basé sur ce modèle, de nombreux types de neurones ont été proposé et de nombreuses architectures conçues. Il serait trop long de traiter de tous ces points ici dans cet article mais nous reviendrons sur chacun d'entre eux. En attendant les détails voici les points marquant de l'histoire des réseaux neuronaux:

  • 1940 : Alan TURING : Machine de Turing
  • 1943 : Warren McCULLOCH & Walter PITTS Modèle formel de neurone.
  • 1948 : Non Neuman : Les réseaux d’automates
  • 1949 : Donald HEBB : Mémoire associative, premières règles d'apprentissage.
  • 1960 : Franck ROSENBLATT et Bernard WIDROW, Perceptron et Adaline.
  • 1969 : Marvin MINSKY Mise en évidence des limitations du perception
  • 1980 : Stephen GROSSBERG et Teuvo KOHONEN Auto-organisation des réseaux et adaptation
  • 1982 : John HOPFIELD : Approche Statistique.
  • 1986 : Paul Smolenski : Machine de BOLTZMANN 
  • 1997: Deep Blue
  • 2011 : Watson
  • 2014 : LeCun Deep Learning 
  • 2015 : Alpha Go
  • 2018 : Alexa

En biologie

La définition du neurone part de l'observation et de l'imitation du vivant [1]. Pour rappel, un neurone biologique est un cellule particulière dans le vivant puisqu'il participe au traitement de l'information et à la réponse biologique. (Bien sur bien d'autres mécanismes existent et peuvent être considérer comme participant au traitement de l'information comme le codage génétique ou la réponse hormonale, mais ce n'est pas le propos de traité de ces sujets la bien que l'approche traitant des algorithme génétique est un autre sujet de l'IA qu'il sera intéressant de traiter...)

Source de l'image : probablement ici mais pas sur...

Ainsi un neurone biologique est constitué:
  • d'un noyau : le cœur de la cellule neuronale
  • de dendrites permettant d’agréger les informations entrantes venant des synapses
  • d'axones fournissant la réponse neuronale
  • de synapses : interconnexion entre les axones et les dendrites permettant le transfert de l’influx nerveux 
Pour ne pas douter de l'efficacité des réseaux de neurones, il suffit de regarder un peu autour de nous et de regarder tous ces êtres vivant se déplaçant, communicant et interagissant entre eux, qu'ils soient humains ou animal.

Dans le cadre de l'etre humain, on parle de:
  • 100 Milliards de neurones
  • 10000 Synapses par neurone 
  • 10^15 Synapses dans le cerveau humain
dont les objectifs sont de facon non exhaustives:
  • Mémoire et persistance des données dans le temps
  • Réflexion, élaboration des idées, associer des concepts et des stratégies 
  • Sens, Analyse des données, traitements des sons, des images, du touché
  • Construction d'une réponse moteur, l’équilibre, l'orientation, la marche, dextérité
Ainsi on comprend qu'il serait bien dommage ne pas essayer de tenter de faire pareil!

Neurone Formel

Le neurone formel est un outil mathématique plutôt simple [2]. Il propose le calcul de la somme des entrées du neurone pondérées par différents coefficient représentant  la "conductance" des dendrites d'entrée. La réponse est alors le traitement de cette somme au travers d'un algorithme permettant de lui donner sens.



Ainsi mathématiquement on définit le neurone tel que:



avec  :

  • a la sortie du neurone
  • xi, le signal d'entré du neurone représenté par un vecteur 
  • wi,  le poid de ponderation des entrées du neurone représenté par un vecteur 
  • biais, une constante de pondération du neurone (à noter que si l’on supprime le biais, on part dans le machine learning, nous y reviendrons aussi)
  • somme, l’opérateur de sommation des entrées pondéré des poids 
  • f, la fonction d’activation du neurone, c’est à dire une fonction permettant de délivrer une sortie spécifique en fonction du résultat de la pondération des entrées

Bien sur dans la littérature nous trouverons la notation matriciel [3] qui permettra de généraliser l'exercice a des réseaux a n neurone:



On notera que W^T correspond à la transposé du vecteur.

Interprétation

Faire un parallèle avec le modèle biologique est très hasardeux cependant on peut interpréter le fonctionnement du modèle mathématique selon les équivalences suivantes:
  • Le vecteur X est le stimulus d’entrée
  • Ce stimulus est reçu par le neurone au travers des dendrites qui vont pondérer les différents messages nerveux.
  • La somme des messages pondérés peut alors être vu comme le niveau d'excitation du neurone 
  • La fonction d’activation sera la manière que le neurone va répondre si celui ci est suffisamment excité 
  • Le biais représente la qualité du message de sortie du neurone permettant de nuancer la capacité du neurone à répondre à l'excitation. 
Bien sur un réseau biologique comporte bien d’autre subtilités non prise en compte dans le modèle mathématique qui du coup est faux (si on voulait vraiment modéliser le comportement d’un cerveau) pourtant ce modèle mathématique est déjà très suffisant pour résoudre bien des problèmes, même avec un seul neurone, la différences d’utilisation se faisant alors sur le type de fonction d’activation qui sera utilisé.

Fonction d'activation

La fonction d’activation du neurone [4,5] est l'élément permettant à celui ci de produire une sortie conforme à l'interprétation des données que l’on souhaite faire produire par le neurone.

Il y a trois types principaux type de fonctions d’activations:
  • de type limiteur
  • de type linéaire
  • de type sigmoïde
Les limiteurs sont des fonctions répondant de façon binaire. Soit 0 ou 1, soit -1 où 1 selon le besoin. Il permettent généralement de produire des classes d’association



Les fonctions linéaire à l’inverse ont pour vocation de retourner le résultat de la somme des entrées pondérées par d'éventuels coefficients de normalisation et considérant d'éventuelle saturation. Elle s’utilise généralement lorsque la nature de la commande de sortie se doit d’être réelle (dans le cadre de prédictions ou de production d'une loi de commande) 

Enfin les fonctions de type sigmoïde sont produite à base d’exponentielle, de log où d’arc-tangente et permettent non pas d’être un compromis entre une fonction limiteur et une fonction lineaire mais de produire des sorties avec une interprétation statistique. Elles seront alors utilisées tout aussi bien en classification qu’en prédiction. 



Bien sur il existe de nombreuses variantes possibles comme les linéaires saturés ou même des hystérésis. Voici le code python pour reproduire ces graphes:


1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import numpy as np
import math

l=np.linspace(-20,20,200)
#plt.plot(l,l)
plt.plot(l,[ 0 if val < 0 else 1 for val in l])
plt.plot(l,[ 1 / (1 + math.exp(-val)) for val in l])

Conclusion:

Ceci n'est que la première étape pour comprendre les réseaux de neurones. Il reste de nombreuses choses a voir, entre autres des exemples pour mieux cerner les mécanismes, en particulier l'apprentissage. Nous y viendrons justement dans les prochains articles qui se baseront sur celui ci afin de voir ce qu'il est possible de faire avec déjà juste un neurone! (certains n'auront plus d'excuses)

A noter qu'initialement, je prévoyais d’intégrer dans ce même article les capacités de classification et de régression linéaire qu'offre un seul neurone. Cependant, il s'est avéré que le temps me manque ces derniers temps et en plus j'ai remarqué que mes contenus devenait de plus en plus gros... du coup je prend le partie de découper un peu mes publications afin de publier plus souvent. Je pense que ça augmentera la lisibilité du blog... (et psychologiquement j'aurai pas l'impression d'en faire moins)

Références:

[1] https://www.college-de-france.fr/site/yann-lecun/course-2016-02-12-14h30.htm
[2] https://fr.wikipedia.org/wiki/Neurone_formel
[3] https://un-est-tout-et-tout-est-un.blogspot.com/2018/03/notions-de-mathematiques-elementaires.html
[4] http://www-connex.lip6.fr/~denoyer/wordpress/wp-content/uploads/2016/01/coursml2.pdf
[5] http://www.sylbarth.com/nn.php


Aucun commentaire:

Enregistrer un commentaire