본문 바로가기

시험/기본개념

overfitting 방지

Overfitting 방지 3가지 기법: Dropout, Weight Decay(L2), Early Stopping 비교

Overfitting(과적합)은 모델이 학습 데이터에만 너무 치중하여 새로운 데이터에 대한 예측 성능이 떨어지는 현상을 말합니다. 이를 해결하기 위한 대표적인 세 가지 Regularization(정규화) 기법인 Dropout, Weight Decay(L2), Early Stopping에 대해 자세히 알아보고, 주관식 문제까지 풀어보겠습니다. 🤓


핵심 내용

1. Dropout (드롭아웃)

  • 핵심 아이디어: 학습 과정에서 각 뉴런(neuron)을 무작위로 일정 확률로 비활성화(0으로 만듦)시키는 기법입니다.
  • 작동 원리:
    • 매 학습 단계(iteration)마다 다른 구조의 "얇아진" 신경망을 학습시키는 것과 같은 효과를 줍니다.
    • 특정 뉴런이 이전 층의 특정 뉴런에 과도하게 의존하는 것을 방지하고, 모델이 좀 더 **일반화(robust)**된 특징을 학습하도록 강제합니다. 마치 여러 개의 다른 모델을 만들어 앙상블(ensemble)하는 것과 유사한 효과를 냅니다.
  • 수식적 의미:
    • Dropout은 수식으로 직접 표현되기보다는, 학습 알고리즘 자체에 적용되는 방식입니다. 확률 (keep probability)에 따라 뉴런의 출력을 그대로 두거나 0으로 만듭니다.
    • : 번째 층의 활성화(activation)
    • : 번째 층에 대한 드롭아웃 마스크 (0 또는 1의 값을 가짐)
    • : 드롭아웃이 적용된 활성화
    • 테스트 시점에서는 모든 뉴런을 사용하되, 학습 시 유지했던 확률()을 각 가중치에 곱해줍니다. (Inverted Dropout)

2. Weight Decay (가중치 감쇠, L2 Regularization)

  • 핵심 아이디어: 손실 함수(Loss Function)에 가중치(weight)의 크기에 대한 페널티 항을 추가하는 기법입니다.
  • 작동 원리:
    • 가중치 값이 너무 커지는 것을 막습니다. 가중치가 크다는 것은 입력 값의 작은 변화에도 출력이 크게 변동한다는 의미이며, 이는 모델이 특정 데이터에 과도하게 적합되었을 가능성을 시사합니다.
    • 가중치를 전반적으로 작고 고르게 만들어, 더 부드럽고 일반화된 모델을 만듭니다.
  • 수식적 의미:
    • 기존의 손실 함수(예: MSE, Cross-Entropy)에 L2 페널티 항을 더합니다.
    • Total Loss = Original Loss +
    • : 모델의 각 가중치
    • (람다): Regularization 강도를 조절하는 하이퍼파라미터. 값이 클수록 가중치를 더 강하게 억제합니다.
    • 위 수식을 가중치 에 대해 미분하면 기존의 경사하강법 업데이트 식에 항이 추가됩니다. 이 항 때문에 가중치가 매번 업데이트될 때마다 일정 비율로 작아지는 효과가 나타나 'Weight Decay'라고 불립니다.
    • w = w - learning_rate * (dL/dw + 2 * lambda * w)

3. Early Stopping (조기 종료)

  • 핵심 아이디어: 모델의 성능이 더 이상 개선되지 않고 오히려 나빠지기 시작하는 시점에서 학습을 조기에 중단하는 기법입니다.
  • 작동 원리:
    • 학습 데이터(Training set)에 대한 손실은 계속 감소하지만, 검증 데이터(Validation set)에 대한 손실이 증가하기 시작하는 지점이 바로 Overfitting이 시작되는 구간입니다.
    • 이 지점을 포착하여 학습을 멈춤으로써, 검증 데이터에서 가장 좋은 성능을 보였던 시점의 모델을 최종 모델로 선택합니다.
  • 수식적 의미:
    • Early Stopping은 특정 수식으로 표현되기보다는, 학습 루프(loop)를 제어하는 알고리즘적 접근 방식입니다.
    • 일정 주기(epoch)마다 검증 데이터 손실(Validation Loss)을 측정하고, 이 값이 이전에 기록된 최저 손실보다 개선되지 않으면 카운터를 증가시킵니다.
    • 이 카운터가 미리 설정된 patience 값에 도달하면 학습을 중단합니다.

