[AI] 5. 오버피팅(Overfitting) 억제 기법
오버피팅 억제 기법들에 대해 알아보자.
오버피팅(Overfitting)이란?
모델이 학습 데이터에 너무 과하게 맞춰져서, 실제 처음 보는 새로운 데이터에 대한 예측 성능이 떨어지는 현상이다.
오버피팅은 공부할 때 기출문제 정답만 통째로 외워서 문제가 조금만 다르게 나와도 틀리는 것이라고 할 수 있다.
1. 가중치 감소 (Weight Decay)
신경망의 가중치( $W$ ) 값이 너무 커지는 것을 방지하여, 모델이 특정 데이터의 사소한 특성에 과도하게 민감해지는 것을 막는다.
기존의 손실 함수(Loss Function) $L$ 에 가중치의 크기를 나타내는 L2 Norm의 제곱을 항으로 추가하면 가중치( $W$ ) 중 큰 가중치에는 그에 상응하는 페널티를 부과하여 오버피팅이 억제된다.
- $\lambda$ (Lambda): 정규화의 강도를 조절하는 하이퍼파라미터
이를 경사하강법(Gradient Descent) 갱신 식에 적용하면 다음과 같다.
갱신 식을 보면, 원래의 기울기($\frac{\partial L}{\partial W}$)를 빼기 전 기존 가중치에 $(1 - \eta \lambda)$를 곱하게 된다. 이 값이 1보다 작으면, 매 갱신마다 가중치가 일정 비율로 감소하는 효과를 볼 수 있다.
2. 드롭아웃 (Dropout)
네트워크 구조 자체에 무작위성을 부여하여 과적합을 방지하는 기법이다. 학습 과정에서 은닉층의 뉴런을 임의의 확률로 비활성화시켜서 학습한다.
뉴런이 유지될 확률(보존 확률)을 $p \in (0, 1]$라 하고, 은닉층의 활성화 값을 $a = f(W \cdot X + b)$라 하자.
1) 학습 단계 (Train)
각 뉴런마다 베르누이 분포를 따르는 마스크 $m$을 생성하여 활성화 값에 원소별 곱($\odot$)을 적용한다.
\[m \sim \text{Bernoulli}(p)\] \[y_{\text{train}} = m \odot a\]이때 학습 단계의 출력 기댓값은 $\mathbb{E}[y_{\text{train}}] = p \cdot a$가 되어, 원래 신호 세기보다 $p$배 만큼 차이가 발생한다.
2) 추론 단계 (Test)
테스트 시에는 모든 뉴런을 활성화한다. 다만 학습 단계와의 신호 크기(기댓값) 균형을 맞추기 위해 스케일 보정을 해야 한다.
표준 드롭아웃 (Standard)
\[y_{\text{test}} = p \cdot a\]
테스트 단계의 출력에 유지 확률 $p$(삭제하지 않은 비율)를 곱해 기댓값을 맞춘다.역 드롭아웃 (Inverted Dropout)
\[y_{\text{train}} = \frac{1}{p} (m \odot a), \quad y_{\text{test}} = a\]
추론 연산 효율을 극대화하기 위해, 테스트 단계가 아닌 학습 단계에서 미리 $\frac{1}{p}$로 보정한다. 이는 테스트 단계에서의 속도를 향상시킬 수 있다.
드롭아웃은 매 미니배치마다 무작위로 서로 다른 부분망(Sub-network)을 샘플링하여 학습시키는 구조이다. 덕분에 특정 뉴런들이 서로에게 지나치게 의존하는 현상을 끊어내고, 결과적으로 수많은 독립적 모델을 학습시킨 뒤 추론 단계에서 이를 평균 내어 통합하는 앙상블 학습(Ensemble Learning) 효과를 만들어낸다.
3. 조기 종료 (Early Stopping)
모델의 구조나 목적 함수를 건드리지 않고, 학습 과정 자체를 모니터링하여 과적합을 막는 비교적 간단한 기법이다.
학습(Epoch)이 진행될수록 훈련 데이터에 대한 오차는 계속 감소하지만, 어느 시점부터는 검증 데이터에 대한 오차가 반등하며 증가하기 시작한다. 조기 종료는 이 검증 손실이 반등하는 지점을 과적합의 시작점으로 간주하고 학습을 강제 종료시킨 후, 가장 성능이 좋았던 시점의 가중치를 복원한다.
4. 데이터 증강 (Data Augmentation)
보통 오버피팅은 데이터 부족으로 인한 경우 자주 일어난다.
데이터 부족으로 인한 과적합을 원천적으로 차단하기 위해, 기존 데이터에 수학적/기하학적 변환을 가하여 학습 데이터 공간(Data Manifold)의 밀도를 높이는 기법이다.
비전(Vision) 분야의 어파인 변환(Affine Transformation) 외에도, 최근 딥러닝에서는 데이터 간의 선형 보간(Linear Interpolation)을 활용하는 Mixup 기법이 좋은 성능을 보이고 있다.
- $\lambda \sim \text{Beta}(\alpha, \alpha) \in [0, 1]$
Mixup은 두 데이터 샘플과 라벨을 비율 $\lambda$로 섞어 새로운 데이터를 창조한다. 이는 모델이 주어진 학습 데이터의 점 들만 극단적으로 암기하는 것을 막고, 데이터 사이의 빈 공간을 선형적으로 이어주어 결정 경계(Decision Boundary)를 훨씬 부드럽게 만들어주는 정규화 효과를 낸다.
5. 배치 정규화 (Batch Normalization)
각 층의 활성화 값이 적당히 분포되도록 강제하기 위해 데이터 분포를 정규화한다.
각 미니배치(Mini-batch) $B$ 단위로 데이터의 평균( $\mu_B$ )과 분산( $\sigma_B^2$ )을 구하여 정규화한 뒤, 학습 가능한 파라미터인 확대(Scale)( $\gamma$ )과 이동(Shift)( $\beta$ )를 적용한다.
\[\mu_B = \frac{1}{m} \sum_{i=1}^{m} x_i\] \[\sigma_B^2 = \frac{1}{m} \sum_{i=1}^{m} (x_i - \mu_B)^2\] \[\hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}}\] \[y_i = \gamma \hat{x}_i + \beta\]배치 정규화는 오버피팅 억제 뿐만 아니라 학습 속도를 향상시켜주고 초기값에 크게 의존하지 않아도 되는 장점이 있다.
요약
| 기법 | 핵심 메커니즘 | 주요 효과 |
|---|---|---|
| 가중치 감소 (L2) | 손실 함수에 $|W|^2$ 페널티 추가 | 가중치 폭발 방지, 완만한 결정 경계 형성 |
| 드롭아웃 | 뉴런을 확률 $p$로 무작위 비활성화 | 공동 적응 방지, 가상 앙상블 효과 |
| 조기 종료 | 검증 손실(Val Loss) 모니터링 | 최적의 일반화 시점에서 학습 조기 중단 |
| 데이터 증강 | 기하학적 변환 및 선형 보간(Mixup) | 데이터 밀도 향상, 결정 경계 평활화 |
| 배치 정규화 | 미니배치 단위 평균·분산 정규화 | 통계적 노이즈 주입을 통한 자체 정규화 효과 |