Il y a un certain nombre de questions à poser:
- avez-vous le nombre approprié de neurones dans chaque couche
- utilisez-vous les types de fonctions de transfert appropriés?
- utilisez-vous le type d'algorithme d'apprentissage approprié
- avez-vous un échantillon suffisamment grand
- pouvez-vous confirmer que vos échantillons ont les bonnes relations entre eux pour être informatifs? (non redondant, de dimension pertinente, etc ...)
Que pouvez-vous donner à la manière des éphémérides? Pouvez-vous nous dire quelque chose sur la nature des données?
Vous pouvez créer un arbre de réseaux de neurones boosté par gradient.
Vous avez demandé ce qui se passe si vous arrêtez tôt.
Vous pouvez vous essayer. Exécutez 300x où vous commencez avec des poids initialisés aléatoires, puis arrêtez-vous à un nombre spécifié d'itérations, disons 100. À ce stade, calculez votre erreur d'ensemble, votre erreur de sous-ensemble de formation et votre erreur d'ensemble de tests. Répéter. Une fois que vous avez 300 valeurs pour vous dire quelle est l'erreur, vous pouvez avoir une idée de votre distribution d'erreurs à partir de 100 itérations d'apprentissage. Si vous le souhaitez, vous pouvez ensuite échantillonner cette distribution à plusieurs autres valeurs d'apprentissage. Je suggère 200, 500 et 1000 itérations. Cela vous donnera une idée de l'évolution de votre SNR au fil du temps. Un tracé du SNR par rapport au nombre d'itérations peut vous donner une idée des "falaises" ou "assez bien". Parfois, il y a des falaises où l'erreur s'effondre. Parfois, l'erreur est acceptable à ce stade.
Il faut des données "relativement simples" ou une chance "plutôt bonne" pour que votre système converge constamment en moins de 100 itérations. Les deux ne concernent pas la répétabilité et ne sont pas généralisables.
Pourquoi pensez-vous en termes de poids convergents et non d'erreur étant en dessous d'un seuil particulier. Avez-vous déjà entendu parler d'un paradoxe de vote? ( lien ) Lorsque vous avez des interactions cycliques dans votre système (comme la rétroaction dans les réseaux de neurones), vous pouvez avoir des paradoxes de vote - des changements couplés. Je ne sais pas si les poids seuls sont un indicateur suffisant pour la convergence du réseau.
Vous pouvez considérer les poids comme un espace. Il a plus de 3 dimensions, mais c'est toujours un espace. Dans le "centroïde" de cet espace se trouve votre région "la mieux adaptée". Loin du centroïde est un ajustement moins bon. Vous pouvez considérer le réglage actuel de vos poids comme un point unique dans cet espace.
Maintenant, vous ne savez pas où se trouve réellement le "bien". Ce que vous avez, c'est une "pente" locale. Vous pouvez effectuer une descente de gradient vers le «mieux» local compte tenu de l'endroit où se trouve votre point en ce moment. Cela ne vous dit pas mieux "l'universel", mais le local vaut mieux que rien.
Alors vous commencez à itérer, en descendant vers cette vallée de paresse. Vous répétez jusqu'à ce que vous pensiez avoir terminé. Peut-être que la valeur de vos poids est importante. Peut-être qu'ils rebondissent partout. Peut-être que le calcul "prend trop de temps". Tu veux avoir fini.
Alors, comment savez-vous si votre situation est "assez bonne"?
Voici un test rapide que vous pourriez faire:
Prendre 30 sous-ensembles aléatoires uniformes des données (comme quelques pour cent des données chacun) et recycler le réseau sur eux. Cela devrait être beaucoup plus rapide. Observez le temps qu'il leur faut pour converger et comparez-le avec l'historique de convergence du grand ensemble. Testez l'erreur du réseau pour l'ensemble des données sur ces sous-ensembles et voyez comment cette répartition des erreurs se compare à votre grosse erreur. Maintenant, augmentez les tailles de sous-ensemble jusqu'à peut-être 5% de vos données et répétez. Voyez ce que cela vous apprend.
Il s'agit d'une variation sur l'optimisation des essaims de particules (voir référence) modelée sur la façon dont les abeilles prennent les décisions basées sur le dépistage.
Vous avez demandé ce qui se passe si les poids ne convergent pas.
Les réseaux de neurones sont un outil. Ils ne sont pas le seul outil. Il y en a d'autres. J'envisagerais d'en utiliser un.
Je travaille en termes de critères d'information, donc je regarde à la fois les poids (nombre de paramètres) et l'erreur. Vous pourriez en essayer un.
Il existe certains types de prétraitement qui peuvent être utiles. Centre et échelle. Rotation à l'aide des principaux composants. Si vous regardez les valeurs propres dans vos composants principaux, vous pouvez utiliser des règles de tracé skree pour estimer la dimension de vos données. Réduire la dimension peut améliorer la convergence. Si vous savez quelque chose sur la «physique sous-jacente», vous pouvez lisser ou filtrer les données pour éliminer le bruit. Parfois, la convergence concerne le bruit dans le système.
Je trouve intéressante l'idée de la détection compressée . Il peut permettre un sous-échantillonnage radical de certains systèmes sans perte de généralisation. J'examinerais certaines statistiques et distributions de vos données rééchantillonnées par bootstrap pour déterminer si et à quel niveau de sous-échantillonnage l'ensemble de formation devient représentatif. Cela vous donne une certaine mesure de la «santé» de vos données.
Parfois, c'est une bonne chose qu'ils ne convergent pas
Avez-vous déjà entendu parler d'un paradoxe de vote? Vous pourriez le considérer comme un cousin plus élevé dans une impasse à double sens. C'est une boucle. Dans un paradoxe de vote à 2, la première personne veut le candidat "A" tandis que la seconde veut le candidat "B" (ou non-A ou autre). La partie importante est que vous pouvez la considérer comme une boucle.
Les boucles sont importantes dans les réseaux de neurones. Retour d'information. Récursivité. Cela a permis au perceptron de résoudre les problèmes de type XOR. Cela fait des boucles, et parfois les boucles peuvent agir comme le paradoxe du vote, où elles continueront de changer de poids si vous avez des itérations infinies. Ils ne sont pas destinés à converger car ce n'est pas le poids individuel qui importe mais l'interaction des poids dans la boucle.
Remarque:
L'utilisation de seulement 500 itérations peut être un problème. J'ai eu des NN où 10 000 itérations étaient à peine suffisantes. Le nombre d'itérations pour être "suffisant" dépend, comme je l'ai déjà indiqué, des données, de la topologie NN, des fonctions de transfert de nœuds, de la fonction d'apprentissage / formation et même du matériel informatique. Vous devez avoir une bonne compréhension de la façon dont ils interagissent tous avec votre nombre d'itérations avant de dire qu'il y a eu «suffisamment» ou «trop» d'itérations. D'autres considérations telles que le temps, le budget et ce que vous voulez faire avec le NN lorsque vous avez terminé la formation doivent également être prises en compte.
Chen, RB, Chang, SP, Wang, W. et Wong, WK (2011, septembre). Optimal Experimental Designs via Particle Swarm Optimization Methods (preprint), consulté le 25 mars 2012 sur http://www.math.ntu.edu.tw/~mathlib/preprint/2011-03.pdf