Keras Arrêt Précoce
Je suis à l'entraînement du réseau de neurones pour mon projet à l'aide de Keras. Keras a fourni une fonction pour le début de l'arrêt. Pourrais-je savoir quels sont les paramètres qui doivent être respectées afin d'éviter que le réseau de neurones à partir de surajustement en utilisant début de l'arrêt?
Vous devez vous connecter pour publier un commentaire.
Arrêt précoce est essentiellement l'arrêt de la formation une fois que votre perte commence à augmenter (ou en d'autres termes de précision de validation commence à diminuer). Selon documents il est utilisé comme suit;
Valeurs dépend de votre mise en œuvre (problème, la taille des lots, etc...) mais en général, pour éviter le surajustement je voudrais utiliser;
la validation ou au moins de train/jeux de test) par la mise en au
monitor
argument pour
'val_loss'
.min_delta
est un seuil à quantifier si une perte à une certaine époque commeune amélioration ou non. Si la différence de perte est en dessous de
min_delta
, il est quantifiéecomme aucune amélioration. Mieux vaut laisser à 0 puisque nous sommes intéressés à
lorsque la perte devient de pire en pire.
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).Cela dépend de votre application, si vous utilisez de très petits lots
ou un grand au taux d'apprentissage votre perte zigzag (précision sera plus bruyant) afin de mieux définir une
grand
patience
argument. Si vous utilisez de grands lots et un petitl'apprentissage des taux votre perte sera plus facile de sorte que vous pouvez utiliser un
les petits
patience
argument. De toute façon, je vais le laisser comme 2 je voudrais doncdonner le modèle plus de chance.
verbose
décide d'impression, il laisse à la valeur par défaut (0).mode
argument dépend de ce que la direction de votre surveillé la quantitéa (est-il censé être en hausse ou en baisse), puisque nous surveiller la perte, nous pouvons utiliser
min
. Mais laissons keraspoignée pour nous et ensemble que pour
auto
Je voudrais donc utiliser quelque chose comme cela et expérience en traçant l'erreur de perte avec et sans arrêt précoce.
Pour ambiguïté possible sur la façon dont les rappels de travail, je vais essayer d'expliquer plus. Une fois que vous appelez
fit(... callbacks=[es])
sur votre modèle, Keras appels donné rappel des objets prédéterminés fonctions. Ces fonctions peuvent être appeléeson_train_begin
,on_train_end
,on_epoch_begin
,on_epoch_end
eton_batch_begin
,on_batch_end
. Arrêt précoce de callback qui est appelée à chaque époque fin, compare le meilleur contrôle de la valeur avec l'actuel et s'arrête si les conditions sont remplies (combien de temps ont passé depuis que l'observation d'un meilleur contrôle de la valeur et de la plus que de la patience argument, la différence entre la dernière valeur est plus grande que min_delta etc..).Comme indiqué par @BrentFaust dans les commentaires, le modèle de formation se poursuivra jusqu'à Début de l'Arrêt de conditions sont réunies, ou
epochs
paramètre (par défaut=10) dansfit()
est satisfait. La fixation d'un Arrêt Précoce de rappel ne fera pas le modèle à former au-delà de sesepochs
paramètre. Afin de l'appelantfit()
fonction avec une plus grandeepochs
valeur serait plus utile d'Arrêt Précoce de rappel.min_delta
est un seuil à savoir si le quantifier la variation de surveiller la valeur comme une amélioration ou pas. Donc oui, si nous donnonsmonitor = 'val_loss'
puis il renvoie à la différence entre le courant de la validation de la perte et de la validation antérieure de la perte. Dans la pratique, si vous donnezmin_delta=0.1
une diminution de la validation de la perte (du courant précédent) plus petites que 0,1 serait pas quantifier, ce qui permettrait de stopper la formation (si vous avezpatience = 0
).val_loss
mais il est utile que si vous utilisez un bon modèle) cesse de les améliorer, en raison peut-être que votre taux d'apprentissage est trop agressif ou de votre perte de fonction n'est pas assez précise pour traverser vers le bas pour une optima etc.. I. E la perte commence à être bruyant ou augmenter. L'apprentissage du taux de désintégration de l'aide avec cela. Vous pouvez utiliserdecay
paramètre sur votre optimizer ou de l'installation d'un apprentissage du taux de planificateur rappel dans keras.callbacks=[EarlyStopping(patience=2)]
n'a aucun effet, sauf si les temps est donné àmodel.fit(..., epochs=max_epochs)
.model.fit
permettra d'effectuer de nombreuses époques, par défaut. Offrant une EarlyStopping de rappel, avec une patience valeur ne sera pas causer de continuer la formation de passé par défaut du point d'arrêt, à moins queepochs
est donné. De cette façon, vous forcer à garder la formation, à moins que le EarlyStopping conditions sont remplies.epoch=1
dans une boucle for (pour les différents cas d'utilisation) dans lequel ce rappel serait un échec. Si il existe une ambiguïté dans ma réponse, je vais essayer de le mettre dans une meilleure façon.model.fit
retour le meilleur modèle ou celui sur lequel la formation s'est arrêté (finale époque formés)?restore_best_weights
argument (pas sur la documentation encore), qui charge le modèle avec le meilleur poids après la formation. Mais, pour vous, je voudrais utiliser lesModelCheckpoint
rappel avecsave_best_only
argument. Vous pouvez vérifier la documentation, il est simple à utiliser, mais vous avez besoin de charger manuellement les meilleurs poids après la formation.ModelCheckpoint
callback dans le temps de le dire.