168 votes

Quelle est la différence entre un train, une validation et un ensemble de tests dans les réseaux de neurones?

Im en utilisant cette bibliothèque

http://pastebin.com/raw.php?i=aMtVv4RZ

pour mettre en œuvre un apprentissage de l'agent.

J'ai généré le train des cas, mais je ne sais pas exactement ce que sont la validation et de test, le professeur dit:

70% devrait être de former des cas, 10% sont des cas de test et le reste 20% devrait être de validation des cas.

modifier

j'ai ce code, pour la formation.. mais je n'ai pas de ideia quand arrêter l'entraînement..

  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 avoir une erreur moyenne de 0,2 avec les données de validation, après peut-être 20 formation d'itérations, qui devrait être de 80%?

l'erreur moyenne = somme de l'absolu diference entre la validation de la cible et de sortie donnée de validation des données d'entrée / taille de la validation des données

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

309voto

Lirik Points 17868

La formation et la validation des ensembles sont utilisés lors de 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 fini de formation, puis que vous exécutez à l'encontre de votre jeu de test et vérifier que la précision est suffisante.

L'Ensemble d'apprentissage: ce jeu de données est utilisée pour ajuster les poids du réseau de neurones.

Ensemble de Validation: ce jeu de données est utilisé pour minimiser le surajustement. Vous n'êtes pas en ajustant les poids du réseau, grâce à cet ensemble de données, vous êtes juste à vérifier que toute augmentation de la précision au-dessus de l'ensemble de données de formation produit une augmentation de la précision d'un ensemble de données qui n'a pas été démontré que le réseau avant, ou au moins le réseau n'a pas formé sur elle (c'est à dire la validation de l'ensemble de données). Si la précision au-dessus de l'ensemble de données de formation augmente, mais l'exactitude de plus, la validation de l'ensemble de données reste la même ou diminue, alors vous êtes le surajustement votre réseau de neurones et vous devriez arrêter de la formation.

Jeu de test: ce jeu de données est utilisée uniquement pour les tests de la solution finale, afin de confirmer la véritable pouvoir prédictif du réseau.

84voto

phoxis Points 14005

L'ensemble d'apprentissage: Un ensemble d'exemples utilisés pour l'apprentissage, c'est-à-fit les paramètres [c'est à dire, le 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 de Test: Un ensemble d'exemples uniquement utilisé pour évaluer la performance [généralisation] pleinement spécifié classificateur.

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

La surface d'erreur sera différente pour différents ensembles de données à partir de votre jeu de données (lot d'apprentissage). Par conséquent, si vous trouvez un très bon minima locaux pour votre jeu de test de données, qui peut ne pas être un très bon point, et peut-être un très mauvais point de la surface générée par un ensemble de données pour le même problème. Par conséquent, vous devez calculer un tel modèle qui trouve non seulement un bon poids de configuration pour l'ensemble de la formation, mais aussi doit être en mesure de prédire de nouvelles données (ce qui n'est pas dans l'ensemble de la formation) avec une bonne erreur. En d'autres termes, le réseau doit être en mesure de généraliser les exemples de sorte qu'il apprend les données et ne pas simplement se souvient ou charge de l'ensemble de la formation par le surajustement les données d'apprentissage.

La validation de l'ensemble de données est un ensemble de données pour la fonction que vous voulez apprendre, vous n'êtes pas directement en utilisant pour former le réseau. Vous êtes de formation du réseau avec un ensemble de données que vous appelez l'ensemble de données de formation. Si vous utilisez gradient en fonction de l'algorithme de former le réseau puis l'erreur de surface et de la pente à un moment donné va dépendre entièrement de l'ensemble de données de formation ainsi que la formation de l'ensemble de données est directement utilisé pour ajuster le poids. Pour vous assurer de ne pas overfit le réseau, vous devez saisir la validation du jeu de données dans le réseau et vérifiez si l'erreur est dans une certaine gamme. Parce que l'ensemble de validation est de ne pas utiliser directement pour ajuster le poids de la netowork, par conséquent, un bon d'erreur pour la validation et aussi le jeu de test indique que le réseau prévoit bien pour le train exemples, il est également prévu afin de bien performer à quand un nouvel exemple sont présentés au réseau qui n'a pas été utilisé dans le processus de formation.

Arrêt précoce est un moyen d'arrêter la formation. Il existe différentes variantes disponibles, le contour principal est, à la fois le train et l'ensemble de validation erreurs sont surveillés, le train d'erreur diminue à chaque itération (backprop et frères), et d'abord l'erreur de validation diminue. La formation est interrompue au moment de l'erreur de validation commence à augmenter. La configuration de poids à ce point indique un modèle, qui prévoit la formation de données bien, ainsi que les données qui n'est pas vu par le réseau . Mais parce que la validation des données de fait affecte la configuration de poids indirectement pour sélectionner la configuration de poids. C'est là que le jeu de Test. Cet ensemble de données n'est jamais utilisé dans le processus de formation. Une fois qu'un modèle est sélectionné sur la base de l'ensemble de validation, le test de l'ensemble des données est appliquée sur le modèle de réseau et l'erreur de cet ensemble est trouvé. Cette erreur est un représentant de l'erreur dans laquelle on peut s'attendre à partir d'absolument de nouvelles données pour le même problème.

0voto

Zak Points 10160

Je crois que dans le mode entraînement, vous autorisez les nœuds de votre réseau pour modifier les valeurs de leur entrée ou de sortie de poids. Vous aussi vous fournir de la rétroaction positifs ou négatifs dans le but de modifier le poids. En d'autres termes, vous donner un jeu de données d'entrée, et de la rétroaction de sortie avec la sortie du XOR ed contre l'connu vrai/faux, puis PAS. En d'autres termes, lorsque les réponses correspondent, vous donner de la rétroaction positive, et lorsqu'ils sont en désaccord, vous donner une rétroaction négative.

Pas sûr de ce que la différence entre test/validation des cas est autre que peut-être vous connaissez la réponse à la validation des cas et de les utiliser pour valider la sortie, nad peut-être des cas de test que vous ne connaissez pas la réponse, et accepter la réponse de votre validé neural net...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X