Comment interpréter "perte" et "précision" pour un modèle d'apprentissage automatique
Quand j'ai formé mon réseau neuronal 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 la performance finale (précision) de mon réseau de neurones?
3 réponses
Plus la perte est faible, meilleur est le modèle (à moins que le modèle ne soit trop ajusté aux données d'entraînement). La perte est calculée sur Formation etvalidation et son interpération est la façon dont le modèle fait pour ces deux ensembles. Contrairement à la précision, la perte n'est pas un pourcentage. Il s'agit d'une somme des erreurs faites 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 log-vraisemblance négative et somme résiduelle des carrés pour la classification et de régression respectivement. Ensuite, naturellement, l'objectif principal dans 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 changeant les valeurs de vecteur de poids grâce à différentes méthodes d'optimisation, telles que la rétropropagation dans les réseaux neuronaux.
La valeur de perte implique le bon ou le mauvais comportement d'un certain modèle après chaque itération d'optimisation. Idéalement, on pourrait s'attendre à l' 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 zéro-une) que le modèle fait est enregistré, après comparaison avec les vraies cibles. Ensuite, le pourcentage d'erreur de classification est calculé.
Par exemple, si le nombre d'échantillons d'essai est de 1000 et que le modèle Classe 952 de ceux-ci correctement, alors la précision du modèle est de 95,2%.
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 d'entraînement et devient un peu inefficace pour l'ensemble de tests. Un ajustement excessif 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 W
est grand) ou le nombre de points de données N
est très faible.
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 d'entraînement 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 mesures pour évaluer la précision de la prédiction de votre modèle comparé aux données vraies.
Utilisons 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 = 160 cm;
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 un la perte d'abord et utiliser la méthode d'optimisation pour minimiser la perte d'une 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 b1 et b2 devraient être. Faisons une supposition aléatoire disons b1 = 0.1 et b2 = -0.03. Alors, quelle est notre perte maintenant?
Y1_hat = 1/(1+exp{-(0.1*50-0.03*160)}) = 0.549834 = 0.55
Y2_hat = 1 / (1 + exp{-(0.1*60-0.03*170)}) = 0.7109495 = 0.71
Y3_hat = 1/(1+exp{-(0.1*55-0.03*175)}) = 0.5621765 = 0.56
De Sorte que la perte (-log(1-0.55) + log(1-0.71) - log(0.56)) = 2.6162
Ensuite, l'algorithme d'apprentissage (par exemple, descente de gradient) trouvera un moyen de mettre à jour b1 et b2 pour diminuer la perte.
Que faire si b1 = 0.1 et b2 = -0.03 est le b1 final et b2 (sortie de descente de gradient), Quelle est la précision maintenant?
Supposons que si y_hat > = 0.5, nous décidons de notre la 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 en faisons une correcte sur y3. Alors maintenant notre précision est 1/3 = 33.33%
PS: dans la réponse D'Amir, la rétroproduction est dite être une méthode d'optimisation dans NN. Je pense que ce serait traité comme un moyen de trouver un gradient pour les poids dans NN. Les méthodes d'optimisation courantes dans NN sont GradientDescent et Adam.
@Aadnan juste pour clarifier les ensembles de données de formation / Validation / Test: L'ensemble d'entraînement est utilisé pour effectuer l'entraînement initial du modèle, initialisant les poids du réseau neuronal.
L'ensemble de validation est utilisé après la formation du réseau neuronal. Il est utilisé pour régler les hyperparamètres du réseau et comparer la façon dont les modifications apportées affectent la précision prédictive du modèle. Alors que l'ensemble d'entraînement peut être considéré comme étant utilisé pour construire la porte du réseau de neurones poids, 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 par rapport aux mêmes poids de données et de 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 entraîné sur des données inédites, après l'entraînement et sélection de paramètres / architecture avec les ensembles de données de formation et de validation.