Keras Arrêt Précoce
je forme un réseau neuronal pour mon projet en utilisant Keras. Keras a fourni une fonction pour l'arrêt précoce. Puis-je savoir quels sont les paramètres à observer pour éviter que mon réseau neuronal ne survit trop en utilisant l'arrêt précoce?
1 réponses
l'arrêt précoce est essentiellement l'arrêt de l'entraînement une fois que votre perte commence à augmenter (ou en d'autres termes la précision de validation commence à diminuer). Selon documents il est utilisé comme suit:
keras.callbacks.EarlyStopping(monitor='val_loss',
min_delta=0,
patience=0,
verbose=0, mode='auto')
les valeurs dépendent de votre implémentation (problème, Taille du lot etc...) mais en général, pour éviter le surajustement je voudrais utiliser;
- Moniteur de la validation de la perte (besoin d'utiliser Croix
validation ou au moins train / test set) en réglant le
monitorargument de'val_loss'. min_deltaest un seuil permettant de quantifier une perte à une époque donnée comme une amélioration ou non. Si la différence de perte est inférieure àmin_delta, il est quantifiée comme aucune amélioration. Il vaut mieux le laisser comme 0 puisque nous sommes intéressés lorsque la perte devient de pire en pire.patienceargument représente le nombre d'époques avant de s'arrêter une fois que votre perte commence à augmenter (arrêts d'amélioration). Ce dépend de votre application, si vous utilisez de très petits lots ou un taux d'apprentissage élevé perte zigzag (précision sera plus bruyant) donc mieux définir un grandpatienceargument. Si vous utilisez gros lots et petit l'apprentissage de taux d' votre perte sera plus facile de sorte que vous pouvez utiliser un plus petitpatienceargument. D'une façon ou d'une autre, je le laisse à 2. donnez plus de chance au mannequin.verbosedécide ce qui pour imprimer, laissez le à default (0).model'argument dépend de la direction de votre quantité contrôlée a (est-il censé être en hausse ou en baisse), puisque nous surveiller la perte, on peut utilisermin. Mais laissons keras poignée pour nous et définirauto
alors j'utiliserais quelque chose comme ceci et expérimenterais en traçant la perte d'erreur avec et sans arrêt précoce.
keras.callbacks.EarlyStopping(monitor='val_loss',
min_delta=0,
patience=2,
verbose=0, mode='auto')
pour ambiguïté possible sur la façon dont les callbacks fonctionnent, j'essaierai d'en expliquer plus. Une fois que vous appelez fit(... callbacks=[es]) sur votre model, Keras appelle avec des objets callback prédéfinis. Ces fonctions peuvent être appelées on_train_begin,on_train_end,on_epoch_begin,on_epoch_end et on_batch_begin,on_batch_end. Le rappel d'arrêt précoce est appelé sur chaque extrémité d'époque, compare la meilleure valeur surveillée avec celle actuelle et s'arrête si les conditions sont remplies (combien d'époques ont passé depuis l'observation de la meilleure valeur surveillée et est-ce plus que de la patience argument, la différence entre la dernière valeur est plus grande que min_delta etc..).
comme le souligne @BrentFaust dans ses commentaires, la formation de model se poursuivra jusqu'à ce que les conditions D'arrêt soient remplies ou epochs paramètre (par défaut=10)fit() est satisfait. La mise en place D'un arrêt précoce de rappel ne fera pas le modèle pour s'entraîner au-delà de son epochs paramètre. Afin de l'appelant fit() fonction avec un plus grand epochs value bénéficierait davantage de L'arrêt anticipé du rappel.
