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.
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