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?

37
demandé sur AizuddinAzman 2017-05-11 06:30:20

1 réponses

early stopping

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;

  1. Moniteur de la validation de la perte (besoin d'utiliser Croix validation ou au moins train / test set) en réglant le monitor argument de 'val_loss'.
  2. min_delta est 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.
  3. patience argument 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 grand patience argument. 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 petit patience argument. D'une façon ou d'une autre, je le laisse à 2. donnez plus de chance au mannequin.
  4. verbose décide ce qui pour imprimer, laissez le à default (0).
  5. mode l'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 utiliser min. Mais laissons keras poignée pour nous et définir auto

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.

64
répondu umutto 2017-10-18 07:29:56