헷갈리기 쉬운 내용 (차이점 명확히 하기)

구분 Dropout Weight Decay (L2) Early Stopping
적용 대상 신경망의 뉴런(활성화 값) 모델의 가중치(파라미터) 학습 과정 자체(epoch)
작동 방식 무작위로 뉴런을 비활성화 손실 함수에 페널티 항 추가 검증 성능을 기준으로 학습 중단
주요 효과 앙상블과 유사한 효과, 동적(Dynamic) 더 작고 부드러운 가중치 분포 유도, 정적(Static) 최적의 학습 반복 횟수 탐색
언제 사용하는가? 깊고 복잡한 신경망에서 뉴런 간의 복잡한 공생 관계(co-adaptation)를 끊고 싶을 때 효과적입니다. 거의 모든 종류의 모델에 기본적으로 적용할 수 있는 강력하고 일반적인 방법입니다. 학습 시간이 길고 Overfitting이 발생하는 지점을 명확히 관찰할 수 있을 때, 가장 간단하고 직관적인 방법입니다.
하이퍼파라미터 Dropout rate (비활성화할 확률) (Regularization 강도) Patience (성능 개선을 기다리는 횟수)
Sheets로 내보내기

🔥 핵심 포인트: Dropout은 모델의 구조를 매번 바꾸는 동적인 방식이고, Weight Decay는 가중치 값 자체에 제약을 거는 정적인 방식이며, Early Stopping은 학습의 진행을 제어하는 알고리즘적인 방식입니다. 세 가지는 상호 배타적이지 않으며, 함께 사용될 때 더 좋은 성능을 내는 경우가 많습니다.


✍️ 주관식 예상 문제

문제 1: 신경망 모델의 Overfitting을 해결하기 위한 세 가지 기법, Dropout, Weight Decay(L2), Early Stopping의 핵심 아이디어를 각각 서술하고, 이들이 Overfitting을 완화하는 원리를 서로 비교하여 설명하시오.

모범 답안:

  1. Dropout: 학습 시 신경망의 뉴런을 일정 확률로 무작위 비활성화하는 기법입니다. 이는 매 학습마다 다른 구조의 서브 네트워크를 학습시켜 앙상블 효과를 내고, 특정 뉴런에 대한 과도한 의존성을 줄여 모델의 일반화 성능을 높입니다.
  2. Weight Decay(L2): 손실 함수에 가중치 제곱의 합에 비례하는 페널티 항()을 추가하는 기법입니다. 이는 가중치의 크기가 너무 커지는 것을 억제하여, 입력의 작은 변화에 출력이 민감하게 반응하지 않는 더 부드러운 함수 형태의 모델을 만들어 과적합을 방지합니다.
  3. Early Stopping: 학습 과정에서 검증 데이터셋의 성능을 지속적으로 모니터링하여, 성능이 더 이상 개선되지 않고 저하되기 시작하면 학습을 조기에 중단하는 기법입니다. 이는 과적합이 시작되는 지점에서 학습을 멈춤으로써 검증 성능이 가장 좋았던 시점의 모델을 최종 결과로 선택하는 가장 직관적인 방법입니다.

비교: Dropout은 모델 구조를 확률적으로 변경하고, Weight Decay는 **모델 파라미터(가중치)**에 직접적인 제약을 가하며, Early Stopping은 학습 과정(epoch) 자체를 제어한다는 점에서 근본적인 차이가 있습니다.

 

 

## 가중치가 어느 정도면 '크다'고 할 수 있나요?

