Entropie-übergreifend

Entropieübergreifendes Unglück oder logarithmisches Unglück misst die Darstellung eines Ordnungsmodells, dessen Ergebnis eine Wahrscheinlichkeitsschätzung irgendwo im Bereich zwischen 0 und 1 ist. Entropieübergreifendes Unglück nimmt in dem Maße zu, wie die erwartete Wahrscheinlichkeit von der realen Marke abweicht. Die Vorhersage einer Wahrscheinlichkeit von 0,012, wenn der Name in der echten Wahrnehmung 1 ist, wäre also schrecklich und würde zu einer hohen Unglücksschätzung führen. Ein ideales Modell würde einen Log-Verlust von 0 aufweisen.

Das obige Diagramm zeigt das Ausmaß der denkbaren Unglücksschätzungen bei einer echten Wahrnehmung (isDog = 1). Je mehr sich die erwartete Wahrscheinlichkeit dem Wert 1 nähert, desto mehr nimmt das logarithmische Unglück allmählich ab. Wenn die erwartete Wahrscheinlichkeit abnimmt, wie dem auch sei, nimmt das logarithmische Unglück schnell zu. Das logarithmische Unglück bestraft die beiden Arten von Fehlern, insbesondere jedoch die Erwartungen, die sicher und falsch sind!

Die Kreuzentropie und das logarithmische Unglück sind in gewisser Weise einzigartig, wenn man sich auf die Einstellung verlässt, doch in der KI lösen sie sich bei der Berechnung von Fehlerraten irgendwo im Bereich von 0 und 1 auf etwas sehr Ähnliches auf.

Code

def CrossEntropie(yHat, y):

    wenn y == 1:

      zurück -log(yHat)

    sonst:

      return -log(1 – yHat)

Mathe

Bei der binären Klassifikation, bei der die Anzahl der Klassen M gleich 2 ist, kann die Kreuzentropie wie folgt berechnet werden:

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

Wenn M>2 (d.h. Mehrklassenklassifikation), berechnen wir einen separaten Verlust für jedes Klassenetikett pro Beobachtung und summieren das Ergebnis.

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

Hinweis

M – Anzahl der Klassen (Hund, Katze, Fisch)

log – der natürliche Log

y – binärer Indikator (0 oder 1), wenn die Klassenbezeichnung c die richtige Klassifizierung für die Beobachtung ist o

p – vorhergesagte Wahrscheinlichkeitsbeobachtung o gehört zur Klasse c

Scharnier

Wird für die Klassifizierung verwendet.

Code

def Scharnier(yHut, y):

    Rückgabe np.max(0, 1 – yHat * y)

Huber

Typischerweise für die Regression verwendet. Sie ist weniger empfindlich gegenüber Ausreißern als die KKU, da sie den Fehler nur innerhalb eines Intervalls als Quadrat behandelt.

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

Code

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

Weitere Informationen finden Sie unter Huber-Verlust in Wikipedia.

Kullback-Leibler

Code

def KLDivergenz(yHat, y):

    “””

    :param yHat:

    :param y:

    :zurück: KLDiv(yHut || y)

    “””

    gibt np.sum(yHat * np.log((yHat / y)))

MAE (L1)

Mittlerer absoluter Fehler oder L1-Verlust. Ausgezeichnete Übersicht unten [6] und [10].

Code

def L1(yHut, y):

    Rückgabe np.Summe(np.absolut(yHat – y))

KKU (L2)

Mittlerer quadratischer Fehler oder L2-Verlust. Ausgezeichnete Übersicht unten [6] und [10].

def MSE(yHat, y):

    Rückgabe np.sum((yHat – y)**2) / y.Größe

def MSE_prime(yHat, y):

    Rückgabe yHat – y