# [AI] 일반화, 과소적합, 과대적합

## 일반화, 과대적합, 과소적합

---

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/161610_xdPmWROhAN7LQ3pxtl?q=80&s=1280x180&t=outside&f=webp)

### 일반화 Generalization

- 일반적으로 지도학습 모델은 학습 데이터로 훈련 뒤 평가 데이터에서도 정확하게 예측하기를 기대한다.

- 훈련된 모델이 처음 보는 데이터에 대해 정확하게 예측한다면 이러한 상태를 **일반화 (generalization)** 되었다고 한다.

- 모델이 항상 일반화되는 것은 아니다.

### 과대적합 (Overfitting)

- 머신러닝 모델을 학습할 때 학습 데이터셋이 지나치게 최적화하여 발생한다.

- 주어진 훈련 데이터에 비해 복잡한 모델을 사용한다면, 모델은 훈련 데이터에서만 정확한 성능을 보이고, 평가 데이터에서는 낮은 성능을 보인다.

- 즉, 훈련 데이터는 잘 예측하지만, 일반적인 특징을 학습하지 못해 평가 데이터에서는 낮은 성능을 보이는 상태를 **과대적합(Overfitting)**이라고 한다.

- 아래 데이터 셋처럼 데이터를 특정한 조건/구조를 지나치게 반영하면 고양이나 강아지 그림이라고 창의적으로 판단 할 수도 있다.

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/161621_Kg3yWASaqbb3zFf4lF?q=80&s=1280x180&t=outside&f=webp)

### 과소적합(underfitting)

- 과대 적합의 반대 개념이다.

- 주어진 훈련 데이터에 비해 너무 간단한 모델을 사용하면, 모델이 데이터에 존재하는 다양한 정보들을 제대로 학습하지 못한다.

- 이러한 경우 훈련 데이터에서도 나쁜 성능을 보이고 평가 데이터에서도 낮은 성능을 보이는 **과소적합(underfitting)**되었다고 한다.

## 모델 복잡도와 데이터셋 크기의 관계

---

- 데이터의 다양성이 클수록 더 복잡한 모델을 사용하면 좋은 성능을 얻을 수 있다.

- 일반적으로 더 큰 데이터셋(데이터 수, 특징 수)일수록 다양성이 높기 때문에 더 복잡한 모델을 사용할 수 있다.

- 하지만, 같은 데이터를 중복하거나 비슷한 데이터를 모으는 것은 다양성  증가에 도움이 되지 않는다.

- 데이터를 더 많이 수집하고 적절한 모델을 만들어 사용하면 지도 학습을 사용해 놀라운 결과를 얻을 수 있다.

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/161637_OEJpJGfSVk7wZF1GMl?q=80&s=1280x180&t=outside&f=webp)

## 과대적합, 과소적합 발생 여부 탐지

---

### 분산과 편향 기반 탐지

- 편향과 분산이 작은 경우 데이터가 target 근처에 잘 모여 분포해 있으므로 최적의(optimal) 솔루션이다.

**편향**

- 데이터가 target으로부터 떨어져 있는 정도

- 편향이 크면 과대 적합 박생

**분산**

- 데이터셋 내 데이터가 얼마나 퍼져 있는가

- 분산이 크면 과소적합 발생

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/161659_Kj1CgvEe4OgLw39x8u?q=80&s=1280x180&t=outside&f=webp)

### 산점도 그래프 기반 구분

- 결정 경계선(decision boundary)) 근처에 새로운 데이터가 주어지면 오분류의 가능성이 높아지게 되는 과대 적합이 발생

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/161713_aEm9lRWNpyqAwmgcHB?q=80&s=1280x180&t=outside&f=webp)

### 모델 복잡도 및 손실함수 기반 탐지

- error은 모델 학습에서 궁극적인 목푯값인 손실함수를 의미한다.

- x축은 모델의 복잡도, 단순히 epoch 수가 아니다.

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/161723_HzI41Am7f8BPKp4UUs?q=80&s=1280x180&t=outside&f=webp)

**과소적합 발생 구간**

- 모델이 지나치게 단순, 학습 데이터의 특성 반영X → train loss높게

- 일정 수준까지는 모델이 점차 복잡해질수록 train loss, validation loss 감소

- 모델의 성능에 도달하기 전까지는 과소적합이 발생했다고 한다.

**과대적합 발생 구간**

- 모델이 점차 복잡해지면 trian dataset에 따라 Gradien Descent 기법을 중심으로 모델이 학습 → train loss 꾸준히 감소

- 모델 복잡도가 일정 수준을 넘어가 모델이 training dataset에 overfitting되면 오히려 validation loss가 증가 → validation loss가 감소 후 증가하는 구간에서 과대적합 발생

**최적의 모델 적합 포인트**

- validation loss가 감소하다 증가하기 시작하기 직전의 포인트가 모델의 성능이 가낭 우수할 가능성(i.e. best fit)이 높다.

## 과대 적합 방지 방법

---

### 데이터 양 늘리기

- 데이터의 양이 적을 경우 해당 데이터의 특징 패턴이나 노이즈까지 학습 → 과적합 확률↑

- **데이터 증식 또는 증강 Data Augmentation**: 데이터가 적을 경우 기존의 데이터를 변형하고 추가하여 데이터의 양을 늘릴 수도 있음

- **역번역 Back Translation**: 데이터를 번역 후 재번역을 통해 새로운 데이터를 만들어냄

### 모델의 복잡도 줄이기

- 인공 신경망에서 복잡도는 은닉층의 수나 매개변수의 수 등으로 결정

- 인공신경망의 복잡도를 줄여 과적합 현상을 해결할 수 있다

### 학습 조기종료 Early stopping

- Epoch 내 validation loss가 감소하지 않으면 과대적합이 발생했다고 간주하고 학습을 종료

- validation loss가 가장 낮은 지점인 최적(optimal) epoch에서 모델을 저장해 주는 기법

- ecpoch는 하이퍼파라미터(hyperparameter, 초매개변수)로서 한 두번의 epoch에서는 validatino loss가 감소하지 않는 경우가 종종 발생하기 떄문에 3 이상의 값으로 설정해야 한다.

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/161735_Hsh7Hbf93GHkUlfPBe?q=80&s=1280x180&t=outside&f=webp)

### 가중치 규제 Regularization

- 모델을 좀 더 간단하게 만드는 방법

- L1 규제: 가중치 w들의 절대값 합계를 비용 함수에 추가

- L2 규제: 모든 가중치 w들의 제곱합을 비용함수에 추가

### 드롭아웃 Dropout

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/162237_x985EJNkEghvvYSbTJ?q=80&s=1280x180&t=outside&f=webp)

- 학습 과정에서 신경망의 일부를 사용하지 않는 방법

For the site tree, see the [root Markdown](https://slashpage.com/yerim-devnote.md).
