학습 자료

과적합 — 왜 데이터를 학습 · 검증 · 테스트로 나누나


Article

2강에서 트랩 하나를 걸어뒀다. "손잡이를 돌려 예시를 맞힌다면, 예시를 통째로 외워버리면 되는 것 아닌가?" 그리고 답도 짧게 던졌다 — 외운 건 배운 게 아니다. 처음 보는 데이터에도 통해야 진짜 학습이라고.

이번 강은 그 문장을 정면으로 판다. 외워버리는 현상에는 이름이 있다. **과적합(overfitting)**이다. 그리고 이걸 막기 위해 데이터를 왜 셋으로 쪼개는지까지 본다.

배운 것과 외운 것은 성적표가 다르다

과적합을 눈으로 보는 가장 쉬운 방법은, 본 문제 성적처음 보는 문제 성적을 나란히 놓는 것이다.

학습이 계속될수록 벌어지는 두 성적 (개념도)
학습 데이터 정확도98
새 데이터 정확도55
실제 측정값이 아니라 방향을 보여주는 그림이다. 학습 데이터는 거의 완벽한데 새 데이터는 형편없다 — 이 벌어짐이 과적합의 증거다.

본 문제에서는 98점인데 처음 보는 문제에서는 55점. 이게 바로 답안지를 외운 학생의 성적표다. 손잡이가 정답을 "이해"한 게 아니라, 학습 데이터의 사소한 특징까지, 심지어 노이즈까지 통째로 외워버린 상태다.

세 가지 상태

과소적합

너무 대충 배웠다

  • 학습 데이터에서도 성적이 낮다
  • 패턴을 제대로 못 잡았다
  • 손잡이가 아직 정답 근처에도 못 갔다

적당히 배웠다

노리는 상태

  • 학습 데이터와 새 데이터 성적이 비슷하다
  • 공통된 패턴을 잡았다
  • 처음 보는 데이터에도 감이 통한다

과적합

너무 세세히 외웠다

  • 학습 데이터 성적만 비정상적으로 높다
  • 노이즈까지 규칙으로 착각했다
  • 새 데이터 앞에서 무너진다
머신러닝이 노리는 자리는 가운데다. 너무 못 배워도, 너무 세세히 외워도 실전에서는 못 쓴다.

왜 세 조각으로 나누나

문제는 여기서 생긴다. 학습에 쓴 데이터로 성적을 매기면, 외운 건지 배운 건지 구분이 안 된다. 답안지를 외운 학생도 그 답안지로 시험 보면 100점을 받으니까. 그래서 데이터를 애초에 세 조각으로 나눠둔다.

데이터를 세 조각으로 나누는 이유
  1. 01

    학습 데이터 (train)

    손잡이를 실제로 돌리는 데 쓴다. 2강의 그 예측-채점-조정 고리를 여기서 돌린다.

  2. 02

    검증 데이터 (validation)

    학습 도중 중간 점검용. 아직 안 보여준 데이터로 "지금 잘 배우고 있나"를 확인하며 설정을 조정한다.

  3. 03

    테스트 데이터 (test)

    모든 조정이 끝난 뒤, 맨 마지막에 딱 한 번만 연다. 진짜 성적표다.

세 조각의 역할이 겹치지 않는 게 핵심이다. 학습 데이터는 손잡이를 돌리는 재료, 검증 데이터는 "이 정도면 됐나"를 판단하는 잣대, 테스트 데이터는 아무도 손대지 않고 아껴뒀다가 진짜 실력을 재는 최종 시험이다.

정리하면

과적합은 학습 데이터를 답으로 외워버려 새 데이터에 못 통하는 상태다. 데이터를 학습·검증·테스트로 나눠 막는다.

다시 짚어보기
  1. 01

    과적합은 외운 상태다

    학습 데이터 성적은 높은데 새 데이터 성적이 낮으면 과적합을 의심한다.

  2. 02

    과소적합 · 적당함 · 과적합, 셋 사이의 균형이 목표다

    너무 못 배워도, 너무 세세히 외워도 실전에선 못 쓴다.

  3. 03

    학습 데이터로는 외운 건지 배운 건지 알 수 없다

    그래서 처음부터 데이터를 세 조각으로 나눠둔다.

  4. 04

    테스트 데이터는 맨 마지막에 딱 한 번

    자주 열어보면 검증 데이터처럼 오염돼, 진짜 성적표 역할을 못 한다.

Part 2가 끝났다. 정답을 보여주며 가르치는 지도학습(5강), 정답 없이 무리를 짓는 비지도학습(6강), 모델이 실제로 먹는 재료인 특징과 라벨(7강), 그리고 배운 척 외워버리는 걸 막는 과적합과 데이터 분리(8강)까지 봤다.

다음 강의부터는 지도의 셋째 땅으로 들어간다. 2강에서 "손잡이가 수백만 개인 기계"라 불렀던 딥러닝, 그 손잡이들이 실제로 어떻게 생겼는지 — 신경망을 뉴런과 층과 가중치라는 비유로 그림으로 뜯어본다.

과적합 — 왜 데이터를 학습 · 검증 · 테스트로 나누나 — 디코드랩(DCODELAB)