Cross-Entropia

O infortúnio de centralidade cruzada, ou infortúnio de registro, mede a apresentação de um modelo de ordem cujo rendimento é a probabilidade estimada em algum lugar na faixa de 0 e 1. O infortúnio de centralidade cruzada aumenta à medida que a probabilidade antecipada se afasta da marca real. Assim, prever uma probabilidade de 0,012 quando o nome de percepção genuína é 1 seria terrível e traria uma alta estima de infortúnio. Um modelo ideal teria uma perda logarítmica de 0.

O diagrama acima mostra o escopo das possíveis desgraças, dada uma percepção genuína (isDog = 1). À medida que a probabilidade antecipada se aproxima de 1, o infortúnio logarítmico diminui gradualmente. À medida que a probabilidade antecipada diminui, seja como for, o infortúnio logarítmico aumenta rapidamente. O infortúnio de toros pune os dois tipos de erros, porém particularmente as expectativas que são certas e erradas!

Cross-entropy e log misfortune são de certa forma únicos, mas em AI enquanto calcula taxas de erro em algum lugar na faixa de 0 e 1 eles resolvem para algo muito semelhante.

Código

def CrossEntropy(yHat, y):

    se y === 1:

      retornar -log(yHat)

    senão:

      retornar -log(1 – yHat)

Matemática

Na classificação binária, onde o número de classes M é igual a 2, a centralidade cruzada pode ser calculada como:

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

Se M>2 (ou seja, classificação multiclasse), calculamos uma perda separada para cada etiqueta de classe por observação e somamos o resultado.

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

Nota

M – número de aulas (cão, gato, peixe)

log – o log natural

y – indicador binário (0 ou 1) se a etiqueta de classe c for a classificação correta para observação o

p – observação de probabilidade prevista o é da classe c

Dobradiça

Utilizado para classificação.

Código

Def Hinge(yHat, y):

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

Huber

Tipicamente utilizado para regressão. É menos sensível a outliers do que o MSE, pois trata o erro como quadrado apenas dentro de um intervalo.

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

Código

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

Mais informações podem ser encontradas em Huber Loss na Wikipedia.

Kullback-Leibler

Código

def KLDivergence(yHat, y):

    “””

    :param yHat:

    :param y:

    :retornar: KLDiv(yHat |||| y)

    “””

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

MAE (L1)

Erro Médio Absoluto, ou perda L1. Excelente visão geral abaixo [6] e [10].

Código

def L1(yHat, y):

    retornar np.sum(np.absoluto(yHat – y))

MSE (L2)

Erro Quadrático Médio, ou perda L2. Excelente visão geral abaixo [6] e [10].

def MSE(yHat, y):

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

def MSE_prime(yHat, y):

    devolver yHat – y