Existe-t-il une règle générale pour la conception de réseaux de neurones?

12

Je sais qu'une architecture de réseau neuronal est principalement basée sur le problème lui-même et les types d'entrée / sortie, mais quand même - il y a toujours un "carré" quand on commence à en construire un. Donc, ma question est - étant donné un ensemble de données d'entrée de MxN (M est le nombre d'enregistrements, N est le nombre d'entités) et un C classes de sortie possibles - existe-t-il une règle empirique pour combien de couches / unités devrions-nous commencer?

shakedzy
la source
Les réponses possibles à cette question sont très spécifiques au problème. Il peut exister des règles utiles pour la reconnaissance des objets image, mais ces règles peuvent ne pas fonctionner sur un autre ensemble de données.
horaceT

Réponses:

10

Cette question a reçu une réponse détaillée sur CrossValidated: comment choisir le nombre de couches et de nœuds cachés dans un réseau de neurones à action directe?

Cependant, permettez-moi d'ajouter mes propres deux cents:

Il n'y a pas de règle magique pour choisir la meilleure architecture de réseau neuronal, mais si vous pouvez trouver une architecture que quelqu'un a utilisée pour résoudre un problème similaire, c'est souvent un excellent point de départ.

Les meilleurs endroits à consulter sont des exemples officiels ou non officiels utilisant des bibliothèques de réseaux de neurones populaires telles que Keras, PyTorch ou Tensorflow, et des architectures décrites dans la littérature universitaire. keras / examples sur github est une excellente ressource.

Ces architectures ont probablement été choisies après de nombreux essais et erreurs, donc la plupart du travail aura été fait pour vous.

Imran
la source
5
Une mise en garde à la réponse CrossValidated est qu'elle a maintenant 7 ans et plus et pointe vers une FAQ de 15 ans et plus pour un "excellent résumé" de la configuration de vos couches cachées. Dire qu'il y a eu beaucoup de travail sur la configuration NN au cours des 7 à 15 dernières années est un peu un euphémisme. Il y a un nombre croissant d'applications qui ne relèvent pas du régime " une seule couche cachée est suffisante ". - Cela dit, pour une multitude de problèmes, une approche d'apprentissage en profondeur peut être excessive. Commencer avec une seule couche cachée et aller en profondeur seulement si nécessaire est une stratégie solide.
RM
1
Bon point, RM - La deuxième réponse est cependant beaucoup plus récente.
Imran
@Imran Je pense que vous ne répondez jamais tout à fait à la question OP. Le choix des nœuds et de l'architecture cachés est une question très profonde qui n'est pas encore très bien comprise. Témoin ResNet et ResNet large avec des connexions inter-couches.
horaceT
Merci pour votre commentaire, @horaceT. Ma tentative de réponse était censée signifier "Il n'y a pas de règle empirique, mais il y a des heuristiques qui peuvent être appliquées". Je connais Res Nets. Veuillez me faire savoir comment je peux améliorer ma réponse autrement.
Imran
3

J'ai lu un article explorant l'idée d'utiliser des réseaux de neurones pour concevoir d'autres réseaux de neurones, en explorant quelle configuration de nœuds et de couches était la plus efficace. Voici la page où vous pouvez télécharger un PDF https://arxiv.org/abs/1611.02120

Daniel Ephrat
la source
2

Suite à la réponse de @ Imran, j'ai trouvé ce document dans l'un des commentaires du post CrossValidated auquel il était lié. Outre une tentative de trouver la bonne architecture à l'aide de modèles génétiques (au lieu d'utiliser une règle empirique), la section 2.1 donne quelques limites théoriques au nombre d'unités cachées qui devraient être dans un système à une / deux couches cachées.

EDIT: J'ai testé ce théorème et découvert que l'utilisation de modèles génétiques est aussi bonne que la sélection d'une architecture aléatoire.

shakedzy
la source