Jakiej funkcji utraty należy użyć do wykrywania binarnego w wykrywaniu twarzy / bez twarzy w CNN?

Odpowiedzi:

9

Stwierdzono, że utrata zawiasu i entropia krzyżowa mają podobne wyniki. Oto kolejny post porównujący różne funkcje strat Jakie są skutki wyboru różnych funkcji strat w klasyfikacji do przybliżonej straty 0-1 .

Zgadza się, ale zastanawiam się też, czy powinienem używać softmax, ale tylko z dwiema klasami?

Softmax nie jest stratą, ale funkcją normalizacyjną, często stosuje się ją razem ze stratą entropii krzyżowej, która jest zasadniczo równoważna SigmoidCrossEntropyLoss. Zobacz także Cross-Entropy lub Log Likelihood w warstwie Output

dontloo
źródło
7

Zasadniczo, gdy masz problem z tym, że próbka może należeć tylko do jednej klasy spośród zestawu klas, ustawisz ostatnią warstwę jako warstwę miękko-maksymalną. Pozwala interpretować dane wyjściowe jako prawdopodobieństwa. Podczas korzystania z warstwy soft-max, entropia krzyżowa na ogół działa bardzo dobrze, ponieważ logarytmiczny element w entropii krzyżowej znosi plateau występujący w funkcji soft-max, przyspieszając w ten sposób proces uczenia się (pomyśl o punktach daleko od w funkcji sigmoidalnej).0

W twoim przypadku masz zadanie klasyfikacji binarnej, dlatego twoja warstwa wyjściowa może być standardową sigmoidą (gdzie wyjście reprezentuje prawdopodobieństwo, że próbka testowa jest twarzą). Stratą, której byś użył, byłaby binarna entropia krzyżowa. Dzięki tej konfiguracji możesz sobie wyobrazić regresję logistyczną na ostatniej warstwie głębokiej sieci neuronowej.

Oto kilka linków do ciebie. Mam nadzieję, że pomogą.
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- funkcja do wykorzystania w uczeniu maszynowym

Armen Aghajanyan
źródło
Czy możesz rzucić nieco światła na regresję logistyczną na ostatniej warstwie DNN? Przeczytałem posty, ale tak naprawdę nie widzę użyteczności sigmoid(jako aktywacja ostatniej warstwy). Dzięki
bit_scientist,
2

Na pewno możesz użyć softmax z tylko 2 klasami „Face” i „Not Face” i zinterpretować wynik softmax jako wyniki ufności, co jest przyjemną cechą, aby uzyskać intuicję na temat głębokiej sieci.

Wypróbuj zarówno klasę softmax, jak i binarną utratę zawiasów. Jest najnowszy artykuł Głębokie uczenie się przy użyciu liniowych maszyn wektorów wsparcia z wykorzystaniem SVM zamiast klasyfikatora softmax na głębokich sieciach konwekcyjnych i są tam obiecujące wyniki.

Indie AI
źródło
2

Zwykle preferowanym wyborem byłaby strata logarytmiczna, stosowana w połączeniu z tylko jedną jednostką wyjściową. Strata logarytmiczna nazywana jest również binarną entropią krzyżową, ponieważ jest to szczególny przypadek entropii krzyżowej działającej tylko na dwóch klasach.

elgehelge
źródło
Powinieneś zaktualizować swój pierwszy link.
nbro
0

Teoretycznie softmax z 2 klasami można przepisać jako sigmoid, dlatego nie powinno być różnicy w wynikach między nimi. Praktycznie, jak wspomniano @dontloo, liczba parametrów w warstwie wyjściowej byłaby podwójna (nie jestem pewien, czy może to doprowadzić do problemów z przeregulowaniem), i oczywiście masz 2 wyniki dla dwóch klas (Face i Non_Face).

aknnka
źródło