Podczas szkolenia prostego klasyfikatora binarnego sieci neuronowej uzyskuję wysoką wartość stratności, używając entropii krzyżowej. Mimo to wartość dokładności zestawu sprawdzania poprawności jest całkiem dobra. Czy to ma jakieś znaczenie? Nie ma ścisłej korelacji między stratą a dokładnością?
Mam na szkoleniu i walidacji następujące wartości: 0,4011 - acc: 0,8224 - val_loss: 0,4577 - val_acc: 0,7826 . To moja pierwsza próba zaimplementowania NN i właśnie zbliżyłem się do uczenia maszynowego, więc nie jestem w stanie właściwie ocenić tych wyników.
neural-networks
accuracy
użytkownik146655
źródło
źródło
Odpowiedzi:
Wystąpił podobny problem.
Trenowałem mój binarny klasyfikator sieci neuronowej z utratą entropii krzyżowej. Oto wynik entropii krzyża w funkcji epoki. Czerwony oznacza zestaw treningowy, a niebieski zestaw testowy.
Pokazując dokładność, z zaskoczeniem uzyskałem lepszą dokładność dla epoki 1000 w porównaniu do epoki 50, nawet dla zestawu testowego!
Aby zrozumieć związki między entropią krzyżową a dokładnością, przekopałem się do prostszego modelu, regresji logistycznej (z jednym wejściem i jednym wyjściem). Poniżej zilustruję ten związek w 3 specjalnych przypadkach.
Zasadniczo parametr, w którym entropia krzyżowa jest minimalna, nie jest parametrem, w którym dokładność jest maksymalna. Możemy jednak oczekiwać pewnego związku między entropią krzyżową a dokładnością.
[Poniżej zakładam, że wiesz, co to jest entropia krzyżowa, dlaczego używamy jej zamiast dokładności do trenowania modelu itp. Jeśli nie, przeczytaj najpierw: Jak interpretować wynik entropii krzyżowej? ]
Ilustracja 1 Ten ma na celu pokazanie, że parametr, w którym entropia krzyżowa jest minimalna, nie jest parametrem, w którym dokładność jest maksymalna, i zrozumienie, dlaczego.
Oto moje przykładowe dane. Mam 5 punktów i na przykład wejście -1 prowadzi do wyjścia 0.
Krzyżowanie entropii. Po zminimalizowaniu entropii krzyżowej uzyskuję dokładność 0,6. Cięcia między 0 a 1 dokonuje się przy x = 0,52. Dla 5 wartości otrzymuję odpowiednio entropię krzyżową: 0,14, 0,30, 1,07, 0,97, 0,43.
Precyzja. Po zmaksymalizowaniu dokładności na siatce uzyskuję wiele różnych parametrów prowadzących do 0,8. Można to pokazać bezpośrednio, wybierając cięcie x = -0,1. Możesz także wybrać x = 0,95, aby wyciąć zestawy.
W pierwszym przypadku entropia krzyżowa jest duża. Rzeczywiście czwarty punkt jest daleko od cięcia, więc ma dużą entropię krzyża. Mianowicie, otrzymuję odpowiednio entropię krzyżową: 0,01, 0,31, 0,47, 5,01, 0,004.
W drugim przypadku entropia krzyżowa jest również duża. W takim przypadku trzeci punkt jest daleko od cięcia, więc ma dużą entropię krzyża. Otrzymuję odpowiednio krzyżową entropię: 5e-5, 2e-3, 4,81, 0,6, 0,6.
Myślę, że jeśli model ma wystarczającą pojemność (wystarczającą, aby pomieścić prawdziwy model), a jeśli dane są duże (tzn. Wielkość próbki idzie w nieskończoność), wówczas entropia krzyżowa może być minimalna, gdy dokładność jest maksymalna, przynajmniej dla modelu logistycznego . Nie mam na to dowodu, jeśli ktoś ma referencję, proszę się nią podzielić.
Bibliografia: Temat łączący entropię krzyżową z dokładnością jest interesujący i złożony, ale nie mogę znaleźć artykułów na ten temat ... Badanie dokładności jest interesujące, ponieważ pomimo niewłaściwej reguły punktacji, każdy może zrozumieć jej znaczenie.
Uwaga: Po pierwsze, chciałbym znaleźć odpowiedź na tej stronie, posty dotyczące związku między dokładnością a entropią krzyżową są liczne, ale z kilkoma odpowiedziami, patrz: Porównywanie trajektorii i krzyżowanie entropii testowych prowadzi do bardzo różnych dokładności ; Spadek utraty walidacji, ale pogorszenie dokładności walidacji ; Wątpliwości co do kategorycznej funkcji utraty entropii krzyżowej ; Interpretacja utraty dziennika jako procent ...
źródło
Należy również zauważyć, że entropia krzyżowa nie jest ograniczoną stratą. Co oznacza, że jedna bardzo błędna prognoza może potencjalnie spowodować, że Twoja strata „wybuchnie”. W tym sensie możliwe jest, że istnieje jedna lub kilka wartości odstających, które są wyjątkowo źle sklasyfikowane i powodują eksplozję straty, ale jednocześnie twój model uczy się na pozostałej części zestawu danych.
W poniższym przykładzie używam bardzo prostego zestawu danych, w którym występuje wartość odstająca w danych testowych. Istnieją 2 klasy „zero” i „jeden”.
Oto jak wygląda zestaw danych:
Jak widać, dwie klasy są wyjątkowo łatwe do rozdzielenia: powyżej 0,5 jest to klasa „zero”. Istnieje również pojedyncza wartość odstająca klasy „jeden” pośrodku klasy „zero” tylko w zestawie testowym. Ta wartość odstająca jest ważna, ponieważ zakłóca działanie funkcji utraty.
Trenuję 1 ukrytą sieć neuronową na tym zestawie danych, możesz zobaczyć wyniki:
Strata zaczyna rosnąć, ale dokładność nadal rośnie.
Wykreślenie histogramu funkcji utraty dla próbek pokazuje wyraźnie problem: utrata jest w rzeczywistości bardzo mała dla większości próbek (duży słupek przy 0) i jest jedna wartość odstająca z ogromną stratą (mały słupek przy 17). Ponieważ całkowita strata jest średnią, otrzymujesz wysoką stratę na tym secie, mimo że radzi sobie bardzo dobrze na wszystkich punktach oprócz jednego.
Premia: Kod danych i modelu
TL; DR
Twoja utrata może zostać przejęta przez kilka wartości odstających, sprawdź rozkład funkcji straty na poszczególnych próbkach zestawu walidacyjnego. Jeśli wokół średniej znajduje się skupisko wartości, oznacza to, że nadmiernie się dopasowujesz. Jeśli jest tylko kilka wartości bardzo wysokich powyżej grupy o niskiej większości, na twoją stratę wpływ mają wartości odstające :)
źródło
ahstat daje bardzo dobre ilustracje.
Zainspirowany tymi ilustracjami dochodzę do dwóch możliwych powodów. 1. Model jest zbyt prosty, aby wyodrębnić wymagane funkcje do prognozowania. Na ilustracji 1 jest to różnorodny problem i potrzeba jeszcze jednej warstwy, aby uzyskać 100% dokładności. 2. Dane mają zbyt wiele głośnych etykiet (porównaj ilustracje 1 i 3)
Jeśli chodzi o ilustrację 2, wyjaśnia, dlaczego nie możemy dodać zbyt dużej regularyzacji L1 / L2 w modelu.
źródło