강좌 강좌
과적합 입문: 훈련에서는 잘 맞히는데 새 데이터에서는 틀리는 이유
머신러닝 모델이 훈련할 때는 좋은 성적을 내다가 새 데이터 앞에서 성능이 떨어지는 경우가 있다. 이 강좌는 그 현상인 과적합이 무엇이고, 어떻게 알아차리며, 어떤 조건에서 판단이 제한되는지 설명한다.
이 강좌를 마치면 세 가지를 할 수 있다. 첫째, 과적합을 한 문장으로 정의하고 과소적합·일반화와 구분한다. 둘째, 손실 곡선을 보고 과적합 신호를 읽는다. 셋째, 과적합의 두 가지 주요 원인을 말한다. 사전지식으로는 모델이 데이터로 학습한다는 개념과, 훈련 데이터와 검증 데이터가 서로 다른 데이터 집합이라는 사실만 알면 된다.
한 문장으로 이해하기
과적합(Overfitting)은 모델이 훈련 데이터에서는 좋은 성능을 보이지만 새로 접하는 데이터에서는 성능이 나빠지는 현상이다.
주변 개념 두 가지를 함께 정리하자. 과소적합(Underfitting)은 모델이 훈련 데이터에서도 좋은 예측을 하지 못하는 상태다. 일반화(Generalization)는 모델이 새로운 데이터에서도 좋은 예측을 하는 능력으로, 우리가 실제로 원하는 성질이다.
왜 필요한가
모델을 만드는 이유는 훈련 때 본 데이터가 아니라 앞으로 만날 새 데이터를 잘 예측하기 위해서다. 훈련 데이터에서의 점수가 아무리 좋아도 새 데이터에서 성능이 나빠진다면 그 모델은 목적을 이루지 못한다. 그래서 과적합이 무엇인지, 어떤 신호로 나타나는지 아는 것이 모델을 평가하는 출발점이 된다.
어떻게 이루어지는가
과적합이 생기고 발견되는 과정을 단계로 정리하면 다음과 같다.
- 모델이 훈련 세트로 학습한다. 훈련 세트는 모델 학습에 사용하는 데이터이고, 검증 세트는 학습 중에 새 데이터에서의 성능을 점검하기 위해 따로 떼어 둔 데이터다.
- 훈련 데이터가 현실이나 검증 데이터를 충분히 대표하지 못하거나, 모델이 지나치게 복잡하면 새 데이터에서의 성능이 나빠질 수 있다. 이 둘이 과적합의 주요 원인이며 동시에 작용할 수도 있다.
- 손실(Loss)은 예측이 얼마나 틀렸는지 나타내는 수치로, 낮을수록 좋다. 훈련 손실과 검증 손실을 함께 그린 그래프에서 두 곡선이 처음에는 비슷하게 내려가다가, 훈련 손실은 줄거나 유지되는데 검증 손실이 올라가며 벌어지기 시작하면 과적합을 시사한다.
하나의 예시로 따라가기
아래는 가상 예시다. 어느 온라인 서점이 고객이 책을 살지 예측하는 모델을 만든다고 하자.
- 과거 주문 기록을 훈련 세트와 검증 세트로 나누고, 훈련 세트로 모델을 학습시킨다.
- 학습이 진행되면서 훈련 손실은 꾸준히 내려간다. 그런데 어느 시점부터 검증 손실이 다시 올라가기 시작해 두 곡선이 벌어진다. 이것이 과적합 신호다.
- 팀은 두 가지 원인을 점검한다. 훈련에 쓴 주문 기록이 실제 고객 전체를 충분히 대표하는지, 그리고 모델이 필요 이상으로 복잡하지 않은지 살펴본다.
이 가상 예시에서 중요한 점은 훈련 손실만 보면 모델이 계속 좋아지는 것처럼 보인다는 것이다. 검증 손실을 함께 봐야 새 데이터에서의 성능이 나빠지고 있음을 알 수 있다.
언제 쓰고 언제 쓰지 않는가
출처는 좋은 일반화를 위한 데이터 조건 세 가지를 제시한다. 이 조건이 갖춰져 있으면 검증 결과를 새 데이터에서의 성능으로 해석하기가 수월해진다.
첫째, 각 데이터 예시가 서로 영향을 주지 않고(독립성), 같은 분포에서 나와야 한다(동일 분포). 이 두 요소를 합쳐 독립적이고 동일하게 분포(i.i.d.)되어 있다고 말한다. 둘째, 데이터가 정상성(Stationarity)을 가져야 한다. 시간이 지나도 데이터의 통계적 특성이 크게 바뀌지 않아야 한다는 뜻이다. 셋째, 훈련·검증·테스트 분할의 분포가 서로 비슷해야 한다. 데이터를 분할하기 전에 충분히 섞으면 각 분할의 통계적 분포가 비슷해질 가능성이 커진다.
반대로 이런 조건이 흔들리는 상황, 예를 들어 시간이 지나며 데이터 특성이 크게 변하는 경우에는 검증 손실이 낮게 나와도 그 평가가 앞으로 만날 데이터 조건을 제대로 대표하지 못할 수 있다. 이때는 손실 곡선을 읽되, 그 결과를 새 데이터에 그대로 적용해 해석하는 데 한계가 있다는 점을 기억해야 한다.
핵심 정리와 확인문제
과적합은 훈련 데이터에서는 성능이 좋지만 새 데이터에서는 성능이 나빠지는 현상이다. 훈련 손실은 줄거나 유지되는데 검증 손실이 올라가 두 곡선이 벌어지면 과적합 신호다. 주요 원인은 대표성이 부족한 훈련 데이터와 지나치게 복잡한 모델이다. 독립·동일 분포, 정상성, 분할 간 유사한 분포는 좋은 일반화를 위한 데이터 조건이며, 이 조건이 흔들리면 검증 결과를 새 데이터 성능으로 해석하는 데 한계가 생긴다.
확인문제
- 훈련 손실은 계속 줄어드는데 검증 손실이 올라가 두 곡선이 벌어지고 있다. 이 현상은 무엇을 시사하는가?
정답과 해설 과적합이다. 훈련 데이터에서의 성능은 좋아 보이지만 새 데이터를 대신하는 검증 데이터에서 성능이 나빠지고 있다는 신호다.
- 과적합의 두 가지 주요 원인은 무엇인가?
정답과 해설 훈련 데이터가 현실이나 검증·테스트 데이터를 충분히 대표하지 못하는 것과, 모델이 지나치게 복잡한 것이다. 두 원인은 동시에 작용할 수도 있다.
- 어떤 모델은 훈련 데이터에서도 좋은 예측을 하지 못하고, 다른 모델은 훈련 데이터에서는 잘 맞히지만 새 데이터에서는 성능이 나빠지며, 또 다른 모델은 새로운 데이터에서도 좋은 예측을 한다. 각각 과소적합, 과적합, 일반화 가운데 어떤 상태에 해당하는가?
정답과 해설 순서대로 과소적합, 과적합, 일반화가 잘된 상태다. 과소적합은 훈련 데이터에서조차 좋은 예측을 하지 못하는 상태이고, 과적합은 훈련 데이터에서는 좋은 성능을 보이지만 새 데이터에서는 성능이 나빠지는 현상이며, 일반화가 잘되는 모델은 새로운 데이터에서도 좋은 예측을 한다.