LossGradient

Calcule un vecteur ou une matrice de gradients de fonction de perte.

vector vector::LossGradient(
  const vector&       vect_true,     // vecteur de valeurs vraies
  ENUM_LOSS_FUNCTION  loss,          // type de la fonction de perte
   ...                               // paramètre supplémentaire
   );
 
 
matrix matrix::LossGradient(
  const matrix&       matrix_true,   // matrice de valeurs vraies
  ENUM_LOSS_FUNCTION  loss,          // fonction de perte
   );
 
 
matrix matrix::LossGradient(
  const matrix&       matrix_true,   // matrice de valeurs vraies
  ENUM_LOSS_FUNCTION  loss,          // fonction de perte
  ENUM_MATRIX_AXIS    axis,          // axe
   ...                               // paramètre supplémentaire
   );

Paramètres

vect_true/matrix_true

 [in] Vecteur ou matrice de valeurs vraies.

loss

[in]  Fonction de perte de l'énumération ENUM_LOSS_FUNCTION.

axis

[in] Valeur de l'énumération ENUM_MATRIX_AXIS (AXIS_HORZ — axe horizontal, AXIS_VERT — axe vertical).

...

[in]  Le paramètre supplémentaire "delta" ne peut être utilisé que par la fonction de perte de Hubert (LOSS_HUBER)

Valeur de Retour

Vecteur ou matrice des valeurs de gradient de la fonction de perte. Le gradient est la dérivée partielle par rapport à dx (x est la valeur prédite) de la fonction de perte en un point donné.

Note

Les gradients sont utilisés dans les réseaux de neurones pour ajuster les poids de la matrice de poids lors de la rétropropagation, lors de la formation du modèle.

Un réseau de neurones vise à trouver les algorithmes qui minimisent l'erreur sur l'échantillon d'apprentissage, pour lequel la fonction de perte est utilisée.

Différentes fonctions de perte sont utilisées en fonction du problème. Par exemple, l'erreur quadratique moyenne (MSE) est utilisée pour les problèmes de régression, et l'entropie croisée binaire (BCE) est utilisée à des fins de classification binaire.

Exemple de calcul des gradients de la fonction de perte

   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);
 
/* Résultat
   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]]
*/