web-dev-qa-db-fra.com

architecture multi-couche perceptron (MLP): critères de choix du nombre de couches masquées et de la taille de la couche masquée?

Si nous avons 10 vecteurs propres, nous pouvons avoir 10 nœuds neuronaux dans la couche d'entrée. Si nous avons 5 classes de sortie, nous pouvons avoir 5 nœuds dans la couche en sortie. nœuds dans 1 couche cachée?

96
Abhishek kumar

combien de couches cachées?

un modèle avec zéro couches masquées résoudra séparable linéairement données. Donc, à moins que vous ne sachiez déjà que vos données ne sont pas séparables linéairement, il n’est pas inutile de vérifier ceci: pourquoi utiliser un modèle plus complexe que la tâche n’exige? Si elle est séparable linéairement, une technique plus simple fonctionnera, mais un Perceptron fera également l'affaire.

En supposant que vos données nécessitent une séparation par une technique non linéaire, alors commencez toujours par une couche masquée. Presque certainement c'est tout ce dont vous aurez besoin. Si vos données sont séparables à l'aide d'un MLP, celui-ci n'a probablement besoin que d'un seul calque masqué. Cela est théoriquement justifié, mais ma raison est purement empirique: de nombreux problèmes difficiles de classification/régression sont résolus à l'aide de MLP à couche cachée unique, mais je ne me souviens pas d'avoir rencontré de MLP à couche cachée multiple utilisé pour modéliser avec succès des données. Que ce soit sur les tableaux d'affichage, les manuels scolaires, les manuels universitaires, etc., ils existent, certes, mais les circonstances qui justifient leur utilisation sont empiriquement assez rares.


Combien de nœuds dans la couche masquée?

