Réseaux de neurones - Corrélation de perte et de précision

11

Je suis un peu confus par la coexistence de métriques de perte et de précision dans les réseaux neuronaux. Les deux sont censés rendre la « rigueur » de la comparaison y et y , sont - ils pas? Alors, l'application des deux n'est-elle pas redondante dans les périodes d'entraînement? De plus, pourquoi ne sont-ils pas corrélés?y^

Hendrik
la source

Réponses:

9

La perte de journal a la belle propriété d'être une fonction différenciable. La précision peut être plus importante et est certainement plus interprétable mais n'est pas directement utilisable dans la formation du réseau en raison de l'algorithme de rétropropagation qui nécessite que la fonction de perte soit différenciable. Lorsque votre perte préférée n'est pas directement optimisable (comme la précision), vous utilisez une fonction de perte qui se comporte de manière similaire pour représenter la vraie métrique. En cas de classification binaire, vous utiliseriez un sigmoïde à la fin et une perte de journal pour approximer la précision. Ils sont fortement corrélés.

Jan van der Vegt
la source
6

La perte est plus générale que la précision. En classification, vous pouvez atteindre une précision de 100%, où toutes les étiquettes sont prédites correctement. Mais qu'en est-il de la régression ou des prévisions? Il n'y a pas de définition de 0% et 100%

|yhunet-y|

rilut
la source
0

Oui, ils mesurent tous deux l'exactitude de y et y_hat et oui, ils sont généralement corrélés. Parfois, la fonction de perte peut ne pas être la précision, mais vous souhaitez toujours mesurer la précision même si vous ne l'optimisez pas directement. L'exemple TensorFlow MNIST de Google minimise / optimise la perte d'entropie croisée mais affiche la précision à l'utilisateur lors de la communication des résultats, ce qui est tout à fait correct.

Parfois, vous ne voulez pas optimiser directement la précision. Par exemple, si vous avez un grave déséquilibre de classe, votre modèle maximisera la précision en choisissant toujours la classe la plus courante, mais ce ne serait pas un modèle utile. Dans ce cas, l'entropie / perte de log serait une meilleure fonction de perte à optimiser.

Ryan Zotti
la source
7
Plus important encore, la précision n'est pas une fonction différenciable, vous ne pouvez donc pas rétropropager à travers elle.
Jan van der Vegt
@JanvanderVegt Oui, c'est un excellent point
Ryan Zotti
J'ai appris que dans Keras, je peux mettre une métrique d'évaluation "personnalisée" (par personnalisé dans ce cas, je veux dire qu'aucune implémentation intégrée dans Keras, comme AUC ou F1-Score) dans la fonction de compilation. Je suppose que dans ce cas, ces métriques "personnalisées" seront utilisées / affichées au lieu de Précision partout où le show_accuracyparamètre est défini sur True (comme lors de l'ajustement ou de l'évaluation). Est-ce exact?
Hendrik
1
@Hendrik oui vous pouvez, il suffit de créer une def your_own_metric(y_true, y_pred)fonction et de la passer àmodel.compile(..., metrics=[your_own_metric])
rilut