Quelle fonction de perte dois-je utiliser pour la détection binaire dans la détection faciale / non faciale dans CNN?
11
Je veux utiliser l'apprentissage en profondeur pour former une détection binaire visage / non-visage, quelle perte dois-je utiliser, je pense que c'est SigmoidCrossEntropyLoss ou Hinge-loss .
Est-ce vrai, mais je me demande aussi si je devrais utiliser softmax mais avec seulement deux classes?
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.
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.
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.
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).
sigmoid
(comme l'activation de la dernière couche). MerciVous 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.
la source
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.
la source
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).
la source