Loss

Calcula o valor da função de perda.

double vector::Loss(
  const vector&       vect_true,     // vetor de valores reais
  ENUM_LOSS_FUNCTION  loss,          // função de perda
   ...                               // parâmetro adicional
   );
 
 
double matrix::Loss(
  const matrix&       matrix_true,   // matriz de valores reais
  ENUM_LOSS_FUNCTION  loss,          // função de perda
   );
 
 
double matrix::Loss(
  const matrix&       matrix_true,   // matriz de valores reais
  ENUM_LOSS_FUNCTION  loss,          // função de perda
  ENUM_MATRIX_AXIS    axis,          // eixo
   ...                               // parâmetro adicional
   );

Parâmetros

vect_true/matrix_true

 [in] Vetor ou matriz de valores reais.

loss

[in]  Função de perda a partir da enumeração ENUM_LOSS_FUNCTION.

axis

[in]  Valor a partir da enumeração ENUM_MATRIX_AXIS (AXIS_HORZ – eixo horizontal, AXIS_VERT – eixo vertical).

...

[in]  Somente a função de perda Huber (LOSS_HUBER) pode ter o parâmetro delta adicional

Valor retornado

Valor double.

Como o parâmetro delta é usado na função de perda 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);

Observação

A tarefa de treinamento de rede neural é encontrar coeficientes que minimizem o erro na amostra de treinamento, usando a função de perda.

O valor da função de perda descreve a magnitude do desvio entre o valor previsto pelo modelo e o valor real.

Diferentes funções de perda são usadas, dependendo do tipo de problema a ser resolvido. Por exemplo: para um problema de regressão, o erro quadrático médio (mean squared error , MSE), para uma classificação binária, a entropia cruzada binária (binary cross-entropy, BCE).

Exemplo de uma chamada para a função de perda Hubert:

   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
*/