Kiedy trenujesz sieci neuronowe segmentujące piksele, takie jak sieci w pełni splotowe, jak podejmiesz decyzję o zastosowaniu funkcji utraty krzyżowej entropii w porównaniu z funkcją utraty współczynnika kości?
Zdaję sobie sprawę, że to krótkie pytanie, ale nie jestem pewien, jakie inne informacje podać. Przejrzałem całą dokumentację na temat dwóch funkcji utraty, ale nie mam intuicyjnego pojęcia, kiedy używać jednej z nich.
neural-networks
loss-functions
cross-entropy
chrześcijanin
źródło
źródło
Odpowiedzi:
Jednym z istotnych powodów zastosowania entropii krzyżowej w stosunku do współczynnika kości lub podobnej miary IoU jest to, że gradienty są ładniejsze.
Gradienty entropii krzyżowej w logitach przypominają , gdzie jest wyjściami softmax, a jest celem. Tymczasem, jeśli spróbujemy zapisać współczynnik kości w różnej postaci: lub , to uzyskane gradienty wrt są znacznie brzydsze : i . Łatwo jest wyobrazić sobie przypadek, w którym oba i są małe, a gradient wzmaga się do ogromnej wartości. Zasadniczo wydaje się prawdopodobne, że trening stanie się bardziej niestabilny.p - t t 2 p tp t 2pt2 P tp2)+ t2) p2t22 P tp + t p 2t(t2-p2)2 t2)( p + t )2) pt2 t ( t2)- p2))( p2)+ t2))2) p t
Głównym powodem, dla którego ludzie próbują bezpośrednio zastosować współczynnik kości lub IoU, jest fakt, że faktycznym celem jest maksymalizacja tych wskaźników, a entropia krzyżowa to tylko proxy, które łatwiej jest zmaksymalizować za pomocą propagacji wstecznej. Ponadto współczynnik kości od samego początku lepiej sprawdza się w przypadku problemów niezrównoważonych klas:
Jednak nierównowaga klas jest zazwyczaj rozwiązywana po prostu przez przypisanie mnożników strat do każdej klasy, tak że sieć jest wysoce zniechęcona do po prostu ignorowania klasy, która pojawia się rzadko, więc nie jest jasne, czy współczynnik kości jest naprawdę niezbędny w takich przypadkach.
Zacznę od utraty entropii krzyżowej, która wydaje się być standardową stratą dla sieci segmentacji szkolenia, chyba że istniał naprawdę ważny powód, aby użyć współczynnika kości.
źródło
Jak podsumowali @shimao i @cherub, nie można powiedzieć apriori, który z nich będzie działał lepiej na danym zbiorze danych. Prawidłowym sposobem jest wypróbowanie obu i porównanie wyników. Zauważ też, że jeśli chodzi o segmentację, „porównywanie wyników” nie jest takie proste : miary oparte na IoU, takie jak współczynnik kości, obejmują tylko niektóre aspekty jakości segmentacji; w niektórych zastosowaniach należy zastosować różne miary, takie jak średnia odległość od powierzchni lub odległość od powierzchni Hausdorffa . Jak widać, nawet wybór właściwej metryki jakości nie jest trywialny, nie mówiąc już o wyborze najlepszej funkcji kosztu.
Ja osobiście mam bardzo dobre doświadczenie ze współczynnikiem kości; naprawdę robi cuda, jeśli chodzi o nierównowagę klas (niektóre segmenty zajmują mniej pikseli / wokseli niż inne). Z drugiej strony krzywa błędu treningu staje się całkowitym bałaganem: nie dała mi absolutnie żadnych informacji o zbieżności, więc pod tym względem wygrywa entropia krzyżowa. Oczywiście można to / należy obejść, sprawdzając mimo to błąd sprawdzania poprawności.
źródło