
오버피팅(overfitting)이란, 학습된 모델이 훈련 데이터(training data) 에는 매우 높은 성능을 보이지만, 학습에 사용되지 않은 시험 데이터(test data) 나 실제 환경의 새로운 데이터에 대해서는 성능이 급격히 저하되는 현상을 의미한다. 이는 모델이 데이터에 존재하는 일반적인 패턴을 학습한 것이 아니라, 훈련 데이터에만 존재하는 우연적 노이즈나 특이한 패턴까지 과도하게 학습했기 때문에 발생한다.
기계학습과 딥러닝의 궁극적인 목표는 훈련 데이터 자체를 잘 맞히는 것이 아니라, 보지 못한 데이터에 대해서도 일관되게 좋은 예측을 수행하는 범용 성능(generalization performance) 을 확보하는 것이다. 따라서 오버피팅은 실무 관점에서도 반드시 해결해야 할 핵심 문제이다.
오버피팅은 다음과 같은 조건에서 특히 빈번하게 발생한다.
훈련 데이터의 양이 부족한 경우
데이터가 충분하지 않으면, 모델은 데이터의 통계적 특성을 안정적으로 학습하기 어렵다. 특히 딥러닝 모델처럼 파라미터 수가 많은 경우, 소량의 데이터는 오버피팅을 거의 필연적으로 유발한다.
모델의 복잡도가 데이터에 비해 지나치게 높은 경우
층의 수가 많거나, 각 층의 뉴런 수가 매우 큰 모델은 높은 표현력을 갖는다. 표현력이 높다는 것은 복잡한 함수 형태를 근사할 수 있다는 장점이 있지만, 동시에 훈련 데이터에 과도하게 맞춰질 위험이 커진다.
학습을 지나치게 오래 수행한 경우
초기에는 훈련 데이터와 검증 데이터 모두 성능이 향상되지만, 일정 시점 이후에는 검증 성능이 오히려 하락하는 경우가 많다. 이는 모델이 훈련 데이터에 과적합되기 시작했음을 의미한다.
오버피팅이 발생하면 다음과 같은 특징적인 현상이 나타난다.
이러한 패턴을 통해 오버피팅 여부를 시각적으로 판단할 수 있다.
딥러닝 모델에서 가중치(weight)가 커질수록 모델은 입력 데이터의 작은 변화에도 매우 민감하게 반응하게 된다. 이는 모델의 표현력을 증가시키는 효과가 있지만, 동시에 데이터의 노이즈까지 학습하게 만들어 오버피팅을 유발한다.
가중치 감쇠(weight decay) 는 이러한 문제를 완화하기 위해, 학습 과정에서 가중치의 크기가 커지는 것을 억제하는 정규화(regularization) 기법이다.

가중치 감쇠는 손실 함수(loss function)에 가중치의 L2 노름(norm) 제곱을 패널티 항으로 추가하는 방식으로 구현된다.
기존 손실 함수:
가중치 감쇠가 적용된 손실 함수:
여기서 λ(람다)는 정규화 계수(regularization strength) 로, 가중치 크기에 대한 패널티의 강도를 조절한다.
과적합의 핵심 원인은 보통
일부 가중치가 과도하게 커지면서
특정 샘플에만 맞춘 결정 경계를 만드는 것
결정 경계란 아주 미세한 입력 차이까지 구분하려는 경계이다.
일부 가중치가 과도하게 커진다는 것은, 입력 공간의 특정 방향에 대해 모델의 출력이 지나치게 민감해졌음을 의미한다. 이러한 경우 결정 경계는 소수의 샘플, 특히 노이즈나 이상치가 포함된 샘플을 정확히 분류하기 위해 국소적으로 급격하게 변형된다. 그 결과 모델은 데이터 분포 전반에 공통적으로 나타나는 구조를 학습하기보다는, 개별 학습 샘플의 우연한 특성에 맞춰진 결정 규칙을 형성하게 된다.
** 하여, 전체 데이터 분포에는 중요하지 않은 방향에 매우 큰 가중치가 할당될 수 있다.
그래서 정규화 항은 다음 성질을 가져야 한다.
즉,
신경망은 경사 하강법으로 학습한다.
따라서 패널티 항은 반드시:
L2 제곱의 미분은:
이 결과가 중요한 이유는:
(반면 L1은 (w=0)에서 미분 불연속 → 다른 성질을 만든다)
원래 손실 함수 (L(w))에 L2 패널티를 추가하면:
이걸 그대로 미분하면
업데이트 식은 다음과 같다.
이를 분해하면:
→ 데이터에 맞추려는 힘
→ 가중치를 원점(0)으로 끌어당기는 힘
즉, L2 정규화는매 step마다 모든 가중치를 조금씩 0 방향으로 수축(shrink) 시킨다
그래서 이름이 Weight Decay(가중치 감쇠) 다.
경사 하강법(gradient descent)을 적용하면, 각 가중치는 다음과 같이 업데이트된다.
기존 업데이트:
가중치 감쇠 적용 후:
즉, 가중치는 손실 함수의 기울기뿐 아니라 자신의 크기에 비례하여 추가적으로 감소하는 방향으로 업데이트된다.
장점:
한계:

