Arrêt précoce en cas de perte de validation ou d'exactitude?

10

Je forme actuellement un réseau de neurones et je ne peux pas décider lequel utiliser pour implémenter mes critères d'arrêt précoce: perte de validation ou une métrique comme précision / f1score / auc / quoi que ce soit calculé sur l'ensemble de validation.

Dans mes recherches, je suis tombé sur des articles défendant les deux points de vue. Keras semble avoir par défaut la perte de validation mais j'ai également trouvé des réponses convaincantes pour l'approche opposée (par exemple ici ).

Quelqu'un a-t-il des instructions sur l'utilisation de préférence de la perte de validation et sur l'utilisation d'une métrique spécifique?

qmeeus
la source

Réponses:

5

TLDR; Surveillez la perte plutôt que la précision

Je vais répondre à ma propre question car je pense que les réponses reçues ont manqué le point et que quelqu'un pourrait avoir le même problème un jour.

Tout d'abord, permettez-moi de clarifier rapidement que l'utilisation de l'arrêt précoce est parfaitement normale lors de la formation des réseaux de neurones (voir les sections pertinentes du livre Deep Learning de Goodfellow et al, la plupart des documents DL et la documentation du rappel EarlyStopping des keras).

Maintenant, concernant la quantité à surveiller: préférez la perte à la précision. Pourquoi? La perte quantifie la certitude du modèle par rapport à une prédiction (ayant fondamentalement une valeur proche de 1 dans la bonne classe et proche de 0 dans les autres classes). La précision explique simplement le nombre de prédictions correctes. De même, toutes les métriques utilisant des prédictions dures plutôt que des probabilités ont le même problème.

De toute évidence, quelles que soient les mesures que vous finissez par choisir, elles doivent être calculées sur un ensemble de validation et non sur un ensemble d'entraînement (sinon, vous manquez complètement le point d'utiliser EarlyStopping en premier lieu)

qmeeus
la source
Si les valeurs sont comprises entre 0 et 1, la cross_entropyperte est un candidat plus préférable que MSEou MAE. Consultez la section Récapitulatif de cet article et ce post sur les statistiques .
Esmailian
@Esmailian ce n'est pas une question de préférence; pour les problèmes de classification , MSE et MAE ne sont tout simplement pas appropriés.
desertnaut
4

À mon avis, c'est subjectif et spécifique au problème. Vous devriez utiliser le facteur le plus important dans votre esprit comme mesure de conduite, car cela pourrait rendre vos décisions sur la façon de mieux cibler le modèle.

La plupart des mesures que l'on peut calculer seront corrélées / similaires à bien des égards: par exemple, si vous utilisez MSE pour votre perte, puis enregistrez MAPE (erreur moyenne moyenne en pourcentage) ou simple perte , elles vous donneront des courbes de perte comparables.L1

Par exemple, si vous déclarez un score F1 dans votre rapport / à votre patron, etc. (et en supposant que c'est ce qui compte vraiment pour eux), alors utiliser cette métrique pourrait être plus logique. Le score F1, par exemple, prend en compte la précision et le rappel , c'est-à-dire qu'il décrit la relation entre deux mesures plus fines .

En réunissant ces éléments, le calcul des scores autres que la perte normale peut être utile pour la vue d'ensemble et pour voir comment votre métrique finale est optimisée au cours des itérations de formation. Cette relation pourrait peut-être vous donner un aperçu plus approfondi du problème,

Cependant, il est généralement préférable d'essayer plusieurs options, car l'optimisation de la perte de validation peut permettre à l'entraînement de durer plus longtemps, ce qui peut éventuellement produire un score F1 supérieur . La précision et le rappel peuvent osciller autour de certains minima locaux, produisant un score F1 presque statique - vous arrêteriez donc l'entraînement. Si vous aviez optimisé la perte pure, vous auriez peut-être enregistré suffisamment de fluctuations de perte pour vous permettre de vous entraîner plus longtemps.

n1k31t4
la source
Pourquoi l'utilisation de la perte de validation permettrait-elle une formation plus longue que l'utilisation d'une métrique? Pouvez-vous également expliquer la différence entre les deux options? Voyez-vous un cas où ce serait une mauvaise idée d'utiliser une métrique plutôt que la perte?
qmeeus
@ id-2205 - veuillez voir ma réponse modifiée.
n1k31t4
point intéressant! J'utilise actuellement la précision pour un arrêt précoce mais j'essaierai d'utiliser la perte de validation. Je ne m'attends cependant pas à des changements dans le processus de formation! Merci pour votre réponse
qmeeus
1

Je forme actuellement un réseau de neurones et je ne peux pas décider lequel utiliser pour implémenter mes critères d'arrêt précoce: perte de validation ou une métrique comme précision / f1score / auc / quoi que ce soit calculé sur l'ensemble de validation.

Si vous formez un réseau profond, je vous recommande fortement de ne pas utiliser l'arrêt précoce. Dans le deep learning, ce n'est pas très courant. Au lieu de cela, vous pouvez utiliser d'autres techniques comme l'abandon pour bien généraliser. Si vous insistez là-dessus, le choix du critère dépend de votre tâche. Si vous avez des données déséquilibrées, vous devez utiliser le F1score et l'évaluer sur vos données de validation croisée. Si vous disposez de données équilibrées, essayez d'utiliser la précision de vos données de validation croisée. D'autres techniques dépendent fortement de votre tâche.

Je vous encourage vivement à trouver un modèle qui correspond très bien à vos données et à abandonner après cela. C'est la chose la plus courante que les gens utilisent pour les modèles profonds.

Médias
la source
2
J'utilise également le décrochage. Cependant, je ne trouve pas de raison pour laquelle un arrêt précoce ne devrait pas être utilisé ...
qmeeus
L'arrêt précoce tente de résoudre à la fois les problèmes d'apprentissage et de généralisation. D'un autre côté, l'abandon essaie simplement de surmonter le problème de généralisation.
Médias
1
Vous ne répondez pas à ma question ... Je ne nie pas le fait que le décrochage est utile et devrait être utilisé pour se protéger contre le surapprentissage, je ne pourrais pas être plus d'accord là-dessus. Ma question est: pourquoi dites-vous que l'arrêt précoce ne devrait pas être utilisé avec ANN? (cf votre première phrase: Si vous
formez
Avez-vous lu mon dernier commentaire? Cela répond exactement à votre question. C'est une citation célèbre du pr. Ng dans sa classe d'apprentissage en profondeur, deuxième cours. Ce dernier cas est une tâche plus facile car il n'est pas difficile de résoudre simultanément plusieurs tâches.
Médias
3
Et pour le trouver et trouver le bon ensemble d'hyperparamètres, j'utilise une sorte de recherche de grille dirigée avec arrêt anticipé pour les raisons que j'ai expliquées ci-dessus. Point pris cependant et une fois que j'ai sélectionné le modèle final et que je vais le former, je n'utiliserai pas d'arrêt anticipé. Merci pour cette discussion intéressante et pour vos conseils
qmeeus