AdamW 옵티마이저

IT 위키
인공무능 (토론 | 기여)님의 2025년 10월 6일 (월) 12:05 판 (새 문서: AdamW 옵티마이저는 Adam 최적화 알고리즘의 변형으로, 가중치 감쇠(weight decay)를 그래디언트 업데이트로부터 분리(decouple)하여 일반화 성능을 향상시키는 방법이다. ==개요== 딥러닝에서 자주 사용되는 Adam(Adaptive Moment Estimation) 옵티마이저는 1차 및 2차 모멘트를 활용하여 각 파라미터별로 적응적인 학습률을 적용한다. 일반적으로 정규화를 위해 L2 정규화 항을 손실 함...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

AdamW 옵티마이저는 Adam 최적화 알고리즘의 변형으로, 가중치 감쇠(weight decay)를 그래디언트 업데이트로부터 분리(decouple)하여 일반화 성능을 향상시키는 방법이다.

개요[편집 | 원본 편집]

딥러닝에서 자주 사용되는 Adam(Adaptive Moment Estimation) 옵티마이저는 1차 및 2차 모멘트를 활용하여 각 파라미터별로 적응적인 학습률을 적용한다. 일반적으로 정규화를 위해 L2 정규화 항을 손실 함수에 추가하며, 이는 가중치 감쇠(weight decay) 효과를 준다. 하지만 Loshchilov와 Hutter는 이 방식이 Adam의 학습률 조정 메커니즘과 상호작용하여 정규화 효과를 왜곡시킬 수 있다고 지적하고, 이를 분리한 형태의 AdamW를 제안하였다. AdamW는 PyTorch, TensorFlow, Keras 등 다양한 딥러닝 프레임워크에서 널리 지원된다.

수식 및 동작 원리[편집 | 원본 편집]

기본 Adam 업데이트[편집 | 원본 편집]

기본 Adam 알고리즘은 다음과 같은 단계로 파라미터를 업데이트한다:

  • m_t = β₁ * m_{t-1} + (1 - β₁) * g_t
  • v_t = β₂ * v_{t-1} + (1 - β₂) * (g_t)^2
  • m_hat = m_t / (1 - β₁^t)
  • v_hat = v_t / (1 - β₂^t)
  • 파라미터 업데이트:
    • θ_{t+1} = θ_t - η * m_hat / (sqrt(v_hat) + ε)

여기서 g_t는 현재 그래디언트, β₁과 β₂는 각각 모멘텀 계수, η는 학습률이다.

일반적인 Adam에서 가중치 감쇠를 위해 손실 함수에 L2 정규화를 추가하면, 그래디언트에 λ * θ 항이 포함되며 Adam의 스케일링 메커니즘과 간섭이 발생할 수 있다.

AdamW의 분리된 가중치 감쇠[편집 | 원본 편집]

AdamW는 위의 업데이트 과정과 별도로 다음과 같이 가중치 감쇠 항을 적용한다:

  • θ_{t+1} = θ_{t+1} - η * λ * θ_t

즉, 그래디언트 계산과 별개로 가중치 자체에 직접 감쇠를 적용함으로써 학습률 조정 과정과 정규화 효과가 분리된다.

이러한 방식은 일반화 성능을 개선하고 하이퍼파라미터 튜닝을 더 간편하게 만든다.

장점 및 단점[편집 | 원본 편집]

장점[편집 | 원본 편집]

  • 정규화와 학습률 조정 메커니즘이 분리되어 더 일관된 학습 효과를 얻을 수 있다.
  • 일반화 성능이 개선되는 경우가 많다.
  • weight decay와 학습률 간의 민감한 상호작용이 줄어든다.

단점 및 유의점[편집 | 원본 편집]

  • Adam과 비슷하지만 동작 방식이 다르기 때문에 혼용 시 성능 저하가 발생할 수 있다.
  • 정규화가 필요 없는 파라미터에 대해 예외 처리가 필요하다.
  • 일부 경우에는 SGD + 모멘텀이 더 좋은 성능을 낼 수 있다.

구현 및 프레임워크 지원[편집 | 원본 편집]

다양한 프레임워크에서 AdamW는 기본으로 제공되거나 선택적으로 사용할 수 있다:

  • PyTorch: `torch.optim.AdamW`
  • TensorFlow / Keras: `tf.keras.optimizers.AdamW`
  • Hugging Face Transformers 라이브러리 등에서도 널리 사용됨

예시 코드 (PyTorch):

from torch.optim import AdamW

optimizer = AdamW(model.parameters(), lr=1e-4, weight_decay=1e-2)

응용 분야[편집 | 원본 편집]

AdamW는 다음과 같은 딥러닝 분야에서 널리 사용된다:

  • 자연어 처리 모델 (예: BERT, GPT, T5 등)
  • 컴퓨터 비전 모델 (예: Vision Transformer, ConvNeXt 등)
  • 생성 모델 (예: GAN, VAE)
  • 대규모 모델 학습에서 일반화 성능 확보가 중요한 경우

같이 보기[편집 | 원본 편집]

참고 문헌[편집 | 원본 편집]

  • Ilya Loshchilov, Frank Hutter. "Decoupled Weight Decay Regularization." arXiv preprint arXiv:1711.05101, 2017.

각주[편집 | 원본 편집]