Loss

손실 함수의 값을 계산합니다.

double vector::Loss(
  const vector&       vect_true,     // 참인 값의 벡터
  ENUM_LOSS_FUNCTION  loss,          // 손실 함수
   ...                               // 추가 매개변수
   );
 
 
double matrix::Loss(
  const matrix&       matrix_true,   // 참인 값의 행렬
  ENUM_LOSS_FUNCTION  loss,          // 손실 함수
   );
 
 
double matrix::Loss(
  const matrix&       matrix_true,   // 참인 값의 행렬
  ENUM_LOSS_FUNCTION  loss,          // 손실 함수
  ENUM_MATRIX_AXIS    axis,          // axis
   ...                               // 추가 매개변수
   );

매개 변수

vect_true/matrix_true

 [in] 참인 값의 행렬 혹은 벡터.

loss

【in】ENUM_LOSS_FUNCTION 열거fh qnxjdml 손실 함수.

axis

[in]ENUM_MATRIX_AXIS 열거형 값(AXIS_HORZ — 가로축, AXIS_VERT — 세로축).

...

【in】 추가 매개변수 'delta'는 Hubert 손실 함수(LOSS_HUBER)에서만 사용할 수 있습니다.

Return Value

더블 값

Hubert 손실 함수(LOSS_HUBER)에서 'delta' 매개변수가 사용되는 방식

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

참조

신경망은 손실 함수가 사용되는 학습 샘플의 오류를 최소화하는 알고리즘을 찾는 것을 목표로 합니다.

손실 함수의 값은 모델이 예측한 값이 실제 값과 얼마나 다른지를 나타냅니다.

문제에 따라 각기 다른 손실 함수가 사용됩니다. 예를 들어 평균 제곱 오차(Mean Squared Error)(MSE)는 회귀 문제에 사용되며 Binary Cross-Entropy(BCE)는 이진 분류 목적으로 사용됩니다.

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