과적합 줄이기

PyTorch로 배우는 딥러닝 입문

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

과적합의 원인

  • 과적합: 보지 못한 데이터에 일반화하지 못함
    • 모델이 학습 데이터를 암기함
    • 학습 데이터는 잘 맞지만 검증 데이터 성능은 낮음
  • 가능한 원인:
문제 해결책
데이터셋이 충분히 크지 않음 데이터 추가 수집 / 데이터 증강 사용
모델 용량이 과함 모델 축소 / 드롭아웃 추가
가중치가 너무 큼 가중치 감쇠
PyTorch로 배우는 딥러닝 입문

과적합 줄이기

전략:

  • 모델 크기 축소 또는 드롭아웃 레이어 추가
  • 파라미터가 작게 유지되도록 가중치 감쇠 사용
  • 새 데이터 확보 또는 데이터 증강
PyTorch로 배우는 딥러닝 입문

드롭아웃 레이어로 "정규화"

  • 훈련 중 입력 텐서의 일부 요소를 무작위로 0으로 만듭니다
model = nn.Sequential(nn.Linear(8, 4),
                      nn.ReLU(),
                      nn.Dropout(p=0.5))
features = torch.randn((1, 8))
print(model(features))
tensor([[1.4655, 0.0000, 0.0000, 0.8456]], grad_fn=<MulBackward0>)
  • 드롭아웃은 활성화 함수 뒤에 추가합니다
  • 훈련과 평가에서 동작이 다름 - 훈련 시 model.train(), 평가 시 드롭아웃 비활성화를 위해 model.eval() 사용
PyTorch로 배우는 딥러닝 입문

가중치 감쇠로 정규화

optimizer = optim.SGD(model.parameters(), lr=0.001, weight_decay=0.0001)

  • 옵티마이저의 weight_decay 파라미터로 제어하며, 보통 작은 값(예: 0.0001)을 사용합니다
  • 가중치 감쇠는 최적화 시 패널티를 추가해 가중치를 작게 유지하도록 유도합니다
  • 과적합을 줄이고 일반화를 개선합니다
PyTorch로 배우는 딥러닝 입문

데이터 증강

데이터 증강 예시

PyTorch로 배우는 딥러닝 입문

실습해 봅시다!

PyTorch로 배우는 딥러닝 입문

Preparing Video For Download...