Co to jest cross-entropia?

94

Wiem, że istnieje wiele wyjaśnień, czym jest cross-entropia, ale nadal jestem zdezorientowany.

Czy jest to tylko metoda opisania funkcji straty? Czy możemy użyć algorytmu gradientu, aby znaleźć minimum za pomocą funkcji straty?

teateista
źródło
11
Nie pasuje do SO. Oto podobne pytanie w siostrzanej witrynie datascience
Metropolis

Odpowiedzi:

232

Entropia krzyżowa jest powszechnie stosowana do ilościowego określenia różnicy między dwoma rozkładami prawdopodobieństwa. Zwykle „prawdziwa” dystrybucja (ta, którą algorytm uczenia maszynowego próbuje dopasować) jest wyrażana w postaci jednopunktowej dystrybucji.

Na przykład załóżmy, że dla konkretnego wystąpienia uczącego prawdziwą etykietą jest B (spośród możliwych etykiet A, B i C). Dlatego jedna gorąca dystrybucja dla tej instancji szkoleniowej to:

Pr(Class A)  Pr(Class B)  Pr(Class C)
        0.0          1.0          0.0

Powyższy prawdziwy rozkład można zinterpretować tak, aby oznaczał, że instancja szkoleniowa ma 0% prawdopodobieństwa bycia klasą A, 100% prawdopodobieństwa bycia klasą B i 0% prawdopodobieństwa bycia klasą C.

Teraz załóżmy, że algorytm uczenia maszynowego przewiduje następujący rozkład prawdopodobieństwa:

Pr(Class A)  Pr(Class B)  Pr(Class C)
      0.228        0.619        0.153

Jak blisko jest przewidywany rozkład do rzeczywistego rozkładu? To właśnie określa utrata krzyżowej entropii. Użyj tej formuły:

Wzór na krzyżową utratę entropii

Gdzie p(x)jest prawdziwy rozkład prawdopodobieństwa i q(x)przewidywany rozkład prawdopodobieństwa. Suma obejmuje trzy klasy A, B i C. W tym przypadku strata wynosi 0,479 :

H = - (0.0*ln(0.228) + 1.0*ln(0.619) + 0.0*ln(0.153)) = 0.479

Tak więc „błędne” lub „dalekie” są twoje prognozy od prawdziwego rozkładu.

Entropia krzyżowa jest jedną z wielu możliwych funkcji straty (inną popularną jest utrata zawiasu SVM). Te funkcje strat są zwykle zapisywane jako J (theta) i mogą być używane w ramach zstępowania gradientowego, które jest iteracyjnym algorytmem służącym do przesuwania parametrów (lub współczynników) w kierunku wartości optymalnych. W poniższym równaniu, należy wymienić J(theta)z H(p, q). Ale pamiętaj, że najpierw musisz obliczyć pochodną funkcji H(p, q)względem parametrów.

gradientowe zejście

Aby więc odpowiedzieć bezpośrednio na oryginalne pytania:

Czy jest to tylko metoda opisania funkcji straty?

Prawidłowo, entropia krzyżowa opisuje stratę między dwoma rozkładami prawdopodobieństwa. Jest to jedna z wielu możliwych funkcji strat.

Wtedy możemy posłużyć się na przykład algorytmem zejścia gradientowego, aby znaleźć minimum.

Tak, funkcja straty krzyżowej entropii może być używana jako część gradientu.

Dalsza lektura: jedna z moich innych odpowiedzi związanych z TensorFlow.

stackoverflowuser2010
źródło
więc entropia krzyżowa opisuje stratę jako sumę prawdopodobieństw dla każdego przykładu X.
teateista
czy możemy więc zamiast opisywać błąd jako cross-entropię, opisać błąd jako kąt między dwoma wektorami (podobieństwo cosinusowe / odległość kątowa) i spróbować zminimalizować ten kąt?
teateista
1
najwyraźniej nie jest to najlepsze rozwiązanie, ale chciałem tylko wiedzieć, w teorii, czy moglibyśmy użyć cosine (dis)similaritydo opisania błędu przez kąt, a następnie spróbować zminimalizować kąt.
teateista
2
@Stephen: Jeśli spojrzysz na podany przeze mnie przykład, p(x)będzie to lista prawdopodobieństw zgodnych z prawdą dla każdej z klas, która będzie [0.0, 1.0, 0.0. Podobnie q(x)lista przewidywanego prawdopodobieństwa dla każdej z klas [0.228, 0.619, 0.153]. H(p, q)jest wtedy - (0 * log(2.28) + 1.0 * log(0.619) + 0 * log(0.153)), co okazuje się być 0,479. Zwróć uwagę, że często używa się np.log()funkcji Pythona , która w rzeczywistości jest logiem naturalnym; to nie ma znaczenia.
stackoverflowuser2010
1
@HAr: W przypadku kodowania na gorąco prawdziwej etykiety jest tylko jedna niezerowa klasa, na której nam zależy. Jednak entropia krzyżowa może porównywać dowolne dwa rozkłady prawdopodobieństwa; nie jest konieczne, aby jeden z nich miał jedne gorące prawdopodobieństwa.
stackoverflowuser2010
3

Krótko mówiąc, entropia krzyżowa (CE) jest miarą tego, jak daleko jest twoja przewidywana wartość od prawdziwej etykiety.

Krzyż tutaj odnosi się do obliczenia entropii między dwiema lub więcej cechami / prawdziwymi etykietami (takimi jak 0, 1).

A sam termin entropia odnosi się do losowości, więc jego duża wartość oznacza, że ​​twoje przewidywania są dalekie od prawdziwych etykiet.

Tak więc wagi są zmieniane, aby zmniejszyć CE, a tym samym ostatecznie prowadzi do zmniejszenia różnicy między przewidywanymi a prawdziwymi etykietami, a tym samym do lepszej dokładności.

Harsh Malra
źródło
1

Dodając do powyższych postów, najprostsza forma utraty krzyżowej entropii jest znana jako binarna-krzyżowa entropia (używana jako funkcja straty dla klasyfikacji binarnej, np. Z regresją logistyczną), podczas gdy wersja uogólniona to kategorialno-krzyżowa entropia (używana jako funkcja straty dla wieloklasowych problemów klasyfikacyjnych, np. w sieciach neuronowych).

Pomysł pozostaje ten sam:

  1. gdy prawdopodobieństwo klasy obliczone przez model (softmax) zbliża się do 1 dla etykiety docelowej instancji szkoleniowej (reprezentowanej przez jedno-gorące kodowanie, np.), odpowiadająca strata CCE spada do zera

  2. w przeciwnym razie wzrasta wraz ze zmniejszaniem się przewidywanego prawdopodobieństwa odpowiadającego klasie docelowej.

Poniższy rysunek ilustruje tę koncepcję (zauważ z rysunku, że BCE staje się niskie, gdy oba yip są wysokie lub oba są jednocześnie niskie, tj. Istnieje zgodność):

wprowadź opis obrazu tutaj

Entropia krzyżowa jest ściśle związana z entropią względną lub dywergencją KL, która oblicza odległość między dwoma rozkładami prawdopodobieństwa. Na przykład, pomiędzy dwoma dyskretnymi pmf, relacja między nimi jest pokazana na poniższym rysunku:

wprowadź opis obrazu tutaj

Sandipan Dey
źródło