Qu’est-ce qu’un bon réseau de neurones ?
Il y a deux critères qui vont être déterminants, selon l’objectif que l’on se fixe :
- Soit on cherche à rendre le réseau de neurones plus performant, et on va vouloir améliorer son taux de précision pour maximiser les bonnes réponses. On va donc tenter d’obtenir un réseau de neurone avec le taux de précision le plus élevé.
- Soit le taux de précision est satisfaisant, mais on veut réduire la taille du réseau de neurones, pour pouvoir l’embarquer dans de l’IoT par exemple. Et là, c’est le nombre de paramètres (nombre de neurones par couche, et nombre de connexions entre eux), que l’on va tenter de réduire au maximum.
Evidemment, il n’est pas facile d’atteindre un objectif sans que cela fasse bouger l’autre critère. Si on réduit le nombre de neurones, on va souvent voir le taux de précision chuter. Et si on augmente la précision, cela se fait souvent en ajoutant des paramètres…
Construire le meilleur réseau de neurones
Il existe une plateforme qui s’appelle Kaggle et qui propose des outils et des concours pour les datascientists. L’un de ces concours s’appelle MNIST et l’objet est de construire un réseau de neurones capable de reconnaître des caractères numériques manuscrits.
Des centaines de datascientist s’affrontent lors de ces concours et lorsque qu’un champion émerge, on touche à l’état de l’art en matière de modèle de réseau de neurones. Ce champion est le meilleur réseau de neurone construit par un être humain à date. Mais est-ce qu’une « intelligence non-humaine » pourrait faire mieux ?
Optimiser un réseau de neurones avec NNTO
NNTO est une plateforme SAAS qui permet d’optimiser les réseaux de neurones grâce à des algorithmes de mutation génétique. Pas besoin de fournir vos données. L’optimisation se fait sur la topologie du réseau de neurones. Des mutants sont générés, ils sont sélectionnés selon leurs résultats pour arriver à l’objectif choisi.
Nous avons donc pris un champion MNIST Kaggle à des fin de benchmark, et nous avons réussi à l’améliorer grâce à NNTO. Comme l’enjeu est de montrer la pertinence du modèle dans ce contexte, nous avons décidé d’utiliser les données d’origine du repo de KERAS sans aucune modification. Nous avons évalué le score du champion avec ces données, ce qui nous a donné une base de score (moins bonne que celle annoncée par l’auteur du champion). Toutes nos optimisations de modèle on dépassé le score ainsi calculé. De plus, notre meilleur champion a dépassé le score de l’auteur :
[embedyt] https://www.youtube.com/watch?v=7ynU7jvJzBM[/embedyt]
NNTO a réussi à améliorer le réseau de neurone champion de deux manières avec :
- Un réseau de neurones plus efficace : 99,50% après 10 générations de mutants (ce qui implique une diminution de 8% de l’erreur) par rapport au modèle initial.
- Un réseau de neurones plus léger : une réduction de paramètre de 76% à 175K avec un autre mutant.
Optimiser son réseau de neurones pour sortir d’une impasse
Quand les résultats ne sont pas au rendez-vous, il est parfois très difficile de savoir d’où vient le problème. Est-ce que cela vient du modèle du réseau de neurones ? Est-ce que ce que le problème vient des données ? Sans possibilité d’identifier clairement la cause, régler le problème est quasi-impossible, et malgré les heures de travail investies, on reste enlisés dans cette ornière.
L’optimisation du réseau de neurones avec NNTO permet de sortir de cette impasse. En faisant muter le modèle, soit on règle le problème si le modèle du réseau de neurones en était responsable. Soit malgré le nombre de mutations, on est toujours confronté au manque de résultat. Alors dans ce cas, on sait avec certitude que le problème vient des données. On peut donc s’atteler à le régler.
Si vous êtes curieux des détails de l’expérience, tout est consultable. Et si vous voulez tester nos réseaux de neurones mutants, n’hésitez pas !