드롭아웃(dropout)은 학습 단계에서 신경망의 일부 뉴런을 무작위로 비활성화하는 기법이다. 각 미니배치(mini-batch)가 입력될 때마다, 뉴런은 확률 p로만 활성화되고 나머지는 임시로 제거된다.
이는 다음과 같은 효과를 갖는다.
이는 학습 시 평균적으로 사용된 활성화 크기와 시험 시 활성화 크기를 일치시키기 위함이다.
드롭아웃은 각 뉴런이 "언제든지 제거될 수 있다"는 가정하에 학습되도록 강제한다. 그 결과, 모델은 특정 뉴런에 의존하지 않고 보다 분산된 표현(distributed representation) 을 학습하게 된다.
즉, 어떤 뉴런도 항상 켜져있다(0이 아니다)고 가정할 수 없고, 다음 step에서도 반드시 사용될 것이라고 기대할 수 없다는 것을 의미한다. 이로 인하여, drop out을 적용한 최적화는 "일부 뉴런이 없어져도, 전체 출력이 크게 변하지 않는 방향"으로 유도된다. 이는 모델이 자연스럽게 하나의 의미(특징)를 여러 뉴런이 나눠서 표현하게 하여, 단일 뉴런 하나에만 강하게 인코딩 되지 않고 여러 뉴런의 활성화 조합으로 표현되어 의미 정보가 여러 뉴런에 분산되어 저장된다.
장점:
단점:
하이퍼파라미터(hyper-parameter)는 오차 역전파로 학습되지 않고, 사용자가 사전에 설정해야 하는 모든 파라미터를 의미한다.
대표적인 예시는 다음과 같다.
시험 데이터를 하이퍼파라미터 조정에 사용하면, 모델이 시험 데이터에 오버피팅되므로 절대 사용해서는 안 된다.

Early stopping은 학습을 충분히 오래 수행하지 않고, 검증 성능이 더 이상 개선되지 않는 시점에서 학습을 중단하는 기법이다.
이는 학습 자체를 정규화로 활용하는 방법이라고 볼 수 있다.

깊은 신경망에서는 이전 계층의 가중치가 업데이트될 때마다, 다음 계층으로 전달되는 입력 분포가 계속 변한다. 이를 내부 공변량 변화(internal covariate shift) 라고 하며, 학습을 불안정하고 느리게 만드는 주요 원인이다.
배치 정규화는 각 계층의 입력을 미니배치 단위로 정규화하여 평균 0, 분산 1에 가깝게 만드는 기법이다.
절차는 다음과 같다.
이를 통해 표현력 감소 문제를 해결한다.
이를 통해 입력이 하나씩 들어오는 상황에서도 안정적인 정규화를 수행할 수 있다.
배치 크기가 매우 작을 경우, 통계량이 불안정해진다. 이를 보완하기 위해 다음과 같은 기법들이 제안되었다.