Cross-Entropy

Le malheur en entropie croisée, ou malheur logarithmique, mesure la présentation d’un modèle d’ordre dont le rendement est l’estimation de la probabilité quelque part entre 0 et 1. Le malheur en entropie croisée s’accroît lorsque la probabilité anticipée s’écarte de la réalité. Ainsi, prévoir une probabilité de 0,012 alors que le nom de la perception réelle est 1 serait terrible et entraînerait une forte estime de la malchance. Un modèle idéal aurait une perte de logarithme de 0.

Le diagramme ci-dessus montre l’étendue des malheurs concevables en fonction d’une perception réelle (isDog = 1). Au fur et à mesure que la probabilité anticipée se rapproche de 1, le malheur logarithmique diminue progressivement. Au fur et à mesure que la probabilité anticipée diminue, quoi qu’il en soit, la malchance logarithmique augmente rapidement. La malchance punit les deux types d’erreurs, mais surtout les attentes qui sont certaines et fausses !

L’entropie croisée et le logarithme du malheur sont quelque peu uniques, car ils dépendent du réglage, mais en IA, lorsqu’ils calculent des taux d’erreur de l’ordre de 0 et 1, ils se résolvent à quelque chose de très similaire.

Code

def CrossEntropy(yHat, y) :

    si y == 1 :

      retour -log(yHat)

    d’autre part :

      retour -log(1 – yHat)

Math

Dans la classification binaire, où le nombre de classes M est égal à 2, l’entropie croisée peut être calculée comme suit

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

Si M>2 (c’est-à-dire classification multiclasse), nous calculons une perte séparée pour chaque étiquette de classe par observation et nous additionnons le résultat.

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

Note

M – nombre de classes (chien, chat, poisson)

le journal – le journal naturel

y – indicateur binaire (0 ou 1) si le label de classe c est la classification correcte pour l’observation o

p – observation de probabilité prédite o est de classe c

Charnière

Utilisé pour la classification.

Code

def Hinge(yHat, y) :

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

Huber

Généralement utilisé pour la régression. Il est moins sensible aux valeurs aberrantes que le MSE car il traite l’erreur comme un carré uniquement à l’intérieur d’un intervalle.

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

Pour plus d’informations, voir Huber Loss dans Wikipedia.

Kullback-Leibler

Code

def KLDivergence(yHat, y) :

    “””

    Param yHat :

    :param y :

    : retour : KLDiv(yHat || y)

    “””

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

MAE (L1)

Erreur Absolue Moyenne, ou perte de L1. Excellent aperçu ci-dessous [6] et [10].

Code

def L1(yHat, y) :

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

GIE (L2)

Erreur quadratique moyenne, ou perte de L2. Excellent aperçu ci-dessous [6] et [10].

def MSE(yHat, y) :

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

def MSE_prime(yHat, y) :

    retour yHat – y