AI모델 훈련 기법

AI모델 성능 평가 (1) : 과적합(overfitting)과 과소적합(underfitting) 판단기준 및 해결방법

Ed2024 2024. 10. 14. 19:17

과적합(overfitting)과 과소적합(underfitting)은 머신러닝 모델의 성능을 평가할 때 중요한 개념입니다. 이 두 현상은 모델이 학습 데이터에 대한 일반화 능력에 영향을 미치며, 각각의 발생 기준과 해결 방법을 이해하는 것이 중요합니다.

 

여기서 말하는 "일반화 능력"은 모델이 학습 데이터에만 국한되지 않고, 새로운 데이터에도 적절하게 반응할 수 있는 능력을 의미합니다. , 학습 데이터로 훈련된 모델이 처음 보는 상황이나 데이터에 대해서도 정확한 예측을 할 수 있는 능력입니다. 일반화 능력에 영향을 미치는 두 가지 대표적인 현상이 과적합(overfitting)과소적합(underfitting)입니다.

 

 

 1. 과적합 (Overfitting)

과적합은 모델이 학습 데이터에 너무 잘 맞춰져서, 새로운 데이터(테스트 데이터)에 대해 일반화 능력이 떨어지는 경우를 말합니다. 학습 데이터에서 매우 높은 정확도를 보이지만, 테스트 데이터에서는 성능이 저하되는 경우에 발생합니다.

판단 기준 :

- 훈련 데이터에 대한 성능이 매우 우수하지만, 검증 또는 테스트 데이터에 대한 성능이 낮은 경우.

- 모델의 복잡성이 높아지면서 성능 향상이 더 이상 이루어지지 않거나, 오히려 테스트 데이터 성능이 감소하는 경우.

- 훈련 손실(loss)은 매우 낮지만, 검증 손실은 높은 경우.

  • 훈련 손실이 낮은 이유 : 모델이 학습 데이터에 매우 잘 맞춰져서 훈련 데이터를 정확히 예측할 수 있기 때문에 훈련 손실(loss)이 낮게 나타납니다. 모델이 학습 데이터에 포함된 패턴뿐만 아니라, 그 안의 노이즈나 특수한 사례까지 지나치게 학습했을 가능성이 큽니다.
  • 검증 손실이 높은 이유 : 검증 데이터는 모델이 직접 학습하지 않은 새로운 데이터입니다. 하지만 과적합된 모델은 학습 데이터에서만 잘 작동하고, 학습 데이터와는 다른 검증 데이터에서는 일반화되지 못해 예측이 부정확할 수 있습니다. 이로 인해 검증 손실이 높아지는 것입니다.

원인 :

Ø  모델 복잡도: 모델이 너무 복잡해서 학습 데이터의 모든 세부적인 패턴과 노이즈를 학습합니다. 신경망의 경우 레이어가 너무 많거나 노드 수가 너무 많을 때 발생할 수 있습니다.

Ø  학습 데이터 부족: 학습 데이터가 충분하지 않거나, 데이터가 다양한 패턴을 충분히 포괄하지 못하는 경우 과적합이 발생하기 쉽습니다.

Ø  정규화 부족: 정규화(regularization) 기법을 사용하지 않으면 모델이 과도하게 학습 데이터에 맞춰질 수 있습니다.

 

해결 방법 :

Ø  정규화(Regularization): L1, L2 정규화와 같은 기법을 사용하여 모델의 복잡도를 줄이고, 과적합을 방지할 수 있습니다. 이는 모델이 너무 복잡해지는 것을 억제하는 역할을 합니다.

Ø  드롭아웃(Dropout): 신경망에서는 드롭아웃을 사용하여 학습 중에 일부 뉴런을 무작위로 제거함으로써, 특정 뉴런에 의존하지 않도록 하여 과적합을 방지할 수 있습니다.

Ø  학습 데이터 증대: 더 많은 데이터를 수집하거나, 기존 데이터를 변형해 다양한 상황을 포함하도록 하면 모델이 더 일반화될 가능성이 높아집니다.

Ø  모델 간단화: 모델의 복잡도를 줄여서 학습 데이터에 지나치게 맞춰지는 현상을 억제할 수 있습니다. 예를 들어, 신경망의 레이어 수를 줄이거나, 결정 트리의 깊이를 줄이는 방식입니다.

Ø  교차 검증(Cross-validation): 데이터의 다른 부분을 검증 데이터로 사용하여 모델의 일반화 능력을 확인합니다.

