Cross-Entropia

Nieszczęście krzyżowe, czyli nieszczęście logiczne, określa prezentację modelu zamówienia, którego wydajność jest szacowana jako prawdopodobieństwo gdzieś w zakresie od 0 do 1. Wzrost nieszczęścia krzyżowego jako przewidywany wektor prawdopodobieństwa od znaku rzeczywistego. Tak więc przewidywanie prawdopodobieństwa .012, gdy rzeczywista nazwa percepcji wynosi 1, byłoby straszne i powodowałoby wysokie prawdopodobieństwo nieszczęścia. Idealny model miałby stratę logiczną równą 0.

_images/cross_entropy.png

Powyższy wykres pokazuje zakres możliwych nieszczęśliwych szacunków, które można sobie wyobrazić w prawdziwej percepcji (isDog = 1). W miarę jak przewidywane prawdopodobieństwo zbliża się do 1, nieszczęście logiczne stopniowo maleje. W miarę zmniejszania się przewidywanego prawdopodobieństwa, nieważne, że nieszczęście z logiem szybko się powiększa. Nieszczęście dzienne karze dwa rodzaje błędów, jednak szczególnie te oczekiwania, które są pewne i błędne!

Cross-entropia i nieszczęście dziennika są nieco wyjątkowe, opierając się na ustawieniach, ale w AI podczas obliczania wskaźników błędów gdzieś w zakresie 0 i 1 rozwiązują coś bardzo podobnego.

Kod

def CrossEntropy(yHat, y):

jeżeli y == 1:

return -log(yHat): if y == 1: return -log(yHat)

Inaczej:

powrót -log(1 – yHat)

Matematyka

W klasyfikacji binarnej, gdzie liczba klas M jest równa 2, można obliczyć wartość krzyżowej entropii:

-(ylog(p)+(1-y)log(1-p))

Jeśli M>2 (tzn. klasyfikacja multiklasowa), obliczamy osobną stratę dla każdej etykiety klasy na obserwację i sumujemy wynik.

-∑c=1Myo,clog(po,c)

Uwaga

M – liczba klas (pies, kot, ryba)

kłoda – kłoda naturalna

y – wskaźnik binarny (0 lub 1), jeżeli etykieta klasy c jest właściwą klasyfikacją do celów obserwacji o

p – przewidywana obserwacja prawdopodobieństwa o jest klasy c

Zawias

Używany do klasyfikacji.

Kod

Def Hinge(yHat, y):

powrót np.max(0, 1 – yHat * y)

Huber

Zazwyczaj używany do regresji. Jest mniej wrażliwy na wartości odstające niż MSE, ponieważ traktuje błąd jako kwadrat tylko wewnątrz przedziału.

Lδ={12(y-y^)2δ((y-y^)-12δ)if|(y-y^)|<δotherwise

Kod

def Huber(yHat, y, delta=1.):

return np.where(np.abs(y-yHat) < delta,.5*(y-yHat)**2 , delta*(np.abs(y-yHat)-0,5*delta))

Więcej informacji można znaleźć na stronie Huber Loss w Wikipedii.

Kullback-Leibler

Kod

def KLDivergence(yHat, y):

“””

:param yHat:

:param yat y:

:wróć: KLDiv(yHat || y)

“””

zwrócić np.sumę(yHat * np.log((yHat / y)))

MAE (L1)

Mean Absolute Error, czyli strata L1. Doskonały przegląd poniżej [6] i [10].

Kod

def L1(yHat, y):

return np.sum(np.absolute(yHat – y))

MSE (L2)

Mean Squared Error, czyli strata L2. Doskonały przegląd poniżej [6] i [10].

def MSE(yHat, y):

return np.sum((yHat – y)**2) / y.g. rozmiar

def MSE_prime(yHat, y):

return yHat – y