가중치가 '크다'는 것은 절대적인 값보다는 모델의 상태주변 가중치와의 관계 속에서 판단해야 합니다.

  1. 초기 가중치 대비 너무 클 때:
    • 신경망을 처음 만들면 가중치는 보통 0에 가까운 아주 작은 난수들로 초기화됩니다 (예: He, Xavier 초기화). 예를 들어, He 초기화는 가중치를 평균 0, 표준편차 ($n_{in}$은 입력 뉴런 수)인 정규분포에서 뽑습니다.
    • 학습을 진행하면서 이 초기값보다 수십, 수백 배 이상 커진다면 모델이 특정 패턴에 과하게 반응하고 있다고 볼 수 있습니다.
  2. 모델의 불안정성을 유발할 때:
    • 가중치가 너무 크면, 입력 데이터의 작은 변화가 신경망을 통과하며 증폭되어 매우 큰 출력 변화를 일으킵니다. 이는 Exploding Gradients(기울기 폭발) 문제로 이어져 학습이 불안정해지거나 불가능해질 수 있습니다.
    • 예를 들어, Sigmoid나 Tanh 활성화 함수를 사용하는 경우, 가중치가 커서 연산 결과(wx+b)가 절대값 5를 넘어가기 시작하면 함수의 양쪽 끝부분에 위치하게 됩니다. 이 구간은 기울기가 거의 0에 가까워 **Vanishing Gradients(기울기 소실)**를 유발해 학습이 멈추게 됩니다.
  3. 하나의 가중치만 유독 클 때:
    • 대부분의 가중치는 작은 값을 가지는데, 특정 입력 특징과 연결된 가중치만 유독 크다면 모델이 그 하나의 특징에 너무 많이 의존하고 있다는 신호입니다. 이는 Overfitting의 전형적인 증상으로, 모델이 일반화되지 못하고 특정 데이터에만 '암기'하고 있다는 뜻입니다.

## 그럼 보통 가중치 값의 범위는 어느 정도인가요?

이 역시 모델의 구조, 데이터, 초기화 방법, 정규화 강도에 따라 매우 다릅니다. 하지만 일반적인 가이드라인은 있습니다.

  • 학습 시작 시 (초기화): 위에서 설명한 것처럼, 대부분의 초기화 기법은 가중치를 -1.0과 1.0 사이의 매우 작은 값으로 설정합니다. 예를 들어 입력 뉴런이 512개라면, He 초기화의 표준편차는 이므로, 대부분의 가중치는 -0.12 ~ +0.12 범위 내에서 시작됩니다.
  • 잘 학습된 모델: L2 정규화(Weight Decay)가 잘 적용된 안정적인 모델의 경우, 학습이 끝난 후에도 대부분의 가중치는 **여전히 한 자릿수 내(예: -2.0 ~ 2.0)**에 머무르는 경우가 많습니다. 물론 모델이 중요하다고 판단한 일부 가중치는 이보다 더 큰 값을 가질 수 있지만, 전체적인 분포가 중요합니다.

🤔 비유로 이해하기: 가중치의 크기를 '목소리 크기'에 비유할 수 있습니다.

  • 이상적인 모델: 오케스트라처럼 여러 악기(가중치)가 조화롭게 각자의 볼륨을 내어 아름다운 음악(정확한 예측)을 만듭니다.
  • 가중치가 큰 모델 (Overfitting): 한 명의 연주자(하나의 큰 가중치)가 다른 모든 소리를 씹어 먹을 정도로 큰 소리로 연주하는 것과 같습니다. 그 연주자가 아는 곡(학습 데이터)은 잘 연주하지만, 새로운 곡(테스트 데이터)은 제대로 연주하지 못합니다.
  • Weight Decay의 역할: 지휘자(손실 함수)가 "다들 목소리 좀 줄여! 너무 튀지 마!"라고 지시하여 전체적인 조화를 맞추게 하는 것과 같습니다.

결론적으로, 가중치 값 자체보다는 가중치들의 분포학습 과정에서의 변화 양상을 보고 Overfitting의 징후를 판단하는 것이 더 정확합니다.