De la littérature académique MLP. ma propre expérience, etc., je me suis souvent inspiré de plusieurs règles empiriques ( RoT), et que j’ai également trouvé des guides fiables (c’est-à-dire que les directives étaient précises, et même quand ce n'était pas le cas, il était généralement clair que faire ensuite):

RoT basé sur l'amélioration de la convergence:

Lorsque vous commencez la construction du modèle, utilisez plutôt plus de nœuds dans la couche masquée.

Pourquoi? Premièrement, quelques nœuds supplémentaires dans la couche masquée ne feront probablement aucun mal: votre MLP continuera de converger. D'autre part, un nombre insuffisant de nœuds dans la couche masquée peut empêcher la convergence. Pensez-y de cette façon, des nœuds supplémentaires fournissent une capacité excédentaire - des pondérations supplémentaires pour stocker/transmettre le signal au réseau pendant l'itération (formation ou modélisation). Deuxièmement, si vous commencez avec des nœuds supplémentaires dans votre couche masquée, il est facile de les élaguer ultérieurement (au cours de la progression de l'itération). Ceci est courant et il existe des techniques de diagnostic pour vous aider (par exemple, le diagramme de Hinton, qui est simplement une représentation visuelle des matrices de pondération, une "carte thermique" des valeurs de pondération).

RoTs en fonction de la taille de la couche d'entrée et de la taille de la couche de sortie:

Une règle générale veut que la taille de ce calque [masqué] se situe quelque part entre la taille du calque d'entrée ... et la taille du calque de sortie ....

Pour calculer le nombre de nœuds cachés, nous utilisons une règle générale de: (Nombre d'entrées + de sorties) x 2/3

RoT basé sur les composants principaux:

En général, nous spécifions autant de nœuds cachés que de dimensions [composants principaux] nécessaires pour capturer 70 à 90% de la variance du jeu de données en entrée.

Et pourtant, l'auteur NN FAQ appelle ces règles "un non-sens" (littéralement) car elles: ignorent le nombre d'instances de formation, le bruit dans les cibles (valeurs des variables de réponse) et la complexité du espace de fonctionnalités.

À son avis (et il m'a toujours semblé qu'il savait de quoi il parlait), choisissez le nombre de neurones dans la couche cachée en fonction du type de régularisation ou de l'arrêt précoce de votre MLP =.

La seule technique valide pour optimiser le nombre de neurones dans la couche cachée:

Pendant la construction de votre modèle, effectuez un test obsessionnel. les tests révéleront les signatures d'une architecture réseau "incorrecte". Par exemple, si vous commencez avec un MLP ayant une couche cachée composée d'un petit nombre de nœuds (que vous augmenterez progressivement en fonction des résultats du test), les erreurs de formation et de généralisation seront toutes deux provoquées par des biais et des sous-ajustements.

Augmentez ensuite le nombre de nœuds de la couche masquée, un à la fois, jusqu'à ce que l'erreur de généralisation commence à augmenter, cette fois en raison d'un surajustement et d'une variance élevée.


En pratique, je le fais de cette façon:

couche d'entrée : taille de mon vacteur de données (nombre d'entités dans mon modèle) + 1 pour le nœud de biais et sans la variable de réponse, de cours

couche de sortie : uniquement déterminée par mon modèle: régression (un nœud) ou classification (nombre de nœuds équivalent au nombre de classes, en supposant que softmax)

couche cachée : pour commencer, une couche cachée avec un nombre de nœuds égal à la taille de la couche d'entrée. La taille "idéale" est plus susceptible d'être plus petite (c.-à-d. Un certain nombre de nœuds entre le nombre dans la couche d'entrée et le nombre dans la couche en sortie) plutôt que plus grande - encore une fois, il s'agit simplement d'une observation empirique de cette observation est ma propre expérience. Si le projet justifie le temps supplémentaire requis, je commence par une seule couche masquée composée d'un petit nombre de nœuds, puis (comme je viens de l'expliquer plus haut), j'ajoute des nœuds à la couche masquée, un par un, tout en calculant la généralisation. erreur, erreur d'apprentissage, biais et variance. Lorsque l'erreur de généralisation a diminué et juste avant qu'elle ne recommence à augmenter, le nombre de nœuds à ce stade est mon choix. Voir la figure ci-dessous.

enter image description here

201
doug

Il est très difficile de choisir le nombre de neurones dans une couche cachée et de choisir le nombre de couches cachées dans votre réseau de neurones.

Habituellement, pour la plupart des applications, une couche cachée est suffisante. En outre, le nombre de neurones dans cette couche masquée doit être compris entre le nombre d'entrées (10 dans votre exemple) et le nombre de sorties (5 dans votre exemple).

Mais le meilleur moyen de choisir le nombre de neurones et de couches cachées est l’expérimentation. Entraînez plusieurs réseaux de neurones avec un nombre différent de couches cachées et de neurones cachés et mesurez les performances de ces réseaux à l'aide de validation croisée . Vous pouvez vous en tenir au nombre qui génère le réseau le plus performant.

2
Ove

Pour automatiser la sélection du meilleur nombre de couches et du meilleur nombre de neurones pour chacune des couches, vous pouvez utiliser optimisation génétique.

Les pièces clés seraient:

  1. Chromosome : vecteur définissant le nombre d'unités dans chaque couche masquée (par exemple, [20,5,1,0,0], ce qui correspond à 20 unités dans la première couche masquée. , 5 en seconde, ..., avec les couches 4 et 5 manquantes). Vous pouvez définir une limite quant au nombre maximal de calques à essayer et au nombre maximal d'unités de chaque calque. Vous devez également définir des restrictions sur la manière dont les chromosomes sont générés. Par exemple. [10, 0, 3, ...] ne doivent pas être générés, car toute unité après une couche manquante (le '3, ...') serait non pertinente et gaspillerait des cycles d'évaluation.
  2. Fonction Fitness : fonction renvoyant l'inverse de l'erreur d'apprentissage la plus faible dans l'ensemble de validation croisée d'un réseau défini par un chromosome donné. Vous pouvez également indiquer le nombre total d'unités ou le temps de calcul si vous souhaitez trouver le "réseau le plus petit/le plus rapide, mais aussi le plus précis".

Vous pouvez également considérer:

  • Élagage : commencez par un grand réseau, puis réduisez les couches et les unités cachées, tout en gardant une trace des performances des ensembles de validations croisées.
  • Croissance : commencez avec un très petit réseau, puis ajoutez des unités et des couches, puis gardez une trace des performances de l'ensemble de CV.
1
Justas