AI 모델 성능 평가 지표로 loss function은 왜 사용하지 않는가?

1. loss function

 

데이터의 실제 정답과 모델이 내놓은 예측값의 차이로 정의되는 함수

 

그렇다면 이렇게 생각할 수 있다.

 

loss function의 값이 작을수록 모델의 성능이 좋은 것인가?

 

여러 모델을 학습시켜보고 loss function의 값이 작은 모델을 선택하면 되는 것 아닌가?

 

 

2. loss function과 evaluation metric

 

loss function은 딥러닝 모델 학습 중에 사용되고, 모델이 예측한 출력과 실제 출력 간의 차이를 측정

 

이 차이를 최소화함으로써 모델의 파라미터를 최적화하는 것이 목적이다.

 

반면 evaluation metric은 모델을 훈련하고 나서 사용되며, 모델이 새로운 데이터에 대해 얼마나 잘 일반화하고,

 

정확한 예측을 하는지 평가하는 지표이다.

 

또한 여러 모델이나 설정을 비교하여 가장 성능이 좋은 모델을 식별하는 데 사용된다.

 

즉, loss function은 학습 중에 모델이 원하는 출력을 얼마나 잘 내는지 측정할때 사용하고,

 

evaluation metric은 훈련 후, 모델이 보지 않은 새로운 데이터에 대해 얼마나 정확하게 측정하는지 사용하는 것

 

 

3. 차이점

 

1) 딥러닝 모델의 훈련 중에는 loss function을 통해 모델의 파라미터를 최적화하고,

 

훈련이 끝난 후에는 evaluation metric을 사용하여 모델의 성능을 평가

 

2) loss function의 선택은 모델의 구조나 작업의 특성에 따라 달라지지만,

 

evaluation metric은 모델 구조에 크게 의존하지 않고, 서로 다른 모델이나 설정을 비교할 때 사용

 

3) 딥러닝 모델을 훈련하는 궁극적인 목표는 loss function을 최소화하는 것,

 

모델을 평가하는 목적은 evaluation metric을 최대화하는 것

 

4) loss function은 값이 task나 데이터에 따라 달라져서 직관적으로 해석하기 어려운 경우가 많다.

 

반면 evaluation metric은 보다 해석이 용이하고, 다양한 작업 간 비교에도 사용할 수 있다.

 

 

4. 왜 loss function을 모델의 성능 평가에 사용하지 않는가?

 

1) 가장 큰 이유?는 해석이 직관적이지 않다는 것이다.

 

loss function은 모델이 학습할 때 예측값과 실제값의 차이를 얼마나 줄이는 가를 수치화한 값이지만, 

 

그 스케일이나 단위가 task마다 다르고 해석이 직관적이지 않다.

 

반면 evaluation metric(정확도, F1 score, AUC 등)은 실제 비즈니스나 사용자 관점에서 이해하기 쉬운 정답률, 오차 크기 등의 형태로 제공된다.

 

2) 학습하기 쉽게 인위적?으로 만들어진 surrogate objective

 

대부분의 loss function은 gradient descent optimization을 위해 만들어진 surrogate objective이다.

 

즉, 미분 가능하고 볼록성을 만족하게 만들어진 대리 목표이다.

 

하지만 실제로 중요한 목표(true objective)는 정확도를 높이는 것으로 이러한 지표와 1대1로 대응되지 않는다.

 

3) 비교하기 어렵다

 

서로 다른 모델 구조나, loss function을 사용할 때 loss function의 절댓값 자체가 비교 기준으로서 의미가 없다.

 

하지만 정확도같은 evaluation metric은 공통된 scale을 가지므로, 어느 쪽이 더 나은지를 비교하기 쉽다.

 

4) 일반화하기 어렵다.

 

loss function은 training set에서 최소화하는 것이 목표지만, evaluation metric은 test set에서 모델이 잘 동작하도록 평가하는 것이 목표이다.

 

loss function이 낮더라도 모델이 overfitting이 되어 실제로는 새로운 데이터에 대해 성능이 떨어지는 경우가 많다.

 

그러므로 별도의 evaluation metric으로 확인이 필요하다.

 

5. evaluation metric으로 모델을 직접 훈련하면 되는 것이 아닌가?

 

evaluation metric으로 모델을 직접 훈련하면 굳이 loss function을 쓸 필요 없는거 아닌가?

 

1) 미분 불가능하다.

 

정확도나 F1 score 등의 evaluation metric은 미분 불가능하다.

 

모델을 gradient descent로 학습하기 위해 미분 가능해야한다.

 

2) 볼록하지 않다(non convex)

 

evaluation metric은 볼록하지 않은 경우가 종종 있고, 이에 따라 local minimum에 빠지기 쉬운 문제가 많다.

 

