Je construis actuellement un nn pour un ensemble de données avec 387 fonctionnalités et 3000 échantillons. Les sorties sont de 3 classes. J'ai configuré la structure du réseau comme suit:
entrée-> 200 -> {300-> 100} -> 50-> sortie
Ai-je choisi le bon nombre de nœuds et de couches? Comment déterminer le nombre de nœuds de chaque couche (entrée, caché et sortie)? Y a-t-il une règle?
Règles? Autant que vous voulez et aucun. Voici un extrait de la Neural Network FAQ qui est une bonne page à consulter pour les questions de base:
R: Combien d'unités cachées dois-je utiliser? ==========================================
Il n'y a aucun moyen de déterminer une bonne topologie de réseau uniquement à partir du nombre d'entrées et de sorties. Cela dépend essentiellement du nombre d'exemples de formation et de la complexité de la classification que vous essayez d'apprendre. Il y a des problèmes avec une entrée et une sortie qui nécessitent des millions d'unités cachées, et des problèmes avec un million d'entrées et un million de sorties qui ne nécessitent qu'une seule unité cachée, ou pas du tout.
Certains livres et articles proposent des "règles de base" pour choisir une topopologie - Ninputs plus Noutputs divisés par deux, peut-être avec un carré racine là quelque part - mais ces règles sont des ordures totales . D'autres règles concernent le nombre d'exemples disponibles: utilisez au maximum autant d'unités cachées que le nombre de poids dans le réseau multiplié par 10 est inférieur au nombre d'exemples. De telles règles ne concernent que le sur-ajustement et ne sont pas fiables non plus.
Dans votre cas, cependant, on peut certainement dire que le réseau est beaucoup trop complexe (même si vous avez appliqué une forte régularisation). Pourquoi tant de couches cachées? Commencez avec une couche cachée - malgré l'euphorie d'apprentissage profond - et avec un minimum de nœuds cachés. Augmentez le nombre de nœuds masqués jusqu'à obtenir de bonnes performances. Sinon, j'ajouterais d'autres couches. En outre, utilisez la validation croisée et la régularisation appropriée.
Comme Yoshua Bengio, directeur de l'Institut des algorithmes d'apprentissage de Montréal remarques :
"Très simple. Continuez à ajouter des couches jusqu'à ce que l'erreur de test ne s'améliore plus."
Une méthode recommandée par Geoff Hinton consiste à ajouter des couches jusqu'à ce que vous commenciez à équiper votre ensemble d'entraînement. Ensuite, vous ajoutez le décrochage ou une autre méthode de régularisation.
Pour votre tâche:
Comme ils l'ont dit, il n'y a pas de règle "magique" pour calculer le nombre de couches et de nœuds cachés du réseau neuronal, mais il existe quelques conseils ou recommandations qui peuvent vous aider à trouver les meilleurs.
Le nombre de nœuds masqués est basé sur une relation entre:
Pour minimiser l'erreur et avoir un réseau formé qui se généralise bien, vous devez choisir un nombre optimal de couches cachées, ainsi que des nœuds dans chaque couche cachée.
Trop peu de nœuds entraîneront une erreur élevée pour votre système car les facteurs prédictifs peuvent être trop complexes pour être capturés par un petit nombre de nœuds
Trop de nœuds s'adapteront à vos données d'entraînement et ne se généraliseront pas bien
Vous pouvez trouver quelques conseils généraux sur cette page:
Section - Combien d'unités cachées dois-je utiliser?
Si vos données sont linéairement séparables, vous n'avez absolument pas besoin de couches cachées. Sinon, il existe un consensus sur la différence de performances par rapport à l'ajout de couches cachées supplémentaires: les situations dans lesquelles les performances s'améliorent avec une deuxième (ou troisième, etc.) couche cachée sont très petites. Par conséquent, une couche cachée suffit pour la grande majorité des problèmes.
Il existe des règles empiriques dérivées empiriquement, parmi celles-ci, la plus couramment invoquée est `` la taille optimale de la couche cachée se situe généralement entre la taille de l'entrée et la taille des couches de sortie ''.
En somme, pour la plupart des problèmes, on pourrait probablement obtenir des performances décentes en définissant la configuration de couche cachée en utilisant seulement deux règles: