과적합(Overfitting)란?

모델이 학습용 데이터의 세세한 특징이나 우연한 잡음까지 외워 버려서, 학습용 데이터에서는 오차가 작은데 새로운 데이터에 대한 오차(일반화 오차)가 커지는 상태. 과대적합이라고도 한다. 파라미터가 많은 복잡한 모델을 적은 데이터로 학습하면 일어나기 쉽다. 데이터를 늘리기, 모델을 단순하게 하기, 정칙화, 드롭아웃, 조기 종료 등으로 억제한다.

일본어 명칭: 過学習

과적합(Overfitting)은(는) 머신러닝의 기초 등 1개 분야의 연습 문제 3개에 나와요.

분야: 머신러닝의 기초

구별하는 방법

과적합은 학습용 데이터와는 별도로 남겨 둔 검증용 데이터에서의 성능과 비교하여 구별합니다. 학습 횟수를 가로축으로 하여 학습용 데이터와 검증용 데이터의 손실을 나란히 그린 학습 곡선을 그리면, 학습용 데이터의 손실은 계속 내려가는데 검증용 데이터의 손실이 어느 시점부터 오르기 시작합니다. 이 차이가 벌어져 가는 상태가 과적합입니다. 반대로 둘 다 손실이 큰 채로 내려가지 않는 경우는, 모델이 너무 단순한 등의 이유로 경향을 다 포착하지 못하는 과소적합(학습 부족)입니다.

일어나는 원인

모델의 자유도(파라미터 수나 결정 트리의 깊이 등)가 데이터의 양에 비해 크면, 모델은 본래의 경향뿐 아니라 그 데이터에 우연히 포함되어 있던 잡음에까지 맞춰져 버립니다. 예를 들어 x의 값이 서로 다른 10개의 점에 9차 다항식을 맞추면 모든 점을 정확히 지나는 곡선을 만들 수 있지만, 점과 점 사이에서는 크게 물결치며 새로운 점의 예측은 크게 빗나갑니다. 같은 데이터를 보면서 여러 번 하이퍼파라미터를 조정하는 것도 겉보기 성능을 높여 과적합의 원인이 됩니다.

억제하는 방법

가장 확실한 것은 학습용 데이터를 늘리는 것입니다. 데이터를 늘릴 수 없는 경우에는 이미지를 회전·반전시키는 등의 데이터 증강으로 겉보기 데이터를 늘립니다. 모델 쪽에서는 파라미터를 줄여 모델을 단순하게 하기, 손실에 가중치 크기의 벌칙을 더하는 정칙화, 학습 중에 무작위로 뉴런을 무효로 하는 드롭아웃, 검증용 데이터의 손실이 오르기 시작하면 학습을 멈추는 조기 종료 등의 방법이 있습니다. 여러 모델의 예측을 평균하는 앙상블 학습도 예측의 변동을 억제합니다.

도전해 보기: 과적합(Overfitting) 관련 문제

과적합(과대적합)이 일어나고 있을 때 보이는 모습으로 적절한 것은?

  1. A학습용 데이터에서의 오차는 작지만, 검증용 데이터에서의 오차가 크다
  2. B학습용 데이터에서도 검증용 데이터에서도 오차가 큰 채로 내려가지 않는다
  3. C학습을 진행할수록 학습용 데이터에서의 오차도 검증용 데이터에서의 오차도 똑같이 계속 내려간다
정답과 해설 보기

정답: A. 학습용 데이터에서의 오차는 작지만, 검증용 데이터에서의 오차가 크다

과적합은 모델이 학습용 데이터의 세세한 특징이나 잡음까지 외워 버려서, 새로운 데이터에 대한 성능(일반화 성능)이 떨어지는 상태입니다. 학습용 데이터에서의 오차는 작은데 검증용 데이터에서의 오차가 큰 것이 기준이 됩니다. 학습용 데이터에서도 오차가 큰 상태는 모델이 너무 단순한 등의 이유로 경향을 다 포착하지 못하는 과소적합(학습 부족)입니다. 대책으로는 데이터를 늘리기, 모델을 단순하게 하기, 정칙화나 드롭아웃, 검증용 데이터에서의 오차가 오르기 시작한 시점에서 학습을 멈추는 조기 종료 등이 있습니다.

과적합을 억제하는 정칙화 등의 기법에 대한 설명으로 적절한 것은?

  1. AL1 정칙화는 가중치의 절댓값의 합을 손실에 더하는 것으로, 일부 가중치가 정확히 0이 되기 쉽다
  2. BL2 정칙화는 가중치의 절댓값의 합을 손실에 더하는 것으로, 불필요한 가중치를 0으로 만들어 특성을 좁혀 들어가는 작용이 강하다
  3. C드롭아웃은 학습에서도 추론에서도 매번 무작위로 뉴런을 무효로 하여 출력에 변동을 준다
정답과 해설 보기

정답: A. L1 정칙화는 가중치의 절댓값의 합을 손실에 더하는 것으로, 일부 가중치가 정확히 0이 되기 쉽다

정칙화는 손실 함수에 가중치의 크기에 따른 벌칙을 더하여 가중치가 너무 커지는 것을 막고, 모델을 단순하게 유지하는 방법입니다. L1 정칙화는 가중치의 절댓값의 합을 더하며, 일부 가중치가 정확히 0이 되기 쉬우므로 사용하는 특성을 좁혀 들어가는 작용이 있습니다(라쏘 회귀). L2 정칙화는 가중치의 제곱의 합을 더하며, 가중치를 전체적으로 작게 하지만 정확히 0은 되기 어려운 성질이 있습니다(릿지 회귀, 가중치 감쇠). 드롭아웃은 학습할 때만 무작위로 뉴런을 무효로 하여 특정 뉴런에 지나치게 의존하지 않도록 하는 방법이며, 추론할 때는 모든 뉴런을 사용합니다.

자주 묻는 질문

과적합과 과소적합은 어떻게 다른가요?

과적합은 학습용 데이터에 지나치게 맞추어 새로운 데이터에서의 오차가 커지는 상태로, 학습용 데이터에서의 오차는 작아집니다. 과소적합은 모델이 너무 단순하거나 학습이 부족하기 때문에 학습용 데이터에서도 오차가 큰 상태입니다. 편향과 분산으로 말하면, 과소적합은 편향이 크고 과적합은 분산이 큰 상태에 해당합니다.

학습용 데이터에서의 정확도가 100%이면 과적합인가요?

그것만으로는 정해지지 않습니다. 검증용 데이터나 테스트용 데이터에서도 충분한 성능이 나오고 있다면 문제가 없습니다. 학습용 데이터와 검증용 데이터의 성능 차이가 클 때 과적합을 의심합니다.

해설 속 과적합(Overfitting)

과적합(Overfitting)이(가) 나오는 문제 (3)

  1. 과적합(과대적합)이 일어나고 있을 때 보이는 모습으로 적절한 것은?
  2. 과적합을 억제하는 정칙화 등의 기법에 대한 설명으로 적절한 것은?
  3. 모델의 오차를 편향(bias)과 분산(variance)으로 나누어 생각할 때 적절한 것은?

관련 용어

정칙화(Regularization) 추론(Inference) 기댓값(Expected Value) 교차 검증(Cross-validation) 강화 학습(Reinforcement Learning) 경사 하강법(Gradient Descent) 비지도 학습(Unsupervised Learning) 순환 신경망(RNN) 전이 학습(Transfer Learning) 정밀도와 재현율(Precision and Recall)

용어집으로 돌아가기