주제: 2-3 정규화 (Weight Decay & Dropout)

분류: foundations

타입: concept

난이도: 중급

선수지식: 있음 - 손실함수, optimizer, overfitting

문제 설정

모델이 학습 데이터에만 과도하게 맞는 과적합(overfitting)을 줄이기 위해 정규화(regularization)를 사용합니다.

대표 방법은 weight decay와 dropout입니다.

직관 비유

1. Weight Decay

손실에 가중치 크기 패널티를 추가합니다.

L=L+lambda*||w||2

가중치가 과도하게 커지는 것을 억제해 모델 복잡도를 줄입니다.

주의: lambda가 너무 크면 underfitting이 발생할 수 있습니다.

2. Weight Decay 업데이트 관점

w <- w - eta * (grad(L) + lambda * w)

가중치에 지속적인 축소 압력을 주어 일반화 성능을 개선합니다.

주의: Adam에서는 weight decay가 gradient와 섞이는 이슈가 있어 AdamW를 사용합니다.

3. Dropout

훈련 중 일부 뉴런을 랜덤하게 비활성화합니다.

a' = m * a, m ~ Bernoulli(p)

co-adaptation을 줄이고 서브네트워크 앙상블 효과로 일반화를 돕습니다.

주의: 추론 단계에서는 dropout을 끕니다.

4. Dropout 기대값 보정

훈련 시 보통 다음 형태를 사용합니다.

a=(m*a)/p

훈련/추론 간 출력 스케일 차이를 줄이기 위한 보정입니다.

5. Weight Decay vs Dropout

방법목적적용 위치
Weight Decay가중치 크기 제한파라미터
Dropout뉴런 랜덤 제거활성값

6. 일반화에 미치는 영향

두 방법 모두 과적합 완화와 일반화 성능 향상에 기여합니다.

코드-수식 연결

수식PyTorch 코드설명
L + lambda||w||^2torch.optim.AdamW(..., weight_decay=lambda)weight decay
a' = m * atorch.nn.Dropout(p)dropout
m ~ Bernoulli(p)torch.bernoulli()dropout mask

자주 하는 오해 5개

체크리스트 (스스로 설명 가능해야 하는 질문)