Funzione Obiettivo (loss): differenze tra le versioni

Da Wiki AI.
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 51: Riga 51:
 ⇒ tensor(0.2284)
 ⇒ tensor(0.2284)
</source>
</source>
[[Category:concetti]]

Versione delle 10:21, 8 mar 2024

Chiamata anche funzione di costo o funzione di perdita, dall'inglese loss function, è una funzione che misura la discrepanza tra la stima di un algoritmo di Machine Learning e l'output supervisionato e rappresenta il costo dell'errore. Durante il processo di apprendimento di una rete neurale, con l'algoritmo di backpropagation, ad ogni iterazione i pesi della rete vengono aggiornati per ridurre la perdita.

Principali Funzioni Obiettivo

Mean Squared Error (MSE Loss) per la Regressione

E' una delle funzioni più utilizzate per i problemi di regressione. Intuitivamente, rappresenta la distanza del valore predetto dal valore attuale, in fase di addestramento supervisionato

import torch
import torch.nn as nn

loss = nn.MSELoss()
estimate = torch.tensor([0.7,0.2,0.1]) # estimate value
real = torch.tensor([1.0, 0, 0]) # true value or target value

print(loss(estimate , real))

 ⇒ tensor(0.0467)

L'Entropia Incrociata (o Cross-Entropy Loss, o Log Loss)

L'Entropia Incrociata è utilizzata come funzione obiettivo nei contesti di classificazione, sia binaria che multi-label, in cui si predice più di un'etichetta per ogni esempio di training.

Si ricorda che il logaritmo della probabilità di un evento, log(P(x)), va da meno infinito per P(x) == 0 a zero per P(x) == 1.

La formula dell'entropia incrociata rappresenta la differenza fra due distribuzioni di probabilità P e Q.

H(P, Q) = – sum x in X P(x) * log(Q(x))

Si possono immaginare i due casi estremi:

  • P(x) = 1 e Q(x) = 0, dove la classe predetta era vera ma è stata completamente sbagliata. H(P,Q) è + infinito
  • P(x) = 0 e Q(x) = 1: il prodotto interno dà zero

In caso di classificazione perfetta, la Log Loss è uguale a zero, altrimenti tende all'infinito più è alta la divergenza .


Binary Cross Entropy (BCE Loss)

Viene utlizzata nelle situazioni di classificazione binaria, in cui solo una di M classi è vera nello stesso momento

import torch
import torch.nn as nn

loss = nn.BCELoss()
estimate = torch.tensor([0.7,0.2,0.1]) # estimate value
real = torch.tensor([1.0, 0, 0]) # true value or target value

print(loss(estimate , real))

 ⇒ tensor(0.2284)