W MNIST For ML Beginners określają one jako entropię krzyżową
jest przewidywana wartość prawdopodobieństwa dla klasy í i y ' i jest prawdziwym prawdopodobieństwo dla tej klasy.
Pytanie 1
Nie jest to problem, który (w dzienniku ( y í ) ) może być 0? Oznaczałoby to, że mamy naprawdę zły klasyfikator. Ale pomyśl o błędzie w naszym zestawie danych, np. „Oczywistym” oznaczonym jako . Czy po prostu się zawiesi? Czy wybrany przez nas model (aktywacja softmax na końcu) w zasadzie nigdy nie podaje prawdopodobieństwa 0 dla właściwej klasy?1
3
pytanie 2
Nauczyłem się, że entropia krzyżowa jest zdefiniowana jako
Co jest poprawne? Czy masz jakieś odniesienia do podręczników dla którejkolwiek wersji? Czym różnią się te funkcje pod względem właściwości (jako funkcje błędów w sieciach neuronowych)?
źródło
Odpowiedzi:
Jednym ze sposobów interpretacji entropii krzyżowej jest postrzeganie jej jako (ujemnego) logarytmu prawdopodobieństwa dla danychy′i , zgodnie z modelem yi .
Załóżmy, że masz jakiś ustalony model (inaczej „hipoteza”), który przewiduje dlan klas {1,2,…,n} ich hipotetyczne prawdopodobieństwo wystąpienia y1,y2,…,yn . Załóżmy, że teraz obserwujesz (w rzeczywistości) k1 instancji klasy 1 , k2 instancji klasy 2 , kn instancji klasy n itd. Według twojego modelu prawdopodobieństwo takiego zdarzenia wynosi:
P[data|model]:=yk11yk22…yknn.
Biorąc logarytm i zmieniając znak:
−logP[data|model]=−k1logy1−k2logy2−⋯−knlogyn=−∑ikilogyi
Jeśli teraz podzielisz sumę po prawej stronie przez liczbę obserwacjiN=k1+k2+⋯+kn i oznacz prawdopodobieństwo empiryczne gdyy′i=ki/N , otrzymasz entropię krzyżową:
−1NlogP[data|model]=−1N∑ikilogyi=−∑iy′ilogyi=:H(y′,y)
Ponadto prawdopodobieństwo logarytmiczne zbioru danych dla danego modelu można interpretować jako miarę „długości kodowania” - liczby bitów, które spodziewasz się wydać, aby zakodować te informacje, jeśli schemat kodowania byłby oparty na twojej hipotezie.
Jest to zgodne z obserwacją, że zdarzenie niezależne z prawdopodobieństwemyi wymaga co najmniej −log2yi bity kodować (zakładając skutecznego kodowania), a tym samym ekspresję
−∑iy′ilog2yi,
dosłownie oczekiwany długość kodowania, gdzie długości kodowania zdarzeń są obliczane przy użyciu rozkładu „hipotetycznego”, podczas gdy oczekiwanie jest przejmowane przez rzeczywiste.
Wreszcie, zamiast mówić „miara oczekiwanej długości kodowania”, naprawdę lubię używać nieformalnego terminu „miara zaskoczenia”. Jeśli potrzebujesz wielu bitów do zakodowania oczekiwanego zdarzenia z dystrybucji, dystrybucja jest dla ciebie „naprawdę zaskakująca”.
Mając na uwadze te intuicje, odpowiedzi na pytania można zobaczyć w następujący sposób:
Pytanie 1 . Tak. Jest to problem, gdy odpowiadającey′i jest niezerowe w tym samym czasie . Odpowiada to sytuacji, w której model uważa, że niektóre klasy mają zerowe prawdopodobieństwo wystąpienia, a jednak klasa pojawia się w rzeczywistości. W rezultacie „niespodzianka” twojego modelu jest nieskończenie wielka: twój model nie uwzględnił tego zdarzenia i teraz potrzebuje nieskończenie wielu bitów, aby go zakodować. Właśnie dlatego otrzymujesz nieskończoność jako swoją entropię krzyżową.
Aby uniknąć tego problemu, musisz upewnić się, że Twój model nie przyjmuje pochopnych założeń, że coś jest niemożliwe, dopóki może się to zdarzyć. W rzeczywistości ludzie używają funkcji sigmoidalnych lub „softmax” jako modeli hipotez, które są wystarczająco zachowawcze, aby pozostawić przynajmniej trochę szansy na każdą opcję.
Jeśli użyjesz jakiegoś innego modelu hipotezy, to od Ciebie zależy uregulowanie go (inaczej „wygładzenie”), aby nie hipotezowało zer w miejscach, w których nie powinno.
Pytanie 2 . W tym wzorze, zwykle przyjmuje sięy′i być albo 0 albo 1 , a yi prawdopodobieństwo, hipotezę modelu dla odpowiedniego wejścia. Jeśli przyjrzysz się uważnie, zobaczysz, że jest to po prostu −logP[data|model] dla danych binarnych, odpowiednik drugiego równania w tej odpowiedzi.
źródło
Oznacza to, że formuła wychwytuje błąd tylko w klasie docelowej. Odrzuca wszelkie pojęcia błędów, które można uznać za „fałszywie dodatnie”, i nie ma znaczenia, w jaki sposób rozkładane są przewidywane prawdopodobieństwa inne niż przewidywane prawdopodobieństwo prawdziwej klasy.
Pytanie 1
0
log( max( y_predict, 1e-15 ) )
pytanie 2
Jeśli zmodyfikujesz taką sieć, aby mieć dwa przeciwstawne wyjścia i użyjesz softmax plus pierwsza definicja loglossa, wtedy zobaczysz, że w rzeczywistości jest to ten sam pomiar błędu, ale składany wskaźnik błędu dla dwóch klas w jedno wyjście.
Jeśli istnieje więcej niż jedna klasa do przewidzenia przynależności, a klasy nie są wyłączne, tj. Przykładem może być jedna lub wszystkie klasy w tym samym czasie, wówczas będziesz musiał użyć tego drugiego sformułowania. W przypadku rozpoznawania cyfr nie ma to miejsca (cyfra pisana powinna mieć tylko jedną „prawdziwą” klasę)
źródło
Pierwsze pytanie:
Powyższa odpowiedź wyjaśniła tło twojej pierwszej formuły, entropię krzyżową zdefiniowaną w teorii informacji.
Z opinii innej niż teoria informacji:
możesz sprawdzić, czy pierwsza formuła nie ma kary za fałszywą pozytywność (prawda jest fałszywa, ale twój model przewiduje, że ma rację), podczas gdy druga ma karę za fałszywą pozytywność. Dlatego wybór pierwszej formuły lub drugiej wpłynie na twoje metryki (czyli także, jakiej wielkości statystycznej chcesz użyć do oceny modelu).
Jednym słowem:
Jeśli chcesz zaakceptować prawie wszystkich dobrych ludzi jako przyjaciół, ale chcesz zaakceptować, że niektórzy źli ludzie staną się Twoimi przyjaciółmi, użyj pierwszej formuły jako kryterium.
Jeśli chcesz ukarać siebie za akceptowanie złych ludzi na swoich przyjaciół, ale jednocześnie wskaźnik dobrych ludzi akceptujących może być niższy niż pierwszy warunek, użyj drugiej formuły.
Chociaż wydaje mi się, że większość z nas jest krytyczna i chciałaby wybrać drugą (tak wiele pakietów ML zakłada, że jest to entropia krzyżowa).
Drugie Pytanie:
Zatem, gdy są tylko dwie klasy (K = 2), będziesz miał drugą formułę.
źródło
Te problemy rozwiązuje użycie softmax w tutorialu.
Dla 1) masz rację, że softmax gwarantuje niezerowe wyjście, ponieważ potęguje jego wejście. W przypadku aktywacji, które nie dają tej gwarancji (jak relu), wystarczy dodać bardzo mały dodatni termin do każdego wyjścia, aby uniknąć tego problemu.
Jeśli chodzi o 2), nie są one oczywiście takie same, ale ja załatwiona przeze mnie formuła softmax zajmuje się tym problemem. Jeśli nie użyjesz softmax, spowoduje to, że nauczysz się ogromnych terminów stronniczości, które odgadują 1 dla każdej klasy dla dowolnego wkładu. Ale ponieważ znormalizują softmax we wszystkich klasach, jedynym sposobem na maksymalizację wyniku prawidłowej klasy jest to, aby była ona duża w stosunku do niepoprawnych klas.
źródło
(a) jest poprawne w przypadku prognoz wieloklasowych (w rzeczywistości jest to podwójne sumowanie), (b) jest takie samo jak (a) w przypadku prognoz dwuklasowych. Oba są entropijne.
Przykład:
Zarówno (a), jak i (b) oblicza się jako:
Pochodzenie:
Ostateczna formuła obejmująca wszystkie punkty treningowe to:
który jest taki sam jak (b).
Entropia krzyżowa (a) ponad klasami (jedno sumowanie)
Cross-entropia (a) ponad klasami to:
Ta wersja nie może być używana do zadania klasyfikacji. Pozwala ponownie wykorzystać dane z poprzedniego przykładu:
źródło