3) 실용적이지 않다.

 

정밀도, f1 score 등 일부 evaluation metric에 대해 신뢰할 수 있는 값을 얻으려면 많은 샘플로 계산해야한다.

 

 

6. loss function의 선택

 

일반적으로 말하자면, 가장 중요하게 생각하는 평가 지표(evaluation metric)에 대응되는 손실 함수(loss function)를 최적화하는 것이 좋다고 생각합니다.

 

예를 들어, 여러분의 모델이 여러 특성(위치, 침실 수, 면적 등)을 기반으로 집값을 예측하는 목적이라고 가정해봅시다.


여러분은 이 모델을 훈련시켰고, 회사 동료이자 경쟁자인 또 다른 개발자도 자신만의 모델을 만들었습니다.


이제 두 사람이 상사에게 가서 자신들의 모델을 사용해보라고 제안합니다.

 

상사는 다음 100명의 고객에 대해 두 모델이 예측한 집값을 실제 집값과 비교해가며 꼼꼼히 확인합니다.


그리고 실제 가격에 더 근접한 예측을 한 모델이 더 뛰어나다고 판단할 것이고, 그 모델을 만든 사람이 승진 대상이 되겠죠.

 

그런데 여기서 중요한 질문이 생깁니다. 그 상사는 어떤 기준으로 모델을 평가할까요?

 

대부분의 경우, MSE(평균 제곱 오차)나 MAE(평균 절대 오차) 같은 평가 지표(metric)를 사용할 가능성이 높습니다.

 

만약 여러분이 미리 이 평가 지표를 알고 있었다면, 해당 지표와 동일한 손실 함수(loss function)를 사용해 모델을 훈련시키는 것이 타당합니다.


물론, 이 손실 함수가 경사하강법(gradient descent)에 적합한 수학적 특성을 가지고 있어야겠죠.

 

즉, 모델이 어떤 방식으로 평가될지를 고려해 손실 함수를 선택할 수 있다는 이야기입니다.

 

하지만 경우에 따라, 평가 지표로 사용되는 메트릭이 경사하강법에 적합하지 않은 경우도 있을 수 있습니다.


예를 들어, 여러 개의 지역 최솟값(local minima)이 존재하거나, 기울기 계산이 매우 비효율적인 상황일 수도 있죠.

 

위에서 말한 MAE의 경우를 예로 들면, 모델이 최소값에 근접할수록 학습률(learning rate)을 조정하는 추가 코드를 작성해야 합니다.

 

>>> 그래서 MSE를 보통 loss로 사용함


그렇지 않으면 학습이 최솟값을 지나쳐 버릴 수 있습니다.


이건 비교적 단순한 코드 수정이지만, 다른 경우에는 평가 지표를 손실 함수로 직접 사용하는 것이 오히려 모델 성능을 저하시킬 수도 있습니다.

 

따라서 가장 좋은 방법은, 문제에 적합하면서 경사하강법에 우호적인 손실 함수를 선택하고, 그걸로 학습을 시도해보는 것입니다.


그렇게 하면, 성능이 더 안정적으로 향상될 가능성이 높습니다.


반대로, 기울기 계산이 어려운 평가 지표를 그대로 손실 함수로 쓸 경우, 지역 최솟값에 갇히거나 제대로 학습되지 않을 수 있습니다.


단순히 회귀는 MSE, 분류는 Cross-Entropy로 무작정 사용하는 것이 아니라, 모델이 실제로 어떻게 사용될지를 고려해서 손실 함수를 설계해야 합니다.


대부분의 경우에는 이미 준비된 손실 함수가 존재하지만, 어떤 경우에는 평가 지표에 맞는 커스텀 손실 함수를 작성해야 할 수도 있습니다.

 

보통 이런식으로 어떤 상황에는 loss를 변형시켜야 학습에 유리해지는 경우가 있다는 뜻인듯?

 

 

그리고 이렇게 목표로 하는 평가 지표에 대응하는 loss들이 있다는 뜻같고

 

 

 

 

 

https://arxiv.org/abs/2307.02694

 

Loss Functions and Metrics in Deep Learning

This paper presents a comprehensive review of loss functions and performance metrics in deep learning, highlighting key developments and practical insights across diverse application areas. We begin by outlining fundamental considerations in classic tasks

arxiv.org

 

 

https://stats.stackexchange.com/questions/379264/why-do-we-use-loss-functions-to-estimate-a-model-instead-of-evaluation-metrics-l

 

Why do we use loss functions to estimate a model instead of evaluation metrics like accuracy?

When building a learning algorithm we are looking to maximize a given evaluation metric (say accuracy), but the algorithm will try to optimize a different loss function during learning (say MSE/ent...

stats.stackexchange.com

 

 

728x90