DeepLearning/개념

Loss functions for Regression

Excelsior-JH 2023. 5. 3. 21:20

Loss functions for Regression

1. Loss functions for regression

  • Mean Absolute Error (MAE)
  • Mean Absolute Percentage Error (MAPE)
  • Mean Squared Error (MSE)
  • Root Mean Squared Error (RMSE)
  • Huber Loss
  • Log-Cosh Loss

2. Mean Absolute Error (MAE, L1 Loss)

  • MAE는 가장 단순한 형태의 loss function이라고 할 수 있음
  • 각각의 실제값($y_i$)과 예측값($\hat{y}_i$) 간의 차이의 절대값을 구한 후 평균을 구한것을 MAE라 함
  • 수식은 다음과 같음

$$
\text{MAE} = \frac{1}{n} \sum_{i=1}^{n} \left| y_i - \hat{y}_i \right|
$$

 

MAE graph from Rohan Hirekerur

 

  • 위의 그래프에서 확인할 수 있듯이, MAE loss를 L1 loss라고 부르기도 함

2.1 Advantages

  • Loss를 계산하기 매우 간단한 구조에 해당함
  • 따라서, 계산 비용(computational cost)이 높지 않음
  • 제곱을 취해주는 MSE 보다 Outlier에 대해 Robust 함

2.2 Drawbacks

  • 스케일(scale)에 대해 의존적임
    • $y_i = 300$, $\hat{y}_i = 500$ 에 대한 에러비율(40%) 과, $y_i = 2000$, $\hat{y}_i = 1800$ 에 대한 에러비율(10%)에 대해 동일한 loss가 구해지게 됨
  • 절대값을 씌우기 때문에, 음수인지 양수인지에 대해 파악할 수 없음
  • 위의 그래프에서 확인할 수 있듯이, backpropagation시 모든 loss에 대해 동일한 가중치(gradient)가 적용됨 → 수렴하는 데 오래 걸릴 수 있음

3. Mean Absolute Percentage Error (MAPE)

  • MAPE는 MAE를 백분률로 변환해준 것
  • 따라서, MAPE는 스케일(scale)에 의존적이지 않음
  • 수식은 다음과 같음

$$
\text{MAPE} = \frac{1}{n} \sum_{i=1}^{n} \left| \frac{y_i - \hat{y}_i}{y_i} \right| \times 100%
$$

 

 

MAPE graph from Rohan Hirekerur

 

3.1 Advantages

  • 모든 에러에 대해 정규화(normalization)되기 때문에, 스케일에 의존적이지 않음
  • MAE와 마찬가지로 outlier에 대해 robust 함

3.2 Drawbacks

  • MAPE의 가장 치명적인 단점은 실제값 $y_i = 0$ 인 경우, 분모가 $0$이 되기 때문에 계산이 불가능해짐
  • 실제값 $y_i$에 따라 loss 값이 달라질 수 있음
    • 예를들어, $y_i=100, \hat{y}_i=70$의 MAPE는 $0.3$ 의 값을 가지고, $y_i=40, \hat{y}_i=70$ 의 MAPE 값은 0.75를 가지게 됨

4. Mean Squared Error (MSE, L2 Loss)

  • MSE는 각각의 실제값($y_i$)과 예측값($\hat{y}_i$) 간의 차이(에러)에 대해 제곱을 한 후 평균을 계산해 줌
  • MSE는 에러의 제곱에 비례하기 때문에, 에러가 큰 값에 대해 상대적으로 더 높은 패널티를 부여함
  • 수식은 다음과 같음

$$
\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} \left( y_i - \hat{y}_i \right)^2
$$

MSE graph from Rohan Hirekerur

  • 위의 식을 살펴보면, 분산과 동일한 구조를 가지는 것을 확인할 수 있음:
    • 분산은 아래의 식과 같이, 각 데이터 포인트와 평균의 차이를 제곱한 후 평균을 계산해 줌
    • 분산은 데이터가 평균으로부터 얼마나 퍼져 있는지를 나타내는 통계치라고 할 수 있음
    • $$
      \text{Var}(y) = \frac{1}{n} \sum_{i=1}^{n} \left(y_i - \bar{y}\right)^2
      $$
  • 즉, MSE 또한 분산과 마찬가지로 예측값이 실제값으로부터 얼마나 퍼져있는지를 나타내는 지표라고 할 수 있음

4.1 Advantages

  • 제곱항을 통해서 오차의 평균이 0이 되는것을 방지해 줌
    • 예를들어, 오차가 $+2, -2$ 인 경우에 제곱을 하지않고 오차의 평균을 구하게 되면 $0$이 되는 문제가 발생함
  • 위의 그래프에서 처럼, 작은 오차의 경우에는 MSE의 기울기(gradient)가 감소하므로, 최소값에 효율적으로 수렴할 수 있음

