Comment trouver le nombre optimal de neurones par couche?


28

Lorsque vous écrivez votre algorithme, comment savez-vous combien de neurones vous avez besoin par couche unique? Existe-t-il des méthodes pour en trouver le nombre optimal, ou s'agit-il d'une règle d'or?

Réponses:


15

Il n'y a aucun moyen direct de trouver le nombre optimal d'entre eux: les gens essaient empiriquement de voir (par exemple, en utilisant la validation croisée). Les techniques de recherche les plus courantes sont les recherches aléatoires, manuelles et sur grille.

Il existe des techniques plus avancées telles que les processus gaussiens, par exemple l' optimisation des hyperparamètres de réseaux neuronaux avec des processus gaussiens pour la classification des actes de dialogue , IEEE SLT 2016 .


7

Pour une approche plus intelligente que les recherches aléatoires ou exhaustives, vous pouvez essayer un algorithme génétique tel que NEAT http://nn.cs.utexas.edu/?neat . Cependant, cela n'a aucune garantie de trouver un optima global, il s'agit simplement d'un algorithme d'optimisation basé sur les performances et est donc vulnérable au coincement dans un optima local.


1
Sera de toute façon assez proche d'un optimum global.
jjmerelo

4

Paper Szegedy C, Vanhoucke V, Ioffe S, et al. Repenser l'architecture de démarrage de la vision par ordinateur [J]. arXiv preprint arXiv: 1512.00567, 2015. donne quelques principes généraux de conception:

  1. Évitez les goulots d'étranglement de la représentation, surtout au début du réseau;

  2. Équilibrez la largeur et la profondeur du réseau. Des performances optimales du réseau peuvent être atteintes en équilibrant le nombre de filtres par étage et la profondeur du réseau. L'augmentation de la largeur et de la profondeur du réseau peut contribuer à des réseaux de meilleure qualité. Cependant, l'amélioration optimale pour une quantité de calcul constante peut être atteinte si les deux sont augmentés en parallèle. Le budget de calcul doit donc être réparti de manière équilibrée entre la profondeur et la largeur du réseau.

Ces suggestions ne peuvent cependant pas vous apporter le nombre optimal de neurones dans un réseau.

Cependant, il existe encore des recherches sur la compression de modèles, par exemple l' apprentissage structuré à faible densité (SSL) des réseaux de neurones profonds , SqueezeNet , le réseau d'élagage qui peuvent éclairer la façon d'optimiser les neurones par couche unique.

En particulier dans l' apprentissage structurel à faible densité des réseaux de neurones profonds , il ajoute un Group Lassoterme de régularisation dans la fonction de perte pour régulariser les structures (c.-à-d. Filtres, canaux, formes de filtre et profondeur de couche) des DNN, ce qui revient à mettre à zéro certains composants ( c.-à-d. filtres, canaux, formes de filtre et profondeur de couche) de la structure nette et permet d'obtenir un compact et une accélération remarquables du réseau, tout en conservant une petite perte de précision de classification.


3

Vous savez quand vous avez trop de neurones, c'est quand vous avez fini de vous ajuster. Cela signifie que cela ne fonctionne pas bien parce que NN essaie de s'activer sur le match le plus parfait qui est impossible. Comme deux chats différents avec la même quantité d'atomes, ou pour dire, c'est un détecteur NN qui ne s'active que sur une photo de votre chat de compagnie et rien d'autre. Vous voulez une plage plus large pour que le nn s'active. Comme sur n'importe quelle photo de chat.

Le sur-ajustement est un problème qui n'a pas vraiment de solution miracle. Vous pouvez commencer avec trop peu et continuer à en ajouter d'autres. Ou commencez par beaucoup, puis retirez-les jusqu'à ce que cela fonctionne correctement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.