Quelle fonction de perte dois-je utiliser pour la détection binaire dans la détection faciale / non faciale dans CNN?

Réponses:

9

La perte de charnière et l'entropie croisée ont généralement des résultats similaires. Voici un autre article comparant différentes fonctions de perte Quels sont les impacts du choix de différentes fonctions de perte dans la classification pour approximer la perte 0-1 .

Est-ce vrai, mais je me demande aussi si je devrais utiliser softmax mais avec seulement deux classes?

Softmax n'est pas une perte mais une fonction de normalisation, il est souvent utilisé avec la perte d'entropie croisée, qui est essentiellement équivalente à SigmoidCrossEntropyLoss. Voir aussi Entropie croisée ou Log Log vraisemblance dans la couche de sortie

dontloo
la source
7

En général, lorsque vous rencontrez un problème où l'échantillon ne peut appartenir qu'à une seule classe parmi un ensemble de classes, vous définissez la dernière couche comme une couche soft-max. Il vous permet d'interpréter les sorties comme des probabilités. Lors de l'utilisation d'une couche soft-max, l'entropie croisée fonctionne généralement très bien, car le terme logarithmique dans l'entropie croisée annule le plateau présent dans la fonction soft-max, accélérant ainsi le processus d'apprentissage (pensez aux points éloignés à partir de dans la fonction sigmoïde).0

Dans votre cas, vous avez une tâche de classification binaire, donc votre couche de sortie peut être le sigmoïde standard (où la sortie représente la probabilité qu'un échantillon de test soit un visage). La perte que vous utiliseriez serait une entropie croisée binaire. Avec cette configuration, vous pouvez imaginer avoir une régression logistique à la dernière couche de votre réseau neuronal profond.

Voici quelques liens pour vous. J'espère qu'ils vous aideront.
https://en.wikipedia.org/wiki/Cross_entropy#Cross-entropy_error_function_and_logistic_regression
http://neuralnetworksanddeeplearning.com/chap3.html
https://www.quora.com/How-do-you-decide-which-loss- fonction à utiliser pour l'apprentissage machine

Armen Aghajanyan
la source
Pourriez-vous s'il vous plaît faire la lumière sur la régression logistique à la dernière couche d'un DNN? J'ai lu les articles mais je ne vois pas vraiment l'utilité sigmoid(comme l'activation de la dernière couche). Merci
bit_scientist
2

Vous pouvez certainement utiliser softmax avec seulement 2 classes "Face" et "Not Face" et interpréter la sortie softmax comme des scores de confiance, ce qui est une fonctionnalité intéressante pour obtenir une intuition sur votre réseau profond.

Essayez à la fois softmax 2 classes et perte de charnière binaire. Il y a un article récent Deep Learning using Linear Support Vector Machines utilisant un SVM au lieu d'un classificateur softmax au-dessus des réseaux de convection profonds et il y a là des résultats prometteurs.

Indie AI
la source
2

Habituellement, la perte logarithmique serait le choix préféré, utilisé en combinaison avec une seule unité de sortie. La perte logarithmique est également appelée entropie croisée binaire, car il s'agit d'un cas particulier d'entropie croisée fonctionnant uniquement sur deux classes.

elgehelge
la source
Vous devez mettre à jour votre premier lien.
nbro
0

Théoriquement, un softmax avec 2 classes peut être réécrit en sigmoïde, il ne devrait donc pas y avoir de différence de résultats entre les deux. En pratique, comme @dontloo l'a mentionné, le nombre de paramètres dans la couche de sortie serait double (je ne sais pas si cela pourrait entraîner des problèmes de surajustement), et bien sûr, vous auriez 2 scores pour les deux classes (Face et Non_Face).

aknnka
la source