LossGradient

Calcola un vettore o una matrice di gradienti della funzione di perdita.

vector vector::LossGradient(
  const vector&       vect_true,     // vettore di valori reali
  ENUM_LOSS_FUNCTION  loss,          // tipo di funzione di perdita
   ...                               // parametri addizionali
   );
 
 
matrix matrix::LossGradient(
  const matrix&       matrix_true,   // matrice di valori reali
  ENUM_LOSS_FUNCTION  loss,          // funzione di perdita
   );
 
 
matrix matrix::LossGradient(
  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

Vettore o matrice dei valori del gradiente della funzione di perdita. Il gradiente è la derivata parziale rispetto a dx (x è il valore previsto) della funzione di perdita in un dato punto.

Nota

I gradienti sono utilizzati nelle reti neurali per regolare i pesi della matrice di peso durante la retropropagazione, durante l'allenamento del modello.

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

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 calcolo dei gradienti della funzione di perdita

   matrixf y_true={{ 1234 },
                   { 5678 },
                   { 9,10,11,12 }};
   matrixf y_pred={{ 1234 },
                   {11,1098 },
                   { 567,12 }};
   matrixf loss_gradient =y_pred.LossGradient(y_true,LOSS_MAE);
   matrixf loss_gradienth=y_pred.LossGradient(y_true,LOSS_MAE,AXIS_HORZ);
   matrixf loss_gradientv=y_pred.LossGradient(y_true,LOSS_MAE,AXIS_VERT);
   Print("loss gradients\n",loss_gradient);
   Print("loss gradients on horizontal axis\n",loss_gradienth);
   Print("loss gradients on vertical axis\n",loss_gradientv);
 
/* Risultato
   loss gradients
   [[0,0,0,0]
    [0.083333336,0.083333336,0.083333336,0]
    [-0.083333336,-0.083333336,-0.083333336,0]]
   loss gradients on horizontal axis
   [[0,0,0,0]
    [0.33333334,0.33333334,0.33333334,0]
    [-0.33333334,-0.33333334,-0.33333334,0]]
   loss gradients on vertical axis
   [[0,0,0,0]
    [0.25,0.25,0.25,0]
    [-0.25,-0.25,-0.25,0]]
*/