Loss

Calcola il valore della funzione di perdita.

double vector::Loss(
  const vector&       vect_true,     // vettore di valori reali
  ENUM_LOSS_FUNCTION  loss,          // funzione di perdita
   ...                               // parametri addizionali
   );
 
 
double matrix::Loss(
  const matrix&       matrix_true,   // matrice di valori reali
  ENUM_LOSS_FUNCTION  loss,          // funzione di perdita
   );
 
 
double matrix::Loss(
  const matrix&       matrix_true,   // matrice di valori reali
  ENUM_LOSS_FUNCTION  loss,          // funzione di perdita
  ENUM_MATRIX_AXIS    axis,          // asse
   ...                               // parametri addizionali
   );

Parametri

vect_true/matrix_true

 [in] Vettore o matrice di valori reali.

loss

[in] Funzione di perdita dall'enumerazione ENUM_LOSS_FUNCTION.

axis

[in] Valore dall'enumerazione ENUM_MATRIX_AXIS (AXIS_HORZ — asse orizzontale, AXIS_VERT — asse verticale).

...

[in] Parametro addizionale 'delta' può essere utilizzato solo dalla funzione di perdita Hubert (LOSS_HUBER)

Valore Restituito

Valore double.

Come viene utilizzato il parametro 'delta' nella funzione di perdita Hubert (LOSS_HUBER)

   double delta = 1.0;
   double error = fabs(y - x);
   if(error<delta)
      loss = 0.5 * error^2;
   else
      loss = 0.5 * delta^2 + delta * (error - delta);

Nota

Una rete neurale mira a trovare gli algoritmi che minimizzano l'errore sul campione di addestramento, per cui la funzione di perdita è utilizzata.

Il valore della funzione di perdita indica quanto il valore previsto dal modello devia da quello reale.

Differenti funzioni di perdita vengono utilizzate a seconda del problema. Per esempio, Mean Squared Error (MSE) è utilizzata per problemi di regressione, e Binary Cross-Entropy (BCE) è utilizzata per scopi di classificazione binaria.

Esempio di chiamata della funzione di perdita Hubert:

   vector y_true = {0.01.00.00.0};
   vector y_pred = {0.60.40.40.6};
   double loss=y_pred.Loss(y_true,LOSS_HUBER);
   Print(loss);
   double loss2=y_pred.Loss(y_true,LOSS_HUBER,0.5);
   Print(loss2);
 
/* Risultato
   0.155
   0.15125
*/