Comment effectuer efficacement la modélisation du réseau neuronal?

13

Quel devrait être le rapport entre le nombre d'observations et le nombre de variables? Comment détecter le sur-ajustement dans le modèle de réseau neuronal et comment éviter le sur-ajustement? Si je veux effectuer une classification avec Neural Network, les cours doivent-ils avoir une fréquence égale? Sil te plait aide moi.

asad.taj
la source
1
Avez-vous vraiment besoin de NN? Cette méthode est plutôt considérée comme obsolète (en partie parce qu'il est très difficile de répondre généralement à vos questions).
1
@mbq: cela devrait peut-être être une question distincte, mais pourriez-vous développer votre affirmation selon laquelle les réseaux de neurones sont considérés comme obsolètes? (et par qui?)
naught101
1
@ naught101 Ceci est un commentaire de 2010 ... Aujourd'hui, nous avons malheureusement une renaissance de cette folie, nous devrons donc attendre quelques années pour que les NN redeviennent obsolètes (;
1
@mbq: cela ne répond pas à ma question. Mais peut-être que cela: stackoverflow.com/questions/683124/neural-networks-obsolete
naught101

Réponses:

25

Les conseils que je donnerais sont les suivants:

  1. Épuisez les possibilités des modèles linéaires (par exemple la régression logistique) avant de passer aux réseaux neuronaux, surtout si vous avez de nombreuses fonctionnalités et pas trop d'observations. Pour de nombreux problèmes, un réseau neuronal ne surpasse pas les classificateurs linéaires simples, et la seule façon de savoir si votre problème est dans cette catégorie est de l'essayer et de le voir.

  2. Enquêter sur les méthodes du noyau (par exemple, les machines à vecteurs de support (SVM), la régression logistique du noyau), les modèles de processus gaussiens en premier. Dans les deux cas, le sur-ajustement est efficacement contrôlé en réglant un petit nombre d'hyper-paramètres. Pour les méthodes du noyau, cela est souvent effectué par validation croisée, pour les modèles de processus gaussiens, cela est effectué en maximisant la vraisemblance marginale (également connue sous le nom de «preuve» bayésienne pour le modèle). J'ai trouvé qu'il est beaucoup plus facile d'obtenir un modèle raisonnable en utilisant ces méthodes qu'avec les réseaux de neurones, car le moyen d'éviter le sur-ajustement est beaucoup plus simple.

  3. Si vous voulez vraiment utiliser un réseau de neurones, commencez par un réseau de fonctions de base radiale (régularisé), plutôt qu'un réseau de type MLP (Feedforward Multilayer Perceptron).

  4. Si vous utilisez un MLP, utilisez la régularisation. Si vous le faites, il sera moins sensible aux choix concernant l'architecture, tels que l'optimisation du nombre d'unités cachées. Au lieu de cela, tout ce que vous avez à faire est de choisir une bonne valeur pour le paramètre de régularisation. Le «cadre de preuve» bayésien de MacKay fournit une bonne méthode pour définir le paramètre de régularisation. Si vous utilisez la régularisation, le nombre d'observations et le nombre de variables deviennent beaucoup moins problématiques.

Pour détecter un sur-ajustement, effectuez simplement une validation croisée pour tester les performances de généralisation.

En ce qui concerne les classes ayant des fréquences égales, la chose à retenir est que si vous entraînez un modèle avec un ensemble d'entraînement équilibré, mais que les classes ne sont pas équilibrées dans les données opérationnelles, alors le modèle est très susceptible de sous-prédire la classe minoritaire. Si vous utilisez un classificateur probabiliste tel qu'une régression logistique ou un réseau neuronal, vous pouvez toujours corriger les probabilités estimées pour en tenir compte après la formation. Si votre ensemble de données est très déséquilibré, je recommanderais une pondération différentielle des modèles des classes positive et négative, les facteurs de pondération étant sélectionnés par validation croisée.

Cependant, lorsque les classes sont très déséquilibrées, il est normal que les erreurs faussement négatives et faussement positives aient des coûts différents (par exemple, dans les tests de dépistage médical, un faux négatif est bien pire qu'un faux positif). Si souvent, tout ce que vous devez faire est d'inclure les coûts de mauvaise classification dans la fonction d'erreur utilisée pour former le réseau.

Si vous êtes un utilisateur MATLAB (comme moi), je peux fortement recommander le logiciel NETLAB (Ian Nabney et Chris Bishop) ou le logiciel qui accompagne le livre Gaussian Process for Machine Learning de Rasmussen et Williams. Je peux également recommander fortement le livre "Réseaux neuronaux pour la reconnaissance des formes" de Chris Bishop pour tous ceux qui débutent dans les réseaux neuronaux. C'est un livre génial, qui couvre le matériel avec une grande clarté et le niveau minimum de mathématiques requis pour vraiment comprendre ce que vous faites, et la plupart est implémenté dans le logiciel NETLAB (qui peut également fonctionner sous Octave).

HTH

PS La meilleure façon de modéliser avec un réseau neuronal est probablement d'utiliser une approche bayésienne basée sur Hybrid Monte Carlo (HMC), telle que développée par Radford Neal. En général, les problèmes commencent dans la modélisation lorsque vous essayez d'optimiser certains paramètres et vous vous retrouvez sur-ajustés. La meilleure solution est de ne jamais rien optimiser et de marginaliser (intégrer) sur les paramètres à la place. Malheureusement, cette intégration ne peut pas être effectuée analytiquement, vous devez donc utiliser des approches basées sur l'échantillonnage à la place. Cependant, cela est (a) coûteux en calcul et (b) un peu d'un "art noir" et nécessite une compréhension et une expérience approfondies.

Dikran Marsupial
la source