Ø  조기 종료(Early stopping): 검증 손실이 더 이상 감소하지 않을 때 학습을 중단하는 방법입니다.

 

 

 2. 과소적합 (Underfitting)

과소적합은 모델이 학습 데이터의 패턴을 충분히 학습하지 못하는 경우입니다. 이는 모델의 복잡도가 낮거나, 학습 과정에서 충분한 패턴을 찾아내지 못했을 때 발생합니다.

 

판단 기준 :

- 훈련 데이터와 검증 데이터 모두에서 성능이 낮은 경우.

- 훈련 손실과 검증 손실이 모두 높고, 더 이상 개선되지 않는 경우.

- 단순한 모델이 너무 복잡한 문제를 해결하려 할 때 발생합니다.

 

해결 방법 :

- 더 복잡한 모델 사용: 모델의 복잡도를 늘려서 더 많은 패턴을 학습할 수 있도록 합니다(: 더 많은 층을 가진 신경망, 더 복잡한 규칙 사용).

- 더 많은 특성(Features) 추가: 모델이 학습할 수 있는 입력 데이터를 풍부하게 만듭니다.

- 충분한 학습: 학습이 부족한 경우 더 많은 학습 반복을 실행합니다.

 

 

3. 과적합 및 과소적합 진단에 사용할 수 있는 도구들

1) 교차 검증(Cross-validation): 모델의 성능을 평가하는 데 널리 사용되는 기법으로, 데이터를 여러 부분으로 나누어 학습과 검증을 반복하는 방식입니다. 이를 통해 과적합과 과소적합을 진단할 수 있습니다.

 

2) 학습 곡선(Learning Curves): 훈련 손실과 검증 손실을 시각적으로 나타낸 그래프를 통해 과적합과 과소적합 여부를 쉽게 파악할 수 있습니다.

   - 과적합인 경우: 훈련 손실이 낮지만 검증 손실이 높습니다.

   - 과소적합인 경우: 훈련 손실과 검증 손실이 모두 높습니다.

 

3) Grid Search Random Search: 하이퍼파라미터 최적화 기법으로, 여러 하이퍼파라미터 조합을 통해 모델 성능을 최적화할 수 있습니다. 적절한 하이퍼파라미터를 선택함으로써 과적합과 과소적합을 피할 수 있습니다. 하이퍼파라미터 최적화 기법에 대하여 추가적으로 설명하면, 하이퍼파라미터 최적화 기법은 기계 학습 모델의 성능을 극대화하기 위해 하이퍼파라미터 값을 최적으로 설정하는 과정입니다. 하이퍼파라미터는 모델의 학습 과정이나 구조를 제어하는 변수로, 모델이 학습 데이터에서 직접 학습하는 것이 아닌, 사람이 미리 설정해주는 값입니다. 예를 들어, 신경망에서 학습률(learning rate), 은닉층(hidden layers)의 수, 드롭아웃(dropout) 비율 등이 하이퍼파라미터에 해당합니다. 하이퍼파라미터를 잘못 설정하면 모델이 과적합이나 과소적합을 겪을 수 있기 때문에, 적절한 하이퍼파라미터를 선택하는 것이 중요합니다. 하이퍼파라미터 최적화 기법은 이러한 최적의 값을 찾기 위한 여러 방법들을 의미합니다.

 

4) Scikit-learn: Python의 대표적인 머신러닝 라이브러리로, 과적합 및 과소적합 문제를 해결하기 위한 다양한 도구들을 제공합니다. 예를 들어, 교차 검증, 정규화, 그리드 서치 등의 기법을 쉽게 사용할 수 있습니다.

 

5) Keras/TensorFlow: 딥러닝 모델에서 과적합을 방지하기 위한 드롭아웃, 정규화, 조기 종료 등 다양한 기법을 지원합니다. 학습 과정에서 손실과 정확도를 시각적으로 모니터링할 수 있는 도구도 제공됩니다.

 

6) XGBoost, LightGBM: 이러한 부스팅 계열의 알고리즘은 과적합 방지를 위한 다양한 하이퍼파라미터 설정(: `max_depth`, `min_child_weight`, `learning_rate`)을 지원하여 성능을 튜닝할 수 있습니다.

 

위와 같은 기법과 도구들을 활용하여 모델의 성능을 최적화하고, 과적합과 과소적합 문제를 해결할 수 있습니다.