Dans les implémentations d'apprentissage approfondies liées à la détection d'objet et à la segmentation sémantique, j'ai vu les couches de sortie en utilisant sigmoïde ou softmax. Je ne suis pas très clair quand utiliser lequel? Il me semble que les deux peuvent prendre en charge ces tâches. Existe-t-il des directives pour ce choix?
softmax()
vous aide lorsque vous voulez une distribution de probabilité, qui totalise jusqu'à 1. sigmoid
est utilisée lorsque vous voulez que la sortie varie entre 0 et 1, sans que la somme ne soit pas égale à 1.
Dans votre cas, vous souhaitez classer et choisir entre deux alternatives. Je recommanderais d'utiliser softmax()
car vous obtiendrez une distribution de probabilité sur laquelle vous pouvez appliquer la fonction de perte d'entropie croisée.
En général, Softmax est utilisé (classificateur Softmax) quand il y a «n» classes. Sigmoid ou softmax peuvent être utilisés pour la classification binaire (n = 2).
Sigmoïde: S(x) = 1/(1+ (e ^ (- x)))
Softmax:
σ(x)j = e / **Σ**{k=1 to K} e^zk for(j=1.....K)
Softmax est une sorte de multi-classe sigmoïde, mais si vous voyez la fonction de Softmax, la somme de toutes les unités softmax est supposée être égale à 1. En sigmoïde, ce n’est pas vraiment nécessaire.
Pour creuser plus en profondeur, vous pouvez également utiliser sigmoid pour la classification multi-classes. Lorsque vous utilisez une variable logicielle, vous obtenez essentiellement une probabilité de chaque classe (distribution de la jointure et probabilité multinomiale) dont la somme est forcément égale à un. Si vous utilisez sigmoid pour la classification multi-classes, cela ressemblerait à une distribution marginale et à une probabilité de Bernoulli, p(y0/x), p(y1/x) etc.
La détection d'objet est la classification d'objet utilisée sur une fenêtre glissante dans l'image. Dans la classification, il est important de trouver la sortie correcte dans un espace de classe. Par exemple. vous détectez 10 objets différents et vous voulez savoir quel objet est le plus probable. Alors softmax est bon en raison de sa probabilité que la couche entière totalise jusqu'à 1.
D'autre part, la segmentation sémantique segmente l'image. J'ai effectué une segmentation médicale sémantique et la sortie est une image binaire. Cela signifie que vous pouvez avoir sigmoid en sortie pour prédire si ce pixel appartient à cette classe spécifique, car les valeurs sigmoïdes sont comprises entre 0 et 1 pour chaque classe en sortie.