Afin de déterminer si plus de données seront utiles ou non, vous devez comparer les performances de votre algorithme sur les données d'entraînement (c'est-à-dire les données utilisées pour former le réseau neuronal) à ses performances sur les données de test (c'est-à-dire les données que le réseau neuronal a pas "voir" dans la formation).
Une bonne chose à vérifier serait l'erreur (ou la précision) sur chaque ensemble en fonction du nombre d'itérations. Il y a deux possibilités pour le résultat de ceci:
1) L'erreur d'apprentissage converge vers une valeur significativement inférieure à l'erreur de test. Si tel est le cas, les performances de votre algorithme s'amélioreront certainement avec plus de données.
2) L'erreur d'apprentissage et l'erreur de test convergent vers à peu près la même valeur (l'erreur de formation étant probablement encore légèrement inférieure à l'erreur de test). Dans ce cas, des données supplémentaires en elles-mêmes n'aideront pas votre algorithme. Si vous avez besoin de meilleures performances que celles que vous obtenez à ce stade, vous devriez essayer soit d'ajouter plus de neurones à vos couches cachées, soit d'ajouter plus de couches cachées. Si suffisamment d'unités cachées sont ajoutées, vous constaterez que votre erreur de test deviendra sensiblement plus élevée que l'erreur de formation, et plus de données vous aideront à ce stade.
Pour une introduction plus approfondie et utile à la façon de prendre ces décisions, je recommande fortement le cours Coursera d' Andrew Ng , en particulier les leçons "Évaluer un algorithme d'apprentissage" et "Biais vs Variance".
Je suppose que la chose la plus importante est que les échantillons de vos données sont bien répartis, car peu importe la quantité de données dont vous disposez, plus de données seraient toujours meilleures. Après tout, si vous essayez d'apprendre à distinguer les photos de chats et de chiens, vous ne pouvez pas vous attendre à ce que votre modèle fonctionne bien si vous ne lui donnez que des images de chats.
Comme suggéré dans la réponse de Kevin L , il est logique de considérer la différence entre l'erreur de formation et l'erreur de test. Si vos données de test sont indépendantes de vos données d'entraînement, cela donne une indication sur la façon dont votre modèle se généralise aux données qui ne sont pas disponibles. Quelque chose que j'aimerais ajouter à cela est le fait qu'une grande différence entre l'entraînement et l'erreur de test vous indique seulement que votre modèle ne se généralise pas bien, c'est-à-dire que vous surappuyez sur les données d'entraînement. Davantage de données seront probablement utiles, car maintenant le réseau doit également modéliser les points de données supplémentaires, il ne peut donc plus trop s'adapter. Cependant, il pourrait être plus intéressant de changer votre modèle afin qu'il se généralise mieux. Ce chapitre d'un excellent livre explique quels types de régularisation existent et comment ils peuvent être appliqués dans les réseaux pour obtenir une meilleure généralisation.
Si vous cherchiez une mesure plus quantitative, j'ai récemment trouvé cette question sur quora. Il s'agit d'un encodeur automatique, mais je suppose qu'il devrait également s'appliquer à votre exemple. Je ne sais pas si c'est correct (veuillez me le faire savoir), mais je dirais que, par exemple pour le MNIST, on pourrait dire que vous essayez de réduire les images avec un maximum de 28 * 28 * 8 * 10 000 = 62 720 000 entropie de bits à dix classes dans un codage à chaud avec 10 * 10 * 10 000 = 1 000 000 bits d'entropie. Parce que nous ne sommes intéressés que par les 1 000 000 bits d'entropie en sortie, nous pouvons dire qu'avec 1 000 000 paramètres, chaque paramètre représente un seul bit, soit 1e-4 bits par échantillon. Cela signifie que vous auriez besoin de plus de données. Ou vous avez trop de paramètres, car par exemple avec 100 paramètres, vous avez 10 000 bits par paramètre et donc 1 bit par échantillon. cependant,
la source
Une autre méthode généralement utilisée pour déterminer si votre réseau a appris suffisamment de fonctionnalités consiste à visualiser les filtres initiaux. Si le réseau est bien formé, il devrait afficher un filtre lisse. Un filtre bruyant indique généralement que le réseau n'a pas été suffisamment formé ou qu'il a été surchargé. Pour plus d'informations, lisez cette page .
la source