Loss

Calcula el valor de la función de pérdida.

double vector::Loss(
  const vector&       vect_true,     // vector de valores verdaderos
  ENUM_LOSS_FUNCTION  loss,          // función de pérdida
   ...                               // parámetro adicional
   );
 
 
double matrix::Loss(
  const matrix&       matrix_true,   // matriz de valores verdaderos
  ENUM_LOSS_FUNCTION  loss,          // función de pérdida
   );
 
 
double matrix::Loss(
  const matrix&       matrix_true,   // matriz de valores verdaderos
  ENUM_LOSS_FUNCTION  loss,          // función de pérdida
  ENUM_MATRIX_AXIS    axis,          // eje
   ...                               // parámetro adicional
   );

Parámetros

vect_true/matrix_true

 [in] Vector o matriz de valores verdaderos.

loss

[in]  Función de pérdida de la enumeración ENUM_LOSS_FUNCTION.

axis

[in]  Valor de la enumeración ENUM_MATRIX_AXIS (AXIS_HORZ – eje horizontal, AXIS_VERT – eje vertical).

...

[in]  Solo la función de pérdida de Hubert (LOSS_HUBER) puede tener el parámetro delta adicional

Valor retornado

Valor double.

Cómo se usa el parámetro delta en la función de pérdida de Huber (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);

Observación

La tarea de entrenar una red neuronal consiste en encontrar coeficientes que minimicen el error en la muestra de entrenamiento, usando para ello la función de pérdida (loss function).

El valor de la función de pérdida describe la magnitud de desviación del valor predicho por el modelo respecto al valor real.

Dependiendo del tipo de tarea a resolver se usarán diferentes funciones de pérdida. Por ejemplo: para un problema de regresión, será mean squared error (MSE), para la clasificación binaria, será binary cross-entropy (BCE)..

Ejemplo de llamada de la función de pérdida de Huber:

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