Jakiej funkcji utraty należy użyć do wykrywania binarnego w wykrywaniu twarzy / bez twarzy w CNN?
11
Chcę użyć głębokiego uczenia się, aby trenować wykrywanie binarne twarzy / twarzy, jakiej straty powinienem użyć, myślę, że to SigmoidCrossEntropyLoss lub utrata zawiasów .
Zgadza się, ale zastanawiam się też, czy powinienem używać softmax, ale tylko z dwiema klasami?
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
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.
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.
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.
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).
sigmoid
(jako aktywacja ostatniej warstwy). DziękiNa 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.
źródło
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.
źródło
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).
źródło