Wzór na entropię krzyżową przyjmuje dwa rozkłady, p(x) , rozkład rzeczywisty i q(x) , rozkład szacowany, zdefiniowany dla zmiennej dyskretnej x i jest określony przez
H(p,q)=−∑∀xp(x)log(q(x))
W przypadku sieci neuronowej obliczenia są niezależne od następujących elementów:
Jakiego rodzaju użyto warstwy.
Jakiego rodzaju aktywacji użyto - chociaż wiele aktywacji nie będzie zgodnych z obliczeniami, ponieważ ich wyniki nie mogą być interpretowane jako prawdopodobieństwa (tj. Ich wyniki są ujemne, większe niż 1 lub nie sumują się do 1). Softmax jest często używany do klasyfikacji wieloklasowej, ponieważ gwarantuje dobrze zachowaną funkcję rozkładu prawdopodobieństwa.
Dla sieci neuronowej, można zazwyczaj zobaczyć równania napisany w formie gdzie y jest wektorem ziemia prawda i y^ jakaś inna wartość wzięte bezpośrednio z wyjścia ostatniej warstwy) jest oszacowanie. Na przykład może wyglądać następująco:
L=−y⋅log(y^)
gdzie ⋅ jest iloczynem wektora kropki.
Twój przykład ziemia prawda y daje wszelkie prawdopodobieństwo pierwszej wartości, a pozostałe wartości są równe zero, więc możemy je zignorować i po prostu używać terminu pasującego z szacunków yy^
L=−(1×log(0.1)+0×log(0.5)+...)
L=−log(0.1)≈2.303
Ważny punkt z komentarzy
Oznacza to, że strata byłaby taka sama bez względu na to, czy prognozy wynoszą [0.1,0.5,0.1,0.1,0.2] lub [0.1,0.6,0.1,0.1,0.1] ?
Tak, jest to kluczowa cecha logloss wieloklasowego, nagradza / karze tylko prawdopodobieństwa poprawnych klas. Wartość jest niezależna od podziału pozostałego prawdopodobieństwa na niepoprawne klasy.
Często zobaczysz to równanie uśrednione dla wszystkich przykładów jako funkcję kosztu . Nie zawsze jest ściśle przestrzegane w opisach, ale zwykle funkcja straty jest niższym poziomem i opisuje, w jaki sposób pojedyncza instancja lub komponent określa wartość błędu, podczas gdy funkcja kosztu jest wyższym poziomem i opisuje, w jaki sposób oceniany jest cały system do optymalizacji. Funkcja kosztu oparta na utracie dziennika wieloklasowego dla zestawu danych o rozmiarze N może wyglądać następująco:
J=−1N(∑i=1Nyi⋅log(y^i))
Wiele implementacji będzie wymagać, aby twoje podstawowe wartości prawdy były zakodowane na gorąco (z jedną prawdziwą klasą), ponieważ pozwala to na dodatkową optymalizację. Jednak w zasadzie utratę entropii krzyżowej można obliczyć - i zoptymalizować - gdy tak nie jest.