Cross-Entropia

La sfortuna da centropia incrociata, o sfortuna da tronco, misura la presentazione di un modello di ordine il cui rendimento è la stima della probabilità da qualche parte nell’intervallo 0 e 1. Gli incrementi di sfortuna da centropia incrociata come la probabilità prevista si discosta dal marchio reale. Quindi prevedere una probabilità di .012 quando il nome della percezione reale è 1 sarebbe terribile e porterebbe ad un’alta stima della sfortuna. Un modello ideale avrebbe una perdita di tronco pari a 0.

Il diagramma qui sopra mostra l’ambito delle possibili stime di sventura, data una percezione genuina (isDog = 1). Man mano che la probabilità prevista si avvicina a 1, la sfortuna di log diminuisce gradualmente. Man mano che la probabilità prevista diminuisce, sia come sia, la sfortuna del tronco aumenta rapidamente. La sfortuna del tronco punisce i due tipi di errori, ma soprattutto le aspettative certe e sbagliate!

L’entalpia incrociata e la sfortuna dei tronchi sono in qualche modo uniche, ma nell’IA mentre calcolano i tassi di errore in un intervallo compreso tra 0 e 1 si risolvono in qualcosa di molto simile.

Codice

def CrossEntropy(yHat, y):

    se y == 1:

      ritorno -log(yHat)

    altro:

      ritorno -log(1 – yHat)

Matematica

Nella classificazione binaria, dove il numero delle classi M è uguale a 2, l’entropia incrociata può essere calcolata come:

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

Se M>2 (cioè classificazione multiclasse), calcoliamo una perdita separata per ogni etichetta di classe per ogni osservazione e sommiamo il risultato.

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

Nota

M – numero di classi (cane, gatto, pesce)

il tronco – il tronco naturale

y – indicatore binario (0 o 1) se l’etichetta della classe c è la classificazione corretta per l’osservazione o

p – osservazione di probabilità prevista o è di classe c

Cerniera

Utilizzato per la classificazione.

Codice

Def Hinge(yHat, y):

    ritorno np.max(0, 1 – yHat * y)

Huber

Tipicamente usato per la regressione. E ‘meno sensibile agli outlier rispetto al MSE in quanto tratta l’errore come quadrato solo all’interno di un intervallo.

Lδ={12(y-y^)2δ((y-y^)-12δ)se|(y-y^)|<δ in altro modo

Codice

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

Ulteriori informazioni sono disponibili su Huber Loss in Wikipedia.

Kullback-Leibler

Codice

def KLDivergence(yHat, y):

    “””

    :param yHat:

    :param y:

    :ritorno: KLDiv(yHat ||| y)

    “””

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

MAE (L1)

Errore assoluto medio, o perdita di L1. Eccellente panoramica qui sotto [6] e [10].

Codice

def L1(yHat, y):

    ritorno np.sum(np.assoluto(yHat – y))

MSE (L2)

Errore medio al quadrato, o perdita di L2. Eccellente panoramica qui sotto [6] e [10].

def MSE(yHat, y):

    ritorno np.sum((yHat – y)**2) / y.size

def MSE_prime(yHat, y):

    restituire yHat – y