Quelle est la différence entre le train, la validation et l'ensemble de test, dans les réseaux de neurones?

J'utilise cette bibliothèque pour implémenter un agent d'apprentissage.

J'ai généré les cas de formation, mais je ne sais pas avec certitude quels sont les ensembles de validation et de test.
Le professeur dit:

70% devraient être des cas de train, 10% seront des cas de test et les 20% restants devraient être des cas de validation.

modifier

J'ai ce code pour la formation, mais je n'ai aucune idée de quand arrêter formation.

  def train(self, train, validation, N=0.3, M=0.1):
    # N: learning rate
    # M: momentum factor
    accuracy = list()
    while(True):
        error = 0.0
        for p in train:
            input, target = p
            self.update(input)
            error = error + self.backPropagate(target, N, M)
        print "validation"
        total = 0
        for p in validation:
            input, target = p
            output = self.update(input)
            total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between target and output

        accuracy.append(total)
        print min(accuracy)
        print sum(accuracy[-5:])/5
        #if i % 100 == 0:
        print 'error %-14f' % error
        if ? < ?:
            break

modifier

Je peux obtenir une erreur moyenne de 0.2 avec des données de validation, après peut-être 20 itérations de formation, cela devrait être 80%?

Erreur moyenne = somme de la différence absolue entre la cible de validation et la sortie, compte tenu de l'entrée des données de validation/de la taille des données de validation.

1
        avg error 0.520395 
        validation
        0.246937882684
2
        avg error 0.272367   
        validation
        0.228832420879
3
        avg error 0.249578    
        validation
        0.216253590304
        ...
22
        avg error 0.227753
        validation
        0.200239244714
23
        avg error 0.227905    
        validation
        0.199875013416
101
demandé sur Vadim Kotov 2010-06-04 21:37:46

4 réponses

Les ensembles de formation et de validation sont utilisés pendant la formation.

for each epoch
    for each training data instance
        propagate error through the network
        adjust the weights
        calculate the accuracy over training data
    for each validation data instance
        calculate the accuracy over the validation data
    if the threshold validation accuracy is met
        exit training
    else
        continue training

Une fois que vous avez terminé l'entraînement, vous exécutez votre jeu de test et vérifiez que la précision est suffisante.

Ensemble D'entraînement : Cet ensemble de données est utilisé pour ajuster les poids sur le réseau neuronal.

Validation de l'Ensemble: cet ensemble de données est utilisé pour minimiser le surajustement. Vous n'ajustez pas les poids du réseau avec cet ensemble de données, vous vérifiez simplement que toute augmentation de la précision par rapport à l'ensemble de données de formation donne en fait une augmentation de la précision par rapport à un ensemble de données qui n'a pas été montré au réseau auparavant, ou au moins le réseau ne s'est pas entraîné dessus (c'est-à-dire ensemble de données de validation). Si la précision par rapport à l'ensemble de données d'entraînement augmente, mais que la précision par rapport à l'ensemble de données de validation reste la même ou diminue, vous surchargez votre réseau de neurones et vous devez arrêter l'entraînement.

Jeu de Test: cet ensemble de données est utilisé uniquement pour le test final solution afin de confirmer la puissance prédictive réelle du réseau.

195
répondu Kiril 2010-06-04 19:26:49

L'ensemble d'apprentissage: Un ensemble d'exemples utilisés pour l'apprentissage, c'est-à-fit les paramètres [c'est-à-dire les poids] du Classificateur.

Ensemble de Validation : Un ensemble d'exemples utilisés pour régler les paramètres [c'est à dire, de l'architecture, pas de poids] d'un classificateur, par exemple pour choisir le nombre d'unités cachées dans un réseau de neurones.

Ensemble D'essai : Un ensemble d'exemples utilisés uniquement pour évaluer la performance [généralisation] d'un classificateur.

À Partir de ftp://ftp.sas.com/pub/neural/FAQ1.txt section "Quelles sont la population, l'échantillon, la formation, la conception, la validation"

