과적합은 실제로 어떻게 보일까
과적합은 학습 손실은 계속 낮아지는데 검증 손실은 오르기 시작하는 현상이야. 모델이 별도로 떼어 둔 데이터에는 적용되지 않는 학습 세트만의 패턴을 외우는 거지. 큰 신경망은 순수한 노이즈조차 학습할 수 있어 (Zhang et al., 2017). 모델 용량은 거의 병목이 아니야. 중요한 건 모델이 정직하게 학습하도록 만드는 거야.
손실 곡선에서는 신호 3개를 읽어야 해. 첫째, 학습 손실과 검증 손실 사이의 격차를 봐. 둘째, 격차가 벌어진 뒤 검증 손실이 어느 방향으로 움직이는지 확인해. 셋째, 격차가 에폭 1부터 나타나는지 살펴봐. 그렇다면 데이터 누수나 규제 부족을 의심해야 해. 에폭 30쯤 나타난다면 모델 용량이 데이터셋 크기를 따라잡은 것일 수 있어.
팁: 학습 손실과 검증 손실을 단계 0부터 같은 축에 그려. 격차의 모양을 보면 무엇을 고쳐야 하는지 알 수 있어. 에폭 1부터 격차가 크게 벌어지면 데이터 누수나 과도한 모델 용량을 의심하고, 에폭 20 이후부터 격차가 커지면 규제를 강화해. 격차는 없지만 손실이 높다면 과소적합이나 잘못된 아키텍처일 가능성이 커.
표준 규제 도구
- 가중치 감쇠 (L2 / AdamW): 큰 가중치에 페널티를 주는 가장 저렴한 기본 선택이야.
- 드롭아웃: 학습 중 일부 유닛을 무작위로 비활성화해 기울기 노이즈를 완화해.
- 데이터 증강: 학습 세트를 인위적으로 확장해. 사용할 수 있다면 가장 효과가 큰 방법이야.
- 조기 종료: 검증 손실이 더 이상 개선되지 않으면 학습을 멈춰.
- 더 작은 모델: 때로는 이게 올바른 답이야.
"그냥 데이터를 더 줘"라는 답
과적합에 가장 확실하게 듣는 약은 더 많은 좋은 데이터야. 데이터 증강은 저렴한 방법이고, 관련 도메인의 사전 학습은 중간 정도 비용이 드는 방법이야. 어려운 예시에 직접 레이블을 붙이는 능동 학습은 비싼 방법이고. 이 세 가지는 모두 영리한 규제 기법보다 강력해.
원칙: 과적합은 모델링 문제처럼 보이는 데이터 문제야. 먼저 더 많은 좋은 데이터를 확보해. 규제 조정은 그다음이고, 모델 크기를 줄이는 건 두 방법이 모두 실패했을 때만 고려해.