Comment interpréter la «perte» et la «précision» pour un modèle d'apprentissage automatique

201

Lorsque j'entraînerai mon réseau de neurones avec Theano ou Tensorflow, ils rapporteront une variable appelée "perte" par époque.

Comment dois-je interpréter cette variable? Une perte plus élevée est meilleure ou pire, ou qu'est-ce que cela signifie pour les performances finales (précision) de mon réseau de neurones?

Mamatv
la source

Réponses:

284

Plus la perte est faible , meilleur est le modèle (à moins que le modèle ne soit trop adapté aux données d'entraînement). La perte est calculée lors de la formation et de la validation et son interaction est la performance du modèle pour ces deux ensembles. Contrairement à la précision, la perte n'est pas un pourcentage. Il s'agit d'une somme des erreurs commises pour chaque exemple dans les ensembles de formation ou de validation.

Dans le cas des réseaux de neurones, la perte est généralement un log-vraisemblance négatif et une somme résiduelle de carrés pour la classification et la régression respectivement. Ensuite, naturellement, l'objectif principal d'un modèle d'apprentissage est de réduire (minimiser) la valeur de la fonction de perte par rapport aux paramètres du modèle en modifiant les valeurs du vecteur de poids par différentes méthodes d'optimisation, telles que la rétropropagation dans les réseaux de neurones.

La valeur de perte implique la façon dont un certain modèle se comporte bien ou mal après chaque itération d'optimisation. Idéalement, on s'attendrait à une réduction de la perte après chaque ou plusieurs itérations.

La précision d'un modèle est généralement déterminée après que les paramètres du modèle ont été appris et fixés et qu'aucun apprentissage n'a lieu. Ensuite, les échantillons de test sont introduits dans le modèle et le nombre d'erreurs (perte nulle) que le modèle commet est enregistré, après comparaison avec les vraies cibles. Ensuite, le pourcentage de classification erronée est calculé.

Par exemple, si le nombre d'échantillons de test est de 1000 et que le modèle classe correctement 952 d'entre eux, la précision du modèle est de 95,2%.

entrez la description de l'image ici

Il y a aussi quelques subtilités tout en réduisant la valeur de perte. Par exemple, vous pouvez rencontrer le problème de sur-ajustement dans lequel le modèle "mémorise" les exemples de formation et devient un peu inefficace pour l'ensemble de test. Un sur-ajustement se produit également dans les cas où vous n'utilisez pas de régularisation , vous avez un modèle très complexe (le nombre de paramètres libres West important) ou le nombre de points de données Nest très faible.

Amir
la source
2
Salut @Amir, merci pour votre explication très détaillée. Cependant, j'ai un problème: dans mon réseau de neurones, la perte diminue toujours lorsque je m'entraîne (lorsque les époques augmentent), mais la précision n'est pas meilleure.
mamatv
8
@mamatv Tant que le coût diminue, vous devriez être prêt à partir. Bien que le coût et la précision aient normalement une relation de proportionnalité inverse, vous pouvez noter que la précision est une somme de zéro à une erreur tandis que le coût est une somme de nombres à virgule flottante. Par conséquent, une diminution de 0,001% du coût ne signifie pas nécessairement une augmentation de 0,001% de la précision. Augmenter la précision est beaucoup plus difficile lorsque la diminution du coût est intangible (le coût est très proche d'un minimum local)
Amir
2
@mamatv J'aurais dû dire que tant que le coût de la formation et de la validation diminue, vous devriez être prêt à partir. Vous pouvez également vérifier l'exactitude de la validation à chaque époque. S'il commence à monter, alors votre modèle a peut-être commencé à sur-ajuster et vous devez arrêter de l'entraîner.
Amir
1
Pourquoi ne pas former le modèle pour augmenter la précision plutôt que pour minimiser les pertes?
bikashg
2
La précision de @bikashg n'est pas différentiable et vous ne pouvez donc pas en faire un backprop.
DharmaTurtle
23

Ce sont deux mesures différentes pour évaluer les performances de votre modèle, généralement utilisées dans différentes phases.

La perte est souvent utilisée dans le processus de formation pour trouver les «meilleures» valeurs de paramètres pour votre modèle (par exemple, les poids dans le réseau neuronal). C'est ce que vous essayez d'optimiser dans la formation en mettant à jour les poids.

La précision est plus d'un point de vue appliqué. Une fois que vous avez trouvé les paramètres optimisés ci-dessus, vous utilisez ces métriques pour évaluer la précision de la prévision de votre modèle par rapport aux vraies données.

Prenons un exemple de classification des jouets. Vous voulez prédire le sexe à partir de son poids et de sa taille. Vous avez 3 données, elles sont les suivantes: (0 signifie homme, 1 signifie femme)

y1 = 0, x1_w = 50kg, x2_h = 160cm;

y2 = 0, x2_w = 60kg, x2_h = 170cm;

y3 = 1, x3_w = 55 kg, x3_h = 175 cm;

Vous utilisez un modèle de régression logistique simple qui est y = 1 / (1 + exp- (b1 * x_w + b2 * x_h))

Comment trouvez-vous b1 et b2? vous définissez d'abord une perte et utilisez une méthode d'optimisation pour minimiser la perte de manière itérative en mettant à jour b1 et b2.

Dans notre exemple, une perte typique pour ce problème de classification binaire peut être: (un signe moins doit être ajouté devant le signe de sommation)

Nous ne savons pas ce que devraient être b1 et b2. Supposons au hasard que b1 = 0,1 et b2 = -0,03. Alors quelle est notre perte maintenant?

donc la perte est

Ensuite, votre algorithme d'apprentissage (par exemple la descente de gradient) trouvera un moyen de mettre à jour b1 et b2 pour diminuer la perte.

Et si b1 = 0,1 et b2 = -0,03 sont les b1 et b2 finaux (sortie de la descente de gradient), quelle est la précision maintenant?

Supposons que si y_hat> = 0,5, nous décidons que notre prédiction est féminine (1). sinon, ce serait 0. Par conséquent, notre algorithme prédit y1 = 1, y2 = 1 et y3 = 1. Quelle est notre précision? Nous faisons une mauvaise prédiction sur y1 et y2 et faisons une bonne sur y3. Alors maintenant, notre précision est de 1/3 = 33,33%

PS: Dans la réponse d'Amir, la rétropropagation serait une méthode d'optimisation en NN. Je pense que ce serait traité comme un moyen de trouver un gradient pour les poids en NN. La méthode d'optimisation commune dans NN est GradientDescent et Adam.

Indécis
la source
merci pour le calcul. cela a aidé à clarifier le concept.
Finn Frotscher
6

@Aadnan Juste pour clarifier les ensembles de données de formation / validation / test: l'ensemble de formation est utilisé pour effectuer la formation initiale du modèle, initialisant les poids du réseau neuronal.

L'ensemble de validation est utilisé après que le réseau neuronal a été formé. Il est utilisé pour régler les hyperparamètres du réseau et comparer la façon dont les modifications apportées à ces paramètres affectent la précision prédictive du modèle. Alors que l'ensemble d'apprentissage peut être considéré comme étant utilisé pour construire les poids de porte du réseau neuronal, l'ensemble de validation permet un réglage fin des paramètres ou de l'architecture du modèle de réseau neuronal. Il est utile car il permet une comparaison répétable de ces différents paramètres / architectures avec les mêmes données et poids des réseaux, pour observer comment les changements de paramètres / architecture affectent la puissance prédictive du réseau.

Ensuite, l'ensemble de test est utilisé uniquement pour tester la précision prédictive du réseau neuronal formé sur des données précédemment invisibles, après la formation et la sélection des paramètres / architecture avec les ensembles de données de formation et de validation.

Jon
la source