Mais c’est quoi un neurone artificiel en fait ?

image-ikramIl y a quand-même quelque chose d'énervant c'est de ne pas trop savoir de quoi on parle ! Comme Colin l'expliquait il y a peu sur ce blog et dans un ascenceur 🙂 on peut fabriquer des mécanismes au comportement très sophistiqué avec des idées suffisamment élégantes pour être relativement simples à expliquer. C'est ce défi que relève avec nous Ikram Chraibi Kaadoud, doctorante chez Algotech informatique et dans une équipe de neuroscience computationnelle. Donnons lui la parole.

Alors Ikram, dis nous: qu'est ce qu'un "neurone artificiel" ?

Souvenons-nous de notre cours de géométrie de secondaire : on y parle d'une droite qui coupe le plan en deux. Nous y avons appris qu'une droite se définit par une équation :

Vous vous souvenez ? Voilà un petit outil mathématique qui va bien nous servir ici.

Ça ne vous parle pas ? Aucun souci ! Il suffit de se souvenir qu'un simple calcul va donc permettre de déterminer si un point est dans une zone ou une autre de l'espace de part et d'autre de la droite.

C'est exactement le calcul qu'effectue un neurone artificiel : c'est un tout petit mécanisme de calcul qui permet de « couper en deux » un espace où chaque point représente une donnée, avec plein de dimensions correspondant à chaque paramètre de la donnée. Pour que cela marche avec un seul neurone artificiel, il faut que la séparation soit « toute plate » (une ligne, un plan, … on parle d'hyper-plan quand il y a beaucoup de dimensions).

Si regarder le détail de ce calcul vous amuse, en voici le schéma, c'est la fonction f() qui teste si la valeur est supérieure ou inférieure à zéro.

C'est un mécanisme très général. Par exemple, si chaque point représente tous les paramètres du profil facebook d'une personne (par exemple, en mettant dans la liste de valeurs X = (X1, X2, …) : son nombre d'ami-e-s, les éléments liés à ces goûts, à ces messages, à ces images, …) et si il existe une séparation toute plate entre deux sous-espaces, par exemple ceux correspondant aux profils de genre féminin ou masculin, alors un neurone artificiel va pouvoir calculer pour chaque donnée si elle est « masculine ou féminine ».

 

Ok : mais ça ne fait que des séparations toutes plates alors ?

Ah oui ! Cependant, si la séparation n'est pas « toute plate » mais bien plus compliquée, il y a une bonne nouvelle : il suffit de combiner plusieurs neurones artificiels.

Le mécanisme approxime la frontière sous forme de petites zones plates, et chaque neurone artificiel détermine la position du point par rapport à une des zones plates. Déterminer de quel côté de la frontière se trouve une donnée correspond à combiner la réponse de tous les neurones artificiels.

Nous voilà donc avec un processus qui permet de répondre à une question sur des données, par exemple « de quel genre est la personne qui correspond à ce jeu de données ? ». C'est un calcul distribué où chaque élément (ici un neurone artificiel) fait un calcul assez rudimentaire. Mais une fois combinés, il y a émergence d'un calcul générique, qui permet de fournir une nouvelle donnée complexe en combinant des données existantes.

On voit que l'architecture de ce réseau se compose de deux couches : la première fait des calculs locaux distribués, et la seconde combine les résultats obtenus.

 

Mais la solution ne tombe pas du ciel ! Comment lui apprendre les bonnes valeurs ?

Comment entraîner un tel réseau à donner une réponse appropriée ? C'est à dire : comment ajuster les paramètres des neurones (donc les valeurs du biais b, et des poids Wi explicités ci-dessus) ? Il y a deux réponses complémentaires à cette question :

[auto-organisation] 1/ L'auto-organisation du réseau, par un apprentissage non-supervisé qui détecte les régularités. Pour cela une règle proposée par Donald Hebb en 1949 propose de renforcer les poids des connections entre deux neurones artificielles si leurs activités est synchrone, et de l'atténuer sinon.

Pour ceux qui aiment le dire en équation, la variation Wi du poids Wientre une entrée Xi et une sortie y s'écrit très simplement comme la multiplication de ces deux valeurs par une tout petite quantité ε  :

Wi = ε Xi y

Ce qui est remarquable c'est que l'on prouve que ce petit calcul local à chaque neurone permet d'adapter globalement la sortie du réseau aux entrées reçues au fil du temps : le réseau va réagir à des entrées proches d'entrées connues et ignorer les autres.

[apprentissage supervisé] 2/ L'apprentissage est dit supervisé lorsque l’on présente un motif, c'est à dire des exemples d'entrées Xi qui correspondent aux sorties désirées y' (on ajoute le ' pour montrer que ce sont les sorties idéales). Un mécanisme similaire va ajuster les poids des connexions pour minimiser l'erreur entre la sortie observée y et la sortie désirée y'. En équation cela donne une règle tout à fait similaire :

Wi = ε Xi (y' - y)

Ce qui est remarquable encore c'est que l'on prouve que ce petit calcul local à chaque neurone permet d'adapter globalement la sortie du réseau pour lui « apprendre » à ce que ces futures sorties ressemblent aux sorties désirées.

Alors : ce serait si facile ?

Il y a bien entendu des dizaines d'améliorations à ces principes élémentaires. Ces améliorations sont nécessaires pour que les mécanismes passent à l'échelle d'applications réelles. Ces mécanismes sont en lien avec ce que l'on comprend des mécanismes neuronaux d'adaptation, mais ce n'est évidemment pas aussi simple. Cependant, voilà ce qu'il faut saisir pour comprendre ce qui se cache sous le capot de ce qu'on appelle les réseaux de neurones.

Alors, à votre avis, peut-on vraiment faire des choses vraiment aussi performantes que ce qui se calcule dans certaines zones de notre cerveau ?

[ ] Oui, bien entendu, il suffit d'ajouter suffisamment de neurones !

[ ] Non, c'est juste un calcul ce ne sera jamais intelligent !

Choisissez votre réponse et … rendez vous à l'épisode suivant la semaine prochaine.

 

Publier un commentaire