lundi 15 avril 2013

Paramétrer le perceptron multicouche

Au premier abord, les réseaux de neurones artificiels semblent toujours un peu énigmatiques. Justement parce qu’il est question de « neurones », et que la plupart des références qui les présentent commencent quasiment toujours par des grandes envolées sur les métaphores biologiques, faisant miroiter la perspective de doter les machines d’une intelligence. Pour l’étudiant que j’étais, tout ça me paraissait bien inaccessible… et surtout ça ne répondait pas du tout aux questions simples – mais bon on est là pour réaliser des traitements après tout – que je me posais : Est-ce que la de méthode est applicable à l’analyse prédictive ? Pour quelles configurations de données et classes de problèmes est-elle la plus performante ? Comment fixer les valeurs des paramètres – s’ils existent – associés à la méthode pour la rendre plus efficace sur mes données ?

Avec le temps, et une lecture assidue de la documentation y afférente, j’ai fini par comprendre que le perceptron multicouche  était l’approche la plus populaire en apprentissage supervisée, qu’elle était très performante pourvu que l’on sache définir correctement le nombre de neurones dans les couches cachées. Deux extrêmes tout aussi funestes sont à éviter : si on n’en met pas assez, le modèle est peu compétitif, incapable de retranscrire la relation (le concept) entre la variable cible et les prédicteurs ; si on en met trop, le modèle devient trop performant sur l’échantillon d’apprentissage, ingérant les particularités de ce dernier, non transposables dans la population.

Ceci étant posé, on vient alors nous annoncer qu’il n’y a pas de méthode universelle pour définir le bon paramétrage et qu’il faut en réalité tâtonner en s’appuyant sur des heuristiques plus ou moins heureuses. Tout ça paraît assez obscur. L’incompréhension vient souvent du fait que, d’une part,  on a du mal à appréhender le rôle des neurones de la couche intermédiaire – si l’on s’en tient à une seule couche cachée - dans la modélisation ; d’autre part, on perçoit mal également l’impact de l’augmentation ou la diminution de leur nombre.

Dans ce tutoriel, nous allons essayer d’expliciter le rôle des neurones de la couche cachée du perceptron. Nous utiliserons des données générées artificiellement pour étayer notre propos. Nous nous en tenons à 2 variables explicatives afin de pouvoir projeter les données dans le plan et ainsi décrire concrètement le comportement de l’approche. Nous travaillons avec Tanagra 1.4.48 dans un premier temps puis, dans un second temps, nous proposerons une petite routine de détection automatique du nombre optimal de neurones pour R 2.15.2 (package nnet).

Mots clés : apprentissage supervisé, réseau d neurones, perceptron simple, perceptron multicouche, sélection de variables
Composants : MULTILAYER PERCEPTRON, FORMULA
Lien : fr_Tanagra_Optimal_Neurons_Perceptron.pdf
Données : artificial2d.zip
Références :
Tanagra, "Réseaux de neurones avec SIPINA, TANAGAR et WEKA".
 Wikipedia, "Multilayer perceptron".

.