Jouer avec vos réseaux de neurones !

Un neurone

Coucou les gens ! vous aviez aimé mes TPs sur les réseaux de neurones autour de tesseract-ocr ou encore la vidéo de Science étonnante sur le deep-learning ? Si je résume je vous avait montré ce qu’on peut faire à l’aide de ce type de programme et la vidéo expliquait un peu plus comment ça fonctionne. En gros il vous restait plus qu’a pratiquer le sujet. Mais bon, comme coder soit même un neural network c’est un peu long sans un peu beaucoup de motivation (i.e plus que « parce que je peux le faire »), y’a deux gars de Google qui proposent une application web tutoriel pour mieux comprendre comment ça fonctionne.

Network Playground ou les réseaux de neurones pour les nuls

Le site web Neural Network Playground permet de se rendre compte en interactif de comment se comportent les réseaux de neurones. L’application en question essaye d’extrapoler des zones bleu ou orange dans une image à partir de points de couleurs dans celle ci. C’est le principe de dessiner en reliant les points, puis colorier l’intérieur des zones ainsi définies (en simplifiant beaucoup). Mais comme un bon dessin vaut mieux qu’un long discours :

Neuralplayground réseaux de neurones output
Résultat d’un essai sur Neuralplayground

Le jeu de données aléatoires sur lequel faire tourner le programme peut être configurer à volonté :

Jeu de données aléatoire configurable
Jeu de données aléatoire configurable

Vous allez ensuite pouvoir essayer différentes configuration du réseau de neurones (avec un maximum de 6 couches et 8 neurones par couches) pour obtenir le meilleur comportement possible indiqué par le temps de convergence (i.e ratio temps/résultats). Ce qu’il y a de très sympa avec ce projet, c’est qu’il vulgarise complètement la partie mathématique des réseaux de neurones. Par exemple, les valeurs que vous pouvez passer en entrée sont symboliser par des icônes représentatives de chaque fonctions :

InputNeuralPlayground
Quelques entrée de Neural playground : axes X, Y, X² et sin(X)

Quelques tests

Vous pouvez ensuite agir vous sur le poids de lien entre chaque neurones vous même ou laisser les neurones ajuster le poids des liens par eux mêmes. Ci dessous, voilà les donnée avant de lancer le programme :

Configuration initiale Neural Playground
Configuration initiale Neural Playground

Le poid des liens est représenté par l’épaisseur du trait  Dans l’exemple ci dessus, mais le poids de ces liens varies pendant l’exécution du programme, c’est pour ça qu’on parle de « machine learning » car le programme se modifie en fonction du jeu de données en entrée et du chemin qu’il suit. Les neurones donnant les meilleurs résultats étant alors privilégiés. Par exemple, ci dessous, on remarque clairement que le Jeu X1X2 a pris une place importante.

Exemple réseaux de neurones
Exemple Neural Playground

Voilà, plus techniquement parlant le projet est surtout un démonstrateur pour le projet TensorFlow (OpenSource) de Google (pour changer…). Je vous laisse jouer avec et trouver quel configuration de d’entrée/neurones donne les meilleurs résultats en fonction du type de données aléatoire.

Si vous avez un peu de temps à y consacrer c’est très intéressant pour bien comprendre les enjeux de ce genre de programme et que ce n’est pas « magique », mais aussi qu’il faut du jus de cerveau départ pour rendre un réseaux de neurones efficace (essayer de trouver une configuration d’entrée/neurones qui ne marche pas par exemple). A partir vous devriez comprendre qu’on est encore loin de SkyNet et de la prise de pouvoir des machines…

@++

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Apprenez comment les données de vos commentaires sont utilisées.