LossGradient

Berechnung eines Vektors oder einer Matrix der Gradienten einer Verlustfunktion.

Vektor vector::LossGradient(
  const vector&       vect_true,     // Vektor mit tatsächlichen Werten
  ENUM_LOSS_FUNCTION  loss,          // Typ der Verlustfunktion
   ...                               // weitere Parameter
   );
 
 
matrix matrix::LossGradient(
  const matrix&       matrix_true,   // Matrix mit tatsächlichen Werten
  ENUM_LOSS_FUNCTION  loss,          // Verlustfunktion
   );
 
 
matrix matrix::LossGradient(
  const matrix&       matrix_true,   // Matrix mit tatsächlichen Werten
  ENUM_LOSS_FUNCTION  loss,          // Verlustfunktion
  ENUM_MATRIX_AXIS    axis,          // Achse
   ...                               // weitere Parameter
   );

Parameter

vect_true/matrix_true

 [in] Vektor oder Matrix mit den tatsächlichen Werten.

loss

[in]  Verlustfunktion aus der Enumeration ENUM_LOSS_FUNCTION.

axis

[in] ENUM_MATRIX_AXIS Wert der Enumeration (AXIS_HORZ — horizontale Achse, AXIS_VERT — vertikale Achse).

...

[in]  Der zusätzliche Parameter 'delta' kann nur von der Hubert-Verlustfunktion (LOSS_HUBER) verwendet werden.

Rückgabewert

Vektor oder Matrix der Werte des Gradienten der Verlustfunktion. Der Gradient ist die partielle Ableitung nach dx (x ist der vorhergesagte Wert) der Verlustfunktion an einem bestimmten Punkt.

Hinweis

Gradienten werden in neuronalen Netzen verwendet, um die Gewichte der Gewichtsmatrix während des Backpropagation-Verfahrens beim Training eines Modells anzupassen.

Ein neuronales Netz zielt darauf ab, die Algorithmen zu finden, die den Fehler in der Trainingsstichprobe, für die die Verlustfunktion verwendet wird, minimieren.

Je nach Problemstellung werden unterschiedliche Verlustfunktionen verwendet. So wird beispielsweise der mittlere quadratische Fehler (MSE) für Regressionsprobleme und die binäre Kreuzentropie (BCE) für binäre Klassifikationszwecke verwendet.

Beispiel für die Berechnung der Gradienten der Verlustfunktionen

   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);
 
/* Ergebnis
   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]]
*/