Comment décider de l'architecture d'un réseau neuronal?

19

Je me demandais comment devons-nous décider du nombre de nœuds dans les couches cachées et du nombre de couches cachées à mettre lorsque nous construisons une architecture de réseau neuronal.

Je comprends que la couche d'entrée et de sortie dépend de l'ensemble de formation que nous avons, mais comment décider de la couche cachée et de l'architecture globale en général?

user7677413
la source
Typiquement, nous expérimentons, en utilisant notre intution; considérez-le comme un hyperparamètre . Il y a des façons d'apprendre l'architecture mais je ne sais pas à quel point elles sont pratiques: blog.acolyer.org/2017/05/10/…
Emre
2
J'ai cherché un doublon à cela, car je suis sûr qu'il a déjà été répété plusieurs fois sur ce site. Cependant, impossible de trouver une version pure qui n'était pas attachée à un ensemble de données ou à un problème. Peut-être que cela pourrait être la question générique à laquelle nous invitons les autres? Malheureusement, il n'y a pas une grande réponse «comment faire» à avoir en général, mais c'est une question courante face à tant de choix.
Neil Slater
Il s'agit d'une question très intéressante à répondre (le chercheur a commencé à travailler sur votre question). Quelle serait l'architecture optimale pour l'ensemble de données A et l'ensemble de données B. Veuillez lire le document ci-dessous qui a tenté de répondre à votre question. Bienvenue dans le monde de Neural Architecture Search (NAS). arxiv.org/abs/1611.01578
iDeepVision

Réponses:

17

Malheureusement, il n'existe aucun moyen générique de déterminer a priori le meilleur nombre de neurones et le nombre de couches pour un réseau neuronal, étant donné juste une description du problème. Il n'y a même pas beaucoup de conseils pour déterminer les bonnes valeurs à essayer comme point de départ.

L'approche la plus courante semble être de commencer par une estimation approximative basée sur l'expérience antérieure des réseaux utilisés sur des problèmes similaires. Cela peut être votre propre expérience, ou une expérience de seconde / troisième main que vous avez acquise dans un cours de formation, un blog ou un document de recherche. Essayez ensuite quelques variantes et vérifiez attentivement les performances avant d'en choisir une meilleure.

La taille et la profondeur des réseaux de neurones interagissent également avec d'autres hyperparamètres , de sorte que changer une chose ailleurs peut affecter où se trouvent les meilleures valeurs. Il n'est donc pas possible d'isoler une «meilleure» taille et profondeur pour un réseau, puis de continuer à régler les autres paramètres de manière isolée. Par exemple, si vous avez un réseau très profond, il peut fonctionner efficacement avec la fonction d'activation ReLU, mais pas si bien avec sigmoid - si vous avez trouvé la meilleure taille / forme de réseau et avez ensuite essayé une expérience avec différentes fonctions d'activation, vous pouvez venir à la mauvaise conclusion sur ce qui fonctionne le mieux.

Vous pouvez parfois lire sur les «règles de base» que les chercheurs utilisent lors du démarrage d'une conception de réseau neuronal à partir de zéro. Ces choses peuvent fonctionner pour vos problèmes ou non, mais elles ont au moins l'avantage de commencer le problème. Les variations que j'ai vues sont:

  • Créez un réseau avec des couches cachées de taille similaire à l'entrée, et toutes de même taille, au motif qu'il n'y a pas de raison particulière de varier la taille (sauf si vous créez peut-être un autoencodeur).

  • Commencez simplement et développez la complexité pour voir ce qui améliore un réseau simple.

  • Essayez différentes profondeurs de réseau si vous vous attendez à ce que la sortie soit bien expliquée par les données d'entrée, mais avec une relation complexe (par opposition à juste intrinsèquement bruyante).

  • Essayez d'ajouter un peu de décrochage, c'est ce que les réseaux de neurones ont de plus proche de la poussière de fée magique qui rend tout meilleur (mise en garde: l'ajout de décrochage peut améliorer la généralisation, mais peut également augmenter la taille des couches et les temps de formation requis).

Si vous les lisez ou quelque chose comme ça dans n'importe quel texte, alors prenez-les avec une pincée de sel. Cependant, au pire, ils vous aident à surmonter l'effet de page blanche, à écrire une sorte de réseau et à démarrer le processus de test et de raffinement.


En passant, essayez de ne pas vous perdre trop dans le réglage d'un réseau de neurones quand une autre approche pourrait être meilleure et vous faire gagner beaucoup de temps. Envisagez et utilisez d'autres approches d'apprentissage automatique et de science des données. Explorez les données, faites peut-être des tracés. Essayez d'abord quelques approches linéaires simples pour obtenir des repères à battre, régression linéaire, régression logistique ou régression softmax en fonction de votre problème. Envisagez d'utiliser un algorithme ML différent des NN - les approches basées sur l'arbre de décision telles que XGBoost peuvent être plus rapides et plus efficaces que l'apprentissage en profondeur sur de nombreux problèmes.

Neil Slater
la source
C'est une excellente explication. Merci. Je me demande également s'il existe un bon moyen de décider quelle approche ML utiliser? Vous avez mentionné qu'il pourrait y avoir un meilleur moyen qu'un réseau de neurones, mais comment pouvons-nous le déterminer facilement?
user7677413
@ user7677413: La même chose s'applique. Vous devez essayer de voir, bien que l'expérience puisse vous donner un guide sur des problèmes familiers.
Neil Slater
1
quand le réseau neuronal est-il nécessaire alors?
user7677413
1
Les réseaux de neurones sont rarement nécessaires . Cependant, ils sont meilleurs à certains problèmes. Ils excellent dans les tâches de traitement du signal telles que la reconnaissance audio et d'image, et ont également la capacité d'apprendre des différences subtiles à partir de grandes quantités de données où des algorithmes plus simples peuvent atteindre une limite. Cependant, si un NN est le bon outil pour vous et quel que soit le problème que vous rencontrez un jour particulier, personne ne peut prédire.
Neil Slater
1
@ user7677413 Je pense que vous faites l'hypothèse qu'il n'y a pas 40 ans de recherche approfondie et perspicace en apprentissage automatique. On dirait que vous ne faites que gratter la surface. Je recommande de trouver un manuel et de voir comment tout cela est lié, cela aiderait à construire votre intuition pour les nombreux algorithmes d'apprentissage automatique.
Alex L