web-dev-qa-db-fra.com

Comment choisir le nombre de couches et de nœuds cachés dans un réseau de neurones?

Qu'est-ce que le nombre de couches cachées dans un réseau neuronal de perceptron multicouches influe sur le comportement du réseau neuronal? Même question pour le nombre de nœuds dans les couches cachées?

Supposons que je souhaite utiliser un réseau de neurones pour la reconnaissance de caractères manuscrite. Dans ce cas, je mets des valeurs d'intensité de couleur de pixel en tant que nœuds d'entrée et des classes de caractères en tant que nœuds de sortie. 

Comment choisir le nombre de couches et de nœuds cachés pour résoudre ce problème?

30
gintas

Remarque: cette réponse était correcte au moment où elle a été faite, mais est depuis devenue obsolète.


Il est rare d'avoir plus de deux couches cachées dans un réseau de neurones. Le nombre de couches ne sera généralement pas un paramètre de votre réseau qui vous préoccupera beaucoup.

Bien que les réseaux de neurones multi-couches avec plusieurs couches puissent représenter circuits profonds, la formation de réseaux profonds a toujours été considérée comme quelque peu d'un défi. Jusqu'à très récemment, les études empiriques ont souvent trouvé que les réseaux profonds ne fonctionnent généralement pas mieux et souvent moins bien, que les réseaux de neurones avec une ou deux couches cachées.

Bengio, Y. & LeCun, Y., 2007. Mise à l'échelle d'algorithmes d'apprentissage vers l'IA. Machines à noyau à grande échelle, (1), pp.1-41.

Le document cité est une bonne référence pour en savoir plus sur les effets de la profondeur du réseau, des progrès récents dans l’enseignement des réseaux en profondeur et de l’apprentissage en profondeur en général.

18
Don Reba

La réponse générale est que pour choisir des hyperparamètres, il faut procéder à une validation croisée. Tenez quelques données, entraînez les réseaux avec des configurations différentes et utilisez celui qui fonctionne le mieux sur l'ensemble maintenu.

7
Rob Neuhaus

La plupart des problèmes que j'ai vus ont été résolus avec 1-2 couches cachées. Il est prouvé que les MLP avec une seule couche cachée sont des approximateurs de fonctions universelles ( Hornik et al. ). Plus de couches cachées peuvent rendre le problème plus facile ou plus difficile. Vous devez généralement essayer différentes topologies. J'ai entendu dire que vous ne pouvez pas ajouter un nombre arbitraire de couches masquées si vous souhaitez entraîner votre MLP avec backprop, car le dégradé deviendra trop petit dans les premières couches (je n'ai aucune référence à cela). Mais il y a certaines applications où les gens utilisaient jusqu'à neuf couches . Vous êtes peut-être intéressé par un problème de référence standard qui est résolu par différents classificateurs et topologies MLP.

4
alfa

Outre le fait que la validation croisée sur différentes configurations de modèle (nombre de couches cachées OR neurones par couche) vous amène à choisir une meilleure configuration.

Une approche consiste à former un modèle aussi grand et profond que possible et à utiliser régularisation de l'abandon pour éteindre certains neurones et réduire la suralimentation.

la référence à cette approche peut être vue dans cet article . https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf

3
iratzhash

Toutes les réponses ci-dessus sont bien sûr correctes, mais juste pour ajouter quelques idées supplémentaires: Quelques règles générales sont basées sur cet article: 'Nombre approximatif de neurones de couche cachée dans l'architecture BPNN à couches cachées multiples' par Saurabh Karsoliya.


En général:

  • Le nombre de neurones de couche cachés correspond à 2/3 (ou 70% à 90%) de la taille de la couche en entrée. Si cela est insuffisant, le nombre de neurones de la couche de sortie peut être ajouté ultérieurement.
  • Le nombre de neurones de couche cachés doit être inférieur à deux fois le nombre de neurones dans la couche d'entrée.
  • La taille des neurones de couche masqués se situe entre la taille de la couche d'entrée et celle de la couche de sortie.

Gardez toujours à l'esprit que vous devez explorer et essayer de nombreuses combinaisons différentes. En outre, en utilisant GridSearch, vous pourriez trouver le "meilleur modèle et paramètres"

Par exemple. nous pouvons faire un GridSearch afin de déterminer la "meilleure" taille de la couche cachée.

1
seralou