4 votes

Quand dois-je arrêter la formation du réseau neuronal pour la classification en utilisant la méthode de validation croisée ?

Je suis en train d'implémenter un réseau neuronal pour la classification. J'utilise l'algorithme de rétropropagation pour la formation. J'utilise la méthode de validation croisée. Mais je ne sais pas quand je dois arrêter de former le réseau neuronal.
La prochaine question est de savoir comment vérifier l'overfitting et le underfitting.

J'ai un ensemble de données qui contient 1 000 motifs. J'utilise la méthode de validation croisée à 10 plis. Donc 1 pli contient 100 motifs. Je m'entraîne avec 900 motifs et je teste avec 100 motifs.

Bien que je change le nombre de nœuds cachés et le nombre d'époques, la précision des tests ne change pas beaucoup. Mais si j'envoie des données de formation au réseau formé, la précision de la formation varie en fonction du nombre de nœuds cachés et du nombre d'époques. Mon idée est-elle suffisante pour vérifier l'overfitting et l'underfitting ? Puis-je déterminer l'overfitting et le underfitting uniquement avec la précision ?

Je veux aussi poser quelques questions pour continuer avec ça. J'ai posté mes résultats, qui ont été testés avec différents noeuds cachés et différents nombres d'époques. Comme je l'ai dit, j'utilise la validation croisée, je n'utilise qu'un seul réseau (qui obtient le maximum de précision au test) parmi 10 réseaux formés.

No of hidden nodes=50 ,Learning Rate=0.1 , no of epoch=100
Network 0 on Test=75.0 , onTrain= 97.11111111111111
Network 1 on Test=72.0 , onTrain= 98.22222222222223
Network 2 on Test=69.0 , onTrain= 97.88888888888889
> Network 3 on Test=78.0 , onTrain= 97.44444444444444
Network 4 on Test=77.0 , onTrain= 97.77777777777777
Network 5 on Test=77.0 , onTrain= 97.11111111111111
Network 6 on Test=69.0 , onTrain= 97.55555555555556
Network 7 on Test=74.0 , onTrain= 98.22222222222223
Network 8 on Test=76.0 , onTrain= 97.77777777777777
Network 9 on Test=74.0 , onTrain= 97.55555555555556

No of hidden nodes=50 ,Learning Rate=0.1 , no of epoch=70
Network 0 on Test=71.0 , onTrain= 93.22222222222221
Network 1 on Test=70.0 , onTrain= 93.33333333333333
Network 2 on Test=76.0 , onTrain= 89.88888888888889
Network 3 on Test=80.0 , onTrain= 93.55555555555556
Network 4 on Test=77.0 , onTrain= 93.77777777777779
> Network 5 on Test=81.0 , onTrain= 92.33333333333333
Network 6 on Test=77.0 , onTrain= 93.0
Network 7 on Test=73.0 , onTrain= 92.33333333333333
Network 8 on Test=75.0 , onTrain= 94.77777777777779
Network 9 on Test=70.0 , onTrain= 93.11111111111111

No of hidden nodes=50 ,Learning Rate=0.1 , no of epoch=50

Network 0 on Test=73.0 , onTrain= 87.8888888888889
Network 1 on Test=74.0 , onTrain= 89.22222222222223
Network 2 on Test=73.0 , onTrain= 87.1111111111111
Network 3 on Test=66.0 , onTrain= 90.44444444444444
Network 4 on Test=82.0 , onTrain= 88.77777777777777
Network 5 on Test=80.0 , onTrain= 88.44444444444444
Network 6 on Test=67.0 , onTrain= 88.33333333333333
Network 7 on Test=75.0 , onTrain= 87.8888888888889
Network 8 on Test=78.0 , onTrain= 87.44444444444444
Network 9 on Test=73.0 , onTrain= 85.0

Le premier réseau (nombre d'époques = 100) a obtenu une précision de 78.0 sur le test mais de 97.4444 sur le train. S'agit-il d'un surajustement ? S'il s'agit d'un surajustement, le troisième réseau (nombre d'époques = 50), dont la précision est de 82,0 pour le test et de 88,777 pour le train, est-il acceptable ? Si ce n'est pas acceptable, dois-je diminuer le nombre d'époques ?

3voto

Lirik Points 17868

Voir cette réponse pour plus de détails : Quelle est la différence entre les ensembles de formation, de validation et de test, dans les réseaux neuronaux ?

OU si vous aimez le pseudo-code, voici à quoi cela ressemblerait approximativement :

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

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