Ich möchte Deep Learning verwenden, um eine binäre Erkennung von Gesichtern / Nicht-Gesichtern zu trainieren. Welchen Verlust soll ich verwenden ? Ich denke, es ist SigmoidCrossEntropyLoss oder Hinge-loss .
Stimmt das, aber ich frage mich auch, ob ich Softmax verwenden soll, aber nur mit zwei Klassen?
sigmoid
(als letzte Ebenenaktivierung). DankeSie könnten auf jeden Fall Softmax mit nur 2 Klassen "Face" und "Not Face" verwenden und die Softmax-Ausgabe als Vertrauenspunktzahl interpretieren. Dies ist eine nette Funktion, um sich ein Bild von Ihrem Deep Net zu machen.
Probieren Sie sowohl 2-Klassen-Softmax als auch binären Scharnierverlust aus. Es gibt ein aktuelles Papier Deep Learning mit Linear Support Vector Machines einen SVM anstelle eines softmax Klassifikator auf der tiefen konv Netze und es gibt einige viel versprechende Ergebnisse gibt.
quelle
Normalerweise ist der logarithmische Verlust die bevorzugte Wahl, wenn nur eine Ausgabeeinheit verwendet wird. Logarithmischer Verlust wird auch als binäre Kreuzentropie bezeichnet, da es sich um einen Sonderfall der Kreuzentropie handelt, der nur für zwei Klassen gilt.
quelle
Theoretisch kann ein Softmax mit 2 Klassen als Sigmoid umgeschrieben werden, daher sollte es keinen Unterschied in den Ergebnissen zwischen den beiden geben. Wie @dontloo bereits erwähnt hat, ist die Anzahl der Parameter in der Ausgabeebene doppelt so hoch (ich bin mir nicht sicher, ob dies zu Problemen bei der Überanpassung führen kann), und natürlich hätten Sie für die beiden Klassen (Face und Non_Face) zwei Punkte.
quelle