Funciones de pérdida en PyTorch

Parte 0: función de pérdida

  • La función de pérdida debe devolver valores altos para malas predicciones y valores bajos para buenas predicciones.

1.1 Definición

La entropía cruzada binaria se define como

Entropía cruzada binaria

donde y es la etiqueta ( 1 para puntos verdes y 0 para puntos rojos ) y p(y) es la probabilidad predicha de que el punto sea verde para todos los N puntos.

El perfil de la función de pérdida de registro se ve así:

1.2 Relación con la entropía y la entropía cruzada

entropía
Entropía cruzada
Entropía cruzada (punto por punto)

Si milagrosamente hacemos coincidir p(y) con q(y) perfectamente , los valores calculados para la entropía cruzada y la entropía también coincidirán .

La diferencia entre entropía cruzada y entropía es la divergencia de Kullback-Leibler:

KL divergencia

1.3 Implementar

A continuación, implementamos la entropía cruzada binaria tanto en sklearn como en pytorch.

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import log_loss
import numpy as np
x = np.array([-2.2, -1.4, -.8, .2, .4, .8, 1.2, 2.2, 2.9, 4.6])
y = np.array([0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0])
logr = LogisticRegression(solver='lbfgs')
logr.fit(x.reshape(-1, 1), y)
y_pred = logr.predict_proba(x.reshape(-1, 1))[:, 1].ravel()
loss = log_loss(y, y_pred)
print('x = {}'.format(x))
print('y = {}'.format(y))
print('p(y) = {}'.format(np.round(y_pred, 2)))
print('Log Loss / Cross Entropy = {:.4f}'.format(loss))
import torch.nn as nn
import torch
loss = nn.BCELoss()
a = torch.from_numpy(y_pred)
b = torch.from_numpy(y)
output = loss(a, b)
print('Log Loss from pytorch = {:.4f}'.format(output))

import torch.nn as nn
import torch
loss = nn.BCELoss()
m = nn.Sigmoid()
input = torch.randn(3)
y = np.array([0.9])
y_pred = y
a = torch.from_numpy(y_pred)
b = torch.from_numpy(y)
output = loss(a, b)
print(output)

-0.9*np.log(0.9)-0.1*np.log(0.1)

1.4 Referencia

  • Comprender la entropía cruzada binaria / pérdida de registro: una explicación visual

2.1 Idea básica

Para calcular cuán similares son dos vectores, ¡calcula su producto escalar! Esta es también la idea básica del filtrado colaborativo.

S(y) es la salida de su función softmax. ¡L es la verdad fundamental!

2.2 Implementación

import torch.nn as nn
import torch
import torch.nn.functional as F

class CrossEntropyLoss2d(nn.Module):
    
    def __init__(self):
        super(CrossEntropyLoss2d, self).__init__()
        self.nll_loss = nn.NLLLoss() #nn.NLLLoss2d()
   def forward(self, inputs, targets):
        # input: (n, c, h, w), target: (n, h, w)
        return self.nll_loss(F.log_softmax(inputs), targets)
if __name__ == "__main__":
    import torch
    x = torch.Tensor([[[1,2,1],
                       [2,3,1],
                       [0, 1,1]],
                      [[0, 1, 3],
                       [2, 3, 1],
                       [0, 0, 1]],
                      [[0,1,3],
                       [2,3,1],
                       [0, 0,1]]])
    x = x.view(1, 3, 3, 3)
    print(x.shape)
    import torch.nn as nn
    soft = nn.LogSoftmax(dim=1)(x)
    print(soft.shape)
    y = torch.LongTensor([[2,0,1],[0,0,1],[1,1,1]])
    y = y.view(1,3,3)
    loss = nn.NLLLoss2d()
    out = loss(soft,y)
    print(out)
    a_fun = CrossEntropyLoss2d()
    print(a_fun(x,y))

Suggested posts

Pérdida de funciones y lo que hace detrás de la pantalla.

Pérdida de funciones y lo que hace detrás de la pantalla.

¿Qué es la función de pérdida? Al ejecutar cualquier algoritmo de aprendizaje automático como la clasificación lineal, nos gustaría comprender cómo funciona este algoritmo en la clasificación. Además, queremos tener una forma de cuantificar los resultados para saber cuánto funcionaron bien nuestros algoritmos, cuánto más podrían haber hecho y qué tan atrasados ​​están con respecto al punto de referencia.

Pérdida de entropía cruzada binaria: caso especial de pérdida de entropía cruzada categórica

Implementación paso a paso y sus gradientes con un ejemplo.

Pérdida de entropía cruzada binaria: caso especial de pérdida de entropía cruzada categórica

En esta publicación, hablaremos sobre la pérdida de entropía cruzada binaria y lo que significa. También veremos cómo calcular los gradientes. ¿Y cómo es un caso especial de pérdida de entropía cruzada categórica? Puede descargar el Jupyter Notebook desde aquí.

Related posts

Rastree a cualquiera con solo un número de teléfono | Investigación OSINT

Rastree a cualquiera con solo un número de teléfono | Investigación OSINT

Puede ser un investigador de OSINT, un jugador de CTF o simplemente alguien que recibe llamadas no deseadas. Alguien que está tratando de verificar el número que viste en un anuncio.

Financiamiento de la eliminación de carbono en el año fiscal 24

El desglose de las solicitudes de asignaciones de Carbon180 a través de vías

Financiamiento de la eliminación de carbono en el año fiscal 24

Por Alyson Lee, asesora de gestión de asuntos gubernamentales El proceso de asignaciones anuales del gobierno federal es fundamental para nuestros esfuerzos por financiar la eliminación de dióxido de carbono (CDR). Cada año, Carbon180 envía solicitudes a varias oficinas del Congreso para ayudar a guiar hacia dónde fluirán los dólares del próximo año.

Dos años en diseño: lo bueno, lo malo y lo feo...

Dos años en diseño: lo bueno, lo malo y lo feo...

“Oye, Siri, toca Me Dive de Olivia Dean”. Fue en mayo de 2021 cuando comencé mi pasantía en Future Academy Africa en Akure, Nigeria.

¿Es el arte alguna vez apolítico?

¿Es el arte alguna vez apolítico?

Ayer cerramos la puerta del Festival de la Canción de Eurovisión de este año con una gran final brillante y caótica en la que la cantante sueca Loreen se llevó a casa el trofeo, convirtiéndose en la primera mujer en ganar dos veces y devolviendo la corona a Suecia 50 años después de que ABBA ganara la competencia. con “Waterloo”. Se convirtieron en uno de los actos más grandes en el canon de la música pop.