AI 어떻게 배워야 좋을까요? 🤔
#인공지능 

Loss vs Accuracy

Loss 와 metric 의 경향성을 통해 딥러닝의 학습 상태를 가늠해봅니다. 최적화 작업은 비정형적인 다양한 요소들이 참여하는 과정이기때문에, 학습 상태를 다각적으로 관찰하는 것이 중요합니다. 유형 별 사례과 현재 나의 상황을 비교해볼 수 있습니다.

2024-03-14 | 나융

Fundamentals

Loss 와 metric(accuracy)은 문제를 해결하기 위해 만든 모델(예. 신경망)을 최적화시키기 위해 사용됩니다.

Loss

Loss 는 실제 데이터로 기록된 정답과 우리의 모델이 예측한 값 사이의 차이로 정의됩니다. 딥러닝에서 가장 일반적으로 활용되는 손실 함수로 cross-entropy 가 있습니다. 다음 함수로 정의하면,

    $$ \text{Cross-entropy}=-\sum_{i=1}^{n}\sum_{j=1}^{m}y_{i,j}log(p_{i,j}) $$

$y_{i,j}$는 샘플이 클래스에 속한다는 $\text{TRUE}$ 값을 나타냅니다. 즉, 샘플 $\text{i}$가 클래스 $\text{j}$에 속한다면 1 을 나타내고, 그렇지 않은 경우 0 이 됩니다. 모델의 예측값인 $p_{i,j}$ 는 샘플 $\text{i}$ 가 클래스 $\text{j}$ 에 속할 확률을 말합니다.

Accuracy

Accuracy 는 우리의 모델이 어떤 성능을 보이고 있는지 표현하는 지표 중 하나 입니다. 다른 지표들이 궁금하다면 여기 를 참고해보세요. Accuracy의 정의는 다음과 같습니다.

    $$ \text{Accuracy}=\frac{\text{No of correct predictions}}{\text{Total no of predictions}} $$

대부분의 경우 loss 가 감소하면 정확도가 증가하는 경향성을 관찰할 수 있습니다. 하지만, 아래 예시와 같이 전혀 다른 사실이 나타나는 경우가 있습니다.

 

https://kharshit.github.io/blog/2018/12/07/loss-vs-accuracy

 

Case 2의 경우 loss 가 증가했음에도 정확도는 오히려 감소하지 않고 상승하였습니다. 도대체 무슨 상황이 벌어진 걸까요?

이런 현상은 정확도와 손실함수가 각각 서로 다른 대상을 측정하기 때문에 발생합니다. Cross-entropy 은 클래스 레이블에 더 가까운 예측할 수록 더 낮은 loss 값을 제공합니다. 반면 정확도는 특정 샘플에 대해 이진화된 정답/오답을 가름합니다. 즉 여기에서 loss 는 정답에 경우 1에 가까울 수록, 오답의 경우 0에 가깝도록 설정된 연속적인 변수인데 반해, 정확도는 단계별로 나뉘어 떨어지는 이산적인 표현을 나타냅니다. 이는 위 그림에서 loss와 정확도의 값을 계산하는 과정에서 확인할 수 있습니다. 즉, 손실 함수와 지표가 최적화 시키고 싶은 대상이 서로 다르기 때문에 발생하는 문제로 볼 수 있습니다.

하나는 높은 정확도와 높은 loss 값을 가지고, 다른 하나는 낮은 정확도와 낮은 loss 값을 가지는 두 종류 모델이 있을때, 우리는 어떤 모델을 선택할까요? 정확도와 손실함수 중 어떤 것을 확인할 것인지 정하기 전에, 스스로 물어봐야할 질문은 ‘정확도와 손실함수 중에 어떤 것이 중요하다고 생각하는가?’ 입니다. 손실함수를 중요하게 생각한다면 앞선 두 모델 중 더 작은 손실함수값을 가진 모델을 선택하세요. 만약 정확도가 중요하다면 더 높은 정확도를 보인 모델을 선택하면 됩니다.

 


일반적인 손실 함수 경향성

머신러닝의 다양한 학습 상황을 이해하기 위해 학습 곡선 training Curve 을 그려 보면 몇 가지 중요한 경향성을 발견할 수 있습니다. 학습 곡선은 동일 시점에서 학습-검증 데이터셋에 대해 비교할 수 있습니다. 또한 손실 함수와 지표의 경향성 변화를 동시에 관찰해보기에 유용합니다. 많은 경우 학습 손실과 검증 손실, 학습 정확도와 검증 정확도를 별도의 그래프로 나누어 시각화합니다. 이렇게 하면 각 곡선의 경향성을 보다 명확히 파악할 수 있습니다.

 

https://www.javatpoint.com/overfitting-in-machine-learning

https://machinelearningmastery.com/diagnose-overfitting-underfitting-lstm-models/

 

학습 초기에는 손실 함수와 정확도가 급격히 개선되다가 점점 완만해지는 모습을 보입니다. 이는 모델이 안정적으로 데이터를 잘 학습하고 있음을 의미합니다.

과적합(overfitting): 400 에포크 부근에서부터 검증 손실이 정체되거나 악화되는 모습이 보입니다. 이는 과적합이 발생하고 있음을 시사합니다. 모델이 학습 데이터에는 지나치게 최적화되어 있지만, 새로운 데이터에 대한 일반화 성능이 떨어지는 상황입니다.

