과적합을 잡는 가장 세련된 방법, Weight Decay 설명

Bean·2026년 1월 11일

인공지능

목록 보기
150/184

1. Weight Decay란 무엇인가?

Weight Decay(가중치 감쇠)는 모델의 가중치(ww)가 너무 커지지 않도록 인위적으로 제약을 가하는 규제(Regularization) 기법입니다.

모델이 학습 데이터의 미세한 노이즈까지 다 학습해버리면 가중치 값이 비정상적으로 커지는 경향이 있습니다. 가중치가 크다는 것은 특정 입력값에 모델이 매우 민감하게 반응한다는 뜻이고, 이는 결과적으로 새로운 데이터에 유연하게 대응하지 못하는 결과를 초래합니다.


2. 수학적 원리: L2L_2 Regularization

Weight Decay는 기존의 손실 함수(Loss function)에 모든 가중치의 제곱합을 더하는 방식으로 구현됩니다. 이를 수학적으로 L2L_2 규제라고도 부릅니다.

새로운 손실 함수 정의

Lnew=Loriginal+λ2w2L_{new} = L_{original} + \frac{\lambda}{2} \sum w^2
  • LoriginalL_{original}: 원래의 오차 (MSE, Cross Entropy 등)
  • λ\lambda (Lambda): 규제의 강도를 조절하는 하이퍼파라미터 (PyTorch의 weight_decay)
  • λ2w2\frac{\lambda}{2} \sum w^2: 가중치가 커질수록 손실 값이 커지게 만드는 '벌칙(Penalty)' 항

가중치 업데이트 식의 변화

이 손실 함수를 미분하여 가중치를 업데이트하면 다음과 같은 식이 도출됩니다.

wt+1=wtη(Loriginalwt+λwt)w_{t+1} = w_t - \eta \left( \frac{\partial L_{original}}{\partial w_t} + \lambda w_t \right)
wt+1=(1ηλ)wtηLoriginalwtw_{t+1} = (1 - \eta\lambda)w_t - \eta \frac{\partial L_{original}}{\partial w_t}

위 식에서 (1ηλ)(1 - \eta\lambda) 부분을 주목해 주세요. 가중치를 업데이트하기 직전에, 원래 가지고 있던 가중치 값에서 일정 비율(ηλ\eta\lambda)만큼을 미리 깎아버립니다. 이것이 바로 감쇠(Decay)라고 불리는 이유입니다.


3. 왜 가중치를 줄여야 할까요?

  1. 모델의 단순화: 가중치가 작아지면 함수 곡선이 더 부드러워(Smooth)집니다. 이는 모델이 복잡한 패턴에 매몰되지 않게 돕습니다.
  2. 노이즈 무시: 데이터에 포함된 무의미한 흔들림(노이즈)에 일일이 반응하지 않게 되어 학습이 안정화됩니다.
  3. 일반화 성능 향상: 결과적으로 훈련 데이터가 아닌 실제 환경의 데이터(Test Data)에서도 높은 성능을 유지하게 됩니다.

4. PyTorch 실전: SGD vs AdamW

PyTorch를 사용할 때 많은 분이 놓치는 지점이 있습니다. 바로 옵티마이저에 따라 Weight Decay가 작동하는 방식이 다르다는 점입니다.

SGD에서의 Weight Decay

torch.optim.SGD에서 weight_decay를 설정하면, 우리가 배운 수학적 L2L_2 규제와 동일하게 작동합니다.

AdamW의 등장 배경

일반적인 Adam 옵티마이저에서는 가중치 감쇠가 그래디언트 계산 과정에 섞여 들어가면서, L2L_2 규제 본연의 효과가 희석되는 문제가 발생했습니다. 이를 해결하기 위해 가중치 감쇠 로직을 업데이트 단계에서 완전히 분리해 낸 것이 바로 AdamW입니다.

Tip: 최신 생성 모델이나 트랜스포머(Transformer) 계열의 모델을 학습시킨다면, 일반 Adam보다는 AdamW를 사용하는 것이 업계의 표준(Best Practice)입니다.

# PyTorch에서의 AdamW 설정 예시
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-4, weight_decay=0.01)

5. 적절한 값 설정 가이드

Weight Decay 값()은 모델의 성격에 따라 다르지만, 일반적으로 다음 기준을 참고합니다.

현상원인해결책
과적합(Overfitting)규제가 너무 약함 (가 작음)weight_decay 값을 높임 (예: 0.001 → 0.01)
과소적합(Underfitting)규제가 너무 강함 (가 큼)weight_decay 값을 낮춤 (예: 0.01 → 0.001)
  • 보통의 범위: 1e-2(0.01)에서 1e-4(0.0001) 사이를 먼저 시도해 보세요.
  • 디테일이 중요한 모델: 만약 모델이 생성하는 결과물의 미세한 특징(세부 묘사 등)이 뭉개진다면, 가중치 감쇠가 너무 강해 모델의 표현력을 억제하고 있는 것일 수 있으니 값을 낮춰보는 것이 좋습니다.

profile
AI developer

0개의 댓글