La surface d'erreur sera différente pour différents ensembles de données de votre ensemble de données (apprentissage par lots). Par conséquent, si vous trouvez un très bon minimum local pour vos données d'ensemble de test, cela peut ne pas être un très bon point, et peut être un très mauvais point dans la surface générée par un autre ensemble de données pour le même problème. Par conséquent, vous devez calculer un tel modèle qui non seulement trouve une bonne configuration de poids pour l'ensemble d'entraînement, mais devrait également être capable de prédire de nouvelles données (qui ne sont pas dans l'ensemble d'entraînement) avec une bonne erreur. En d'autres termes, le réseau devrait être capable de généraliser les exemples afin qu'il apprenne les données et ne se contente pas de mémoriser ou de charger l'ensemble de formation en surchargeant les données de formation.

L'ensemble de données de validation est un ensemble de données pour la fonction que vous voulez apprendre, que vous n'utilisez pas directement pour former le réseau. Vous formez le réseau avec un ensemble de données que vous appelez l'ensemble de données de formation. Si vous utilisez un algorithme basé sur un gradient pour former le réseau, la surface d'erreur et le gradient à un moment donné dépendront complètement de l'ensemble de données d'entraînement, ce qui signifie que l'ensemble de données d'entraînement est directement utilisé pour ajuster les poids. Pour vous assurer de ne pas surcharger le réseau vous devez entrer l'ensemble de données de validation sur le réseau et vérifier si l'erreur est dans une certaine gamme. Parce que l'ensemble de validation n'est pas utilisé directement pour ajuster les poids du netowork, donc une bonne erreur pour la validation et aussi l'ensemble de test indique que le réseau prédit bien pour les exemples de train, il est également prévu de bien fonctionner lorsque de nouveaux exemples sont présentés au réseau qui n'a pas été utilisé

L'arrêt précoce est un moyen d'arrêter l'entraînement. Il existe différentes variantes disponibles, les principaux outline est, les erreurs de train et d'ensemble de validation sont surveillées, l'erreur de train diminue à chaque itération (backprop et brothers) et au début l'erreur de validation diminue. La formation est arrêtée au moment où l'erreur de validation commence à augmenter. La configuration de poids à ce point indique un modèle, qui prédit bien les données d'entraînement, ainsi que les données qui ne sont pas vues par le réseau . Mais parce que les données de validation en fait affecte le poids configuration indirectement pour sélectionner la configuration de poids. C'est là que le jeu de Test entre en jeu. Cet ensemble de données n'est jamais utilisé dans le processus de formation. Une fois qu'un modèle est sélectionné en fonction de l'ensemble de validation, les données de l'ensemble de test sont appliquées sur le modèle de réseau et l'erreur pour cet ensemble est détectée. Cette erreur est représentative de l'erreur que nous pouvons attendre de données absolument nouvelles pour le même problème.

Modifier:

En outre, dans le cas où vous n'avez pas assez de données pour un ensemble de validation, vous pouvez utiliser crossvalidation pour régler les paramètres ainsi que d'estimer l'erreur de test.

52
répondu phoxis 2016-08-16 10:03:24

L'ensemble de validation croisée est utilisé pour la sélection du modèle, par exemple, sélectionnez le modèle polynomial avec le moins d'erreurs pour un ensemble de paramètres donné. Le jeu de test est ensuite utilisé pour signaler l'erreur de généralisation sur le modèle choisi. À partir d'ici: https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets

2
répondu user2410953 2017-11-15 03:00:30

En mots simples définir ensemble de Formation, Ensemble de Test, ensemble de Validation

Ensemble D'entraînement: est utilisé pour trouver les voisins les plus proches. Ensemble de Validation: est pour trouver différents k qui s'applique à l'ensemble de trains. Ensemble de Test: est utilisé pour trouver la précision maximale et les données invisibles à l'avenir.

0
répondu Gaurav Pal 2018-07-05 14:16:57