제가 공부하면서 느낀 내용을 게시하기 때문에 이론이 실제와 다를 수 있습니다. 문제점과 틀린점이 있다면 댓글로 말해주시면 감사하겠습니다.
kook의 AI 공부 블로그 주인장
과적합 Overfitting
왼쪽부터 과소적합 – 적합 – 과적합 순이다.
(사실, 적합이라는 단어는 적절하지 않지만 이해하기 좋기때문에 사용함)
과소적합 : 모델이 학습데이터의 특성을 상당 수 학습하지 못한 상태.
적합 : 모델이 학습데이터의 특성을 적당히 학습하여 Test 데이터에도 높은 정확도를 보일 때.
과적합 : 모델이 학습데이터의 특성을 너무 학습하여 Test 데이터의 성능이 오히려 더 떨어지는 현상.
과적합이 생기는 종류
과적합은 데이터를 여러 번 반복하여도 발생하지만 다른 이유로도 발생한다.
- 데이터에 비해 모델의 파라미터가 너무 클 때 – 공통된 특성이 아닌 노이즈까지 학습해버림.
- 데이터가 너무 적을 때 – 데이터의 우연적 특성을 학습함(검은 고양이)
- 데이터의 비율이 불균형할 때 – 높은 정답률만 추구하게됨.
이렇게 나타낼 수 있다.
아래는 1번과 2번 상황일 때를 나타낸 것이다.
모델 차수와 데이터 수를 조절하며 확인해보자.
Overfitting
<Model Complexity & Data Size>
Model Prediction vs Data
Train vs Test Error Curve (Validation)
1번과 2번의 설명을 보면 비슷한거 아닌가? 라는 생각이 들 수 있다.
둘 다 데이터 수의 맞게 적당한 크기에 모델을 고르면 된다는 말이지만,
원인을 진단하고 해결책을 제시하는 실무 관점에서는 엄연히 다른 문제로 구분된다.
| 구분 | 1. 파라미터가 너무 많다 (거대한 모델) | 2. 데이터가 너무 적다 (부족한 데이터) |
| 상황 | 데이터는 충분히 많이 모았지만 모델을 너무 크고 복잡하게 설계 | 모델은 지극히 평범한 크기인데 데이터 수집 자체가 물리적으로 불가능 |
| 예시 | 이미지 100장 구분하는데 100억개의 파라미터 모델 사용 | 희귀 병 진단 모델 개발 중, 전 세계 환자 데이터가 50건밖에 없음 |
<3번 데이터가 불균형할 때> 같은 경우는 왜 과적합이 되냐면
희귀병 진단에서 95퍼센트의 데이터가 정상이고 5퍼센트가 양성일 때,
모델은 ‘정상’이라고 출력만 해도 95퍼센트의 정확도가 나오게 되니 문제가 된다는 말이다.
과적합 해결법
Case 1 처럼 모델의 크기가 클 때는 모델의 레이어 수를 줄이거나 Dropout, 정규화 방식을 도입하여 해결한다.(Dropout이나 정규화는 아래 정규화 파트에서 더 다룰게욤.)
Case 2 같은 경우는 Data Augmentation(데이터 증강) 이나 이미 대규모 데이터로 학습된 사전학습 모델(Pre-trained Model)을 가져와 미세조정(Fine-tuning), 자기주도학습(Self-Supervised Learning)가 있다.
또한, 데이터를 더 수집하는 방식이 존재한다.(비용 문제가 발생)
Case 3 Data Imbalance 는 오버샘플링, 언더샘플링, 데이터 증강, 손실 함수 변경, 평가 지표 등이 있다.
(다른 글에서 자세하게 다룸!)
정규화 Regularization
정규화란 무엇일까?
모델이 훈련 데이터의 노이즈까지 지나치게 외우지 못하도록 모델의 가중치(Weight)에 벌점(Penalty)을 부여하여 모델을 강제로 단순하게 만드는 기법
$$ Loss(w_1, w_2) = (w_1 – 3)^2 + (w_2 – 2)^2 $$
라는 손실함수가 존재한다고 해보자.
Loss가 가장 작은 \(w_1\)과 \(w_2\)은 3, 2 이다.
여기서 \(\lambda(w_1^2 + w_2^2)\)를 추가해보자
$$ Loss(w_1, w_2) = (w_1 – 3)^2 + (w_2 – 2)^2 + \lambda(w_1^2 + w_2^2) $$
(\(\lambda = 1\)) 다시 이 식에 3, 2를 넣어보자 그럼 결과는 13 이다.
(1, 1) = 7
(2, 1) = 7
(3, 1) = 11
(1, 2) = 9
(1, 3) = 15
(2, 2) = 9
이런식으로 값이 0 이하로 안된다.
3D L2 Regularized Loss Surface
LossL2(w₁, w₂) = (w₁ – 3)² + (w₂ – 2)² + λ(w₁² + w₂²)
이거 시점 좀 조절하고 글 위치도 조절해야함