4.2 Drawbacks

  • 오차를 제곱하기 때문에, $\left| y_i - \hat{y}_i \right| > 1$ 인 경우 값이 기하급수적으로 커지게 됨
  • 따라서, backpropagation 시에 exploding 하는 경우가 발생할 수 있음
  • 또한, outlier에 민감하게 반응하므로, 이 outlier가 학습에 큰 영향을 미칠 수 있음

5. Root Mean Squared Error (RMSE)

  • RMSE는 MSE에 제곱근(square root)을 취해줌
  • 제곱근을 취해줌으로써, linear scoring method가 되지만 MSE 처럼 오차가 큰 값에 대해 더 많은 패널티를 부여해줄 수 있음
  • 수식은 다음과 같음

$$
\text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} \left( y_i - \hat{y}_i \right)^2}
$$

 

RMSE graph from Rohan Hirekerur

 

 

5.1 Advantages

  • MSE에 비해, $\left| y_i - \hat{y}_i \right| > 1$ 인 경우 값이 기하급수적으로 커지게 되는 문제를 완화해줄 수 있음
  • MAE와 마찬가지로 outlier에 대해 robust함

5.2 Drawbacks

  • MAE처럼 0 근처에서도 gradient 값이 거의 유지되기 때문에 수렴이 어려울 수 있음

6. MAE vs MSE vs RMSE vs MAPE

Loss functions from Rohan Hirekerur

 

7. Huber Loss

  • Huber Loss는 MSE와 MAE를 반영한 loss function이라고 할 수 있음
  • 하이퍼파라미터인 일정한 범위 $\delta$에 대해 $\delta$안에 속하면 오차를 제곱하고, 그 밖에 있으면 오차의 절대값을 구해줌

$$
l \left(y_i, \hat{y}_i \right) = \begin{cases}
\frac{1}{2} \left( y_i - \hat{y}_i \right)^2, & \text{for } \left| y_i - \hat{y}_i \right| < \delta \
\delta \big( \left| y_i - \hat{y}_i \right| - \frac{1}{2} \delta \big), & \text{otherwise}
\end{cases}
$$

  • 위의 식에서 $\delta = 1$ 경우, SmoothL1Loss 라고 함

Huber Loss functions from Rohan Hirekerur

 

7.1 Advantages

  • 하이퍼파라미터인 $\delta$를 통해 Loss를 조절할 수 있음
  • $\delta$ 이상의 값인 outlier에 대해서는 MSE에 비해 더 robust함
  • $\delta$ 이하의 값에 대해서는 backpropagation시 더 잘 수렴할 수 있음

7.2 Drawbacks

  • $\delta$ 라는 조건이 붙으므로, MAE나 MSE에 비해 계산 비용이 상대적으로 높음
  • 하이퍼파라미터 $\delta$에 대한 최적값도 구해야하는 번거로움이 있음

8. Log-Cosh Loss

  • Log-Cosh Loss는 Huber Loss처럼, linear한 부분과 quadratic한 부분을 합친 loss function이라 할 수 있음
  • 가장 큰 차이점은, Huber Loss는 1차 미분만 가능한데 비해 Log-Cosh Loss는 2차미분이 가능함

$$
\text{Logcosh}(y_i, \hat{y}_{i}) = \sum_{i=1}^{n} \log{\big( \cosh(y_i - \hat{y}_i) \big)}
$$

Log-Cosh Loss from Rohan Hirekerur

 

8.1 Advantages

  • 2차 미분이 가능함
  • Huber Loss에 비해 계산 비용이 적음

8.2 Drawbacks

  • Huber Loss에 있는 하이퍼파라미터 $\delta$가 없기 때문에, less adaptive 함

9. Comparison of Loss Functions

Loss Functions from Rohan Hirekerur

 

10. Conclusion

Loss Function 중 Regression과 관련된 Loss function을 살펴보았다. 이 글을 정리한 이유는 얼마전 Regression 모델을 PyTorch DistibutedDataParallel(DDP)로 학습시켜야 했는데, 학습중 NaN 값이 나타나는 문제가 발생했다. 난 당연히 DDP를 처음 써봐서 '프로그래밍을 잘못해줬구나' 라고 생각했는데, 디버깅을 하고 보니 사용했던 MSE loss가 기하급수적으로 증가해서 NaN값이 발생하는 것이었다. 이 문제를 해결하고자 Regression과 관련된 Loss function을 찾던 중 Rohan Hirekerur 의 블로그를 보게 되었고, 이를 기반으로 정리하게 되었다.