조기 종료(early stopping): 과적합이 발생하기 전인 300-350 에포크 부근에서 학습을 중단하는 것이 가장 좋은 성능을 내는 지점이라고 예상할 수 있습니다. 이렇게 과적합이 발생하기 전에 학습을 중단하는 기법을 조기 종료라고 합니다.

 

Loss vs metric 한 눈에 진단하기

유형 별 loss 경향성

아래 그래프는 일반적으로 관찰되는 loss 그래프의 유형을 보여줍니다. 가로축은 학습 진행정도를 나타내는 epoch 입니다.

 

https://machinelearningmastery.com/learning-curves-for-diagnosing-machine-learning-model-performance/

  1. Train Set 과 validation set 사이의 연관성이 적어 보입니다. 일반적인 성능을 끌어올리기 위해 추가적인 학습데이터를 모아볼 때입니다.
  2. Train set 과 validation set 가 공유하는 특징이 현저히 적어보입니다. 학습 과정에서 데이터를 표현하는 유효한 패턴을 추출하지 못하고 있습니다.
  3. Validation set 이 지닌 특징이 train set 에 비해 상대적으로 덜 복잡합니다. 성능이 서로 역전되어 보입니다.

 

유형 별 Metric 경향성

아래 그래프는 일반적으로 관찰되는 metric 그래프의 유형을 보여줍니다. 가로축은 학습 진행정도를 나타내는 epoch 입니다.

 

https://machinelearningmastery.com/how-to-fix-vanishing-gradients-using-the-rectified-linear-activation-function/

  1. 학습 초기 최적화 과정을 수행하면서, 일부 돌출된 지점이 발생하였습니다. 약간의 추가 epoch 을 거쳐 train-test 곡선의 일반화 간극이 좁아졌습니다. 전반적으로 정상적인 학습이 진행된 것으로 보입니다.
  2. 모델이 효과적인 패턴을 찾지 못해, train 곡선이 accuracy 50 % 근처 지점에 머물러 있습니다. Train-test 간극이 점점 벌어지면서, 성능은 더 악화되고 있습니다. 과대적합 상황이 의심됩니다.
  3. 학습 과정 중 50 % 근처로 지표가 머물면서 진동하고 있습니다. 가중치 갱신이 반복됨에도 불구하고 성능이 머물러 있음으로 미루어 vanishing gradient 문제가 의심됩니다.

 

Loss 와 Metric 이 서로 충돌하는 지점

Loss(blue) vs Accuracy(orange) https://www.jussihuotari.com/2018/01/17/why-loss-and-accuracy-metrics-conflict/

 

이처럼 손실 함수와 지표를 동시에 시각화하면 모델의 학습 과정과 문제점을 쉽게 파악할 수 있습니다. 전체 그래프를 변화점 전후 구간으로 구분하여 어떤 상황인지 떠올려 볼 수 있습니다. 이를 바탕으로 과적합 방지를 위한 규제 기법 적용, 조기 종료 시점 결정, 하이퍼파라미터 튜닝 등의 전략을 세울 수 있습니다. 궁극적으로 모델의 일반화 성능을 극대화할 수 있습니다.

  1. 다중 지표 시각화: 문제 유형에 따라 여러 개의 지표를 함께 살펴볼 필요가 있습니다. 예를 들어 불균형 데이터셋 분류 문제에서는 정확도 외에 정밀도, 재현율, F1 스코어 등의 지표도 중요합니다. 이러한 다중 지표를 하나의 그래프에 함께 표시하면 모델의 성능을 종합적으로 분석할 수 있습니다.
  2. 학습 스케줄러 영향 분석: 학습률 스케줄러를 사용하는 경우, 스케줄러가 적용되는 시점에서 손실 함수와 지표 곡선에 변화가 발생합니다. 이러한 변화를 그래프에서 확인하여 스케줄러의 효과를 분석할 수 있습니다.
  3. 앙상블 모델 비교: 단일 모델 외에 여러 모델을 앙상블한 경우, 각 모델의 손실 함수와 지표 곡선을 동일한 그래프에 표시하여 비교할 수 있습니다. 이를 통해 가장 좋은 성능을 내는 모델을 선택하거나 앙상블 전략을 수립할 수 있습니다.
  4. 부분 학습 곡선 확대: 전체 학습 과정 중 특정 구간에 집중하여 분석하고 싶은 경우, 해당 구간의 손실 함수와 지표 곡선을 확대하여 표시할 수 있습니다. 이를 통해 미세한 변화도 자세히 관찰할 수 있습니다.
  5. 다양한 시각화 기법 활용: 단순한 선 그래프 외에도 산점도, 박스플롯, 히트맵 등 다양한 시각화 기법을 활용하여 손실 함수와 지표를 표현할 수 있습니다. 이를 통해 데이터의 특성과 모델의 성능을 더욱 효과적으로 분석할 수 있습니다.

이처럼 손실 함수와 지표를 시각화할 때 다양한 기법과 분석 방법을 적용하면, 딥러닝 모델의 학습 과정을 보다 깊이 있게 이해하고 성능 개선을 위한 인사이트를 얻을 수 있습니다. 시각화는 모델 개발 과정에서 필수적인 분석 도구가 됩니다.

 

실습해보기 – Tensorflow Playground

이미지를 클릭하면 페이지로 이동합니다.

특정 데이터셋 형태에 적합한 모델 구조를 직접 설계해보는 연습은 어떨까요? 여러가지 규제들을 선택하면서 학습 상황을 스스로 개선해 보세요!

 

Reference