Loss

Berechnung des Wertes der Verlustfunktion

double vector::Loss(
  const vector&       vect_true,     // Vektor mit tatsächlichen Werten
  ENUM_LOSS_FUNCTION  loss,          // Verlustfunktion
   ...                               // weitere Parameter
   );
 
 
double matrix::Loss(
  const matrix&       matrix_true,   // Matrix mit tatsächlichen Werten
  ENUM_LOSS_FUNCTION  loss,          // Verlustfunktion
   );
 
 
double matrix::Loss(
  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

Ein Wert vom Typ double

Wie der Parameter 'delta' in der Hubert-Verlustfunktion (LOSS_HUBER) verwendet wird

   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);

Hinweis

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

Der Wert der Verlustfunktion gibt an, um wie viel der vom Modell vorhergesagte Wert vom realen Wert abweicht.

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 den Aufruf der Hubert-Verlustfunktion:

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