모순 발생: "가중치가 크니까 빨리 줄여야지!" 하고 규제를 넣었는데, Adam이 "기울기가 크네? 보폭을 줄여야지~" 하면서 가중치를 줄이는 속도를 늦춰버리는 것입니다.
L2 규제의 모순
1. 우리가 λwt를 넣은 원래 목적: "가중치(w)가 너무 크니까 업데이트할 때 더 많이 빼줘!" 입니다.
2. 하지만 vt 식을 보면: λwt가 제곱(2)이 되어 vt 값을 키워버립니다.
3. 결과적으로: 분모인 vt가 커지니까, 전체 업데이트 보폭(vtη)이 작아져 버립니다. 즉, 가중치를 많이 줄이려고 규제(λwt)를 세게 걸었더니, 오히려 Adam이 "어? 기울기(규제 포함)가 너무 크네? 천천히 가야겠다"라며 보폭을 줄여버리는 모순이 생기는 거죠.
⑥ AdamW (Adam with Weight Decay)
Adam의 가중치 감쇠(L2 Regularization)를 적용할 때 발생하는 수학적 모순을 해결하여 일반화 성능(Generalization)을 극대화한 버전입니다.
Adam: L2 규제를 손실 함수에 포함시켜 기울기 계산 단계에서 처리.
AdamW: L2 규제/ 가중치 감쇠(Weight Decay)를 기울기 계산과 완전히 분리(Decouple)하여, 가중치 업데이트 마지막 단계에서 직접 감쇠시킴.(다시 말해, L2 규제 성분을 모멘텀이나 속도 계산할 때 넣지 않는 것.)
wt+1=(wt−Adam step)−λwt
알고리즘
Adam 계산: 순수하게 데이터 오차(∇L)로만 모멘텀과 속도를 계산해서 가중치를 업데이트합니다.
Step 1:gt=∇Data Loss
AdamW는 gt에 λwt를 섞지 않습니다. (순수 기울기만 사용)
Step 2: 이 "순수한" gt로 mt,vt, 그리고 Δwt를 계산합니다. (학습률 오염 방지)
Δwt=v^t+ϵηm^t
규제 적용: 업데이트가 다 끝난 직후에, 가중치 w에서 일정 비율(λ)을 그냥 빼버립니다.
Step 3:wt+1=wt−Δwt−ηλwt
이렇게 하면 L2 규제가 Adam의 학습률 조절 메커니즘에 방해받지 않고, 독립적으로 가중치 크기를 조절할 수 있게 됩니다. 이것이 AdamW가 일반화 성능이 훨씬 좋은 이유입니다.
특징
Transformer(GPT, BERT) 같은 대규모 모델에서 Adam보다 훨씬 더 정교한 규제가 가능해졌고, 최신 딥러닝 연구의 주류가 되었습니다.
Adam: 규제 성분을 속도(Gt) 계산에 포함시켜서 오히려 규제 효과를 떨어뜨렸습니다.
L2 규제가 기울기에 통합되어 들어옴 → 학습률 조절(vt) 계산 시 규제 항까지 제곱됨 →가중치가 클 때 오히려 규제가 약해지는 모순 발생.
AdamW: 규제를 모멘텀이나 속도 계산에서 분리(Decouple)하여 마지막에 직접 적용했습니다.
L2 규제를 기울기 계산에서 분리 → 순수하게 방향과 보폭만 정한 뒤, 마지막에 가중치를 직접 삭감.→일반화 성능 대폭 향상.
정리 테이블
이름
핵심 키워드
추천 상황
SGD
단순함, 느림
매우 단순한 모델
Momentum
관성, 탈출
SGD의 한계 극복 시
Adagrad
변수별 학습률
데이터가 희소할 때 (NLP 등)
RMSprop
최근 기울기 중시
RNN 계열 모델
Adam
Momentum + RMSprop
대부분의 일반적인 상황
AdamW
가중치 감쇠 분리
최신 Transformer 기반 모델
Adagrad: 모든 과거를 기억하다가 결국 멈춤. (희소 데이터에 강함)
RMSprop: 과거를 적당히 잊으며 끝까지 완주함. (RNN/시계열에 강함)
Adam: '관성'과 '최근 보폭 조절'의 장점만 쏙쏙 뽑아 만든 딥러닝계의 '올라운더'.
AdamW: Adam의 똑똑함은 유지하되, 가중치 규제(Weight Decay) 방식만 올바르게 고쳐서 성능을 한 단계 더 끌어올림.
용어 정리
모멘텀 (mt): 공이 굴러갈 때 가던 방향으로 계속 가려는 "방향과 관성"
속도/G (vt): 지형이 얼마나 험난한지에 따라 보폭을 줄이거나 늘리는 "적응형 학습률"
L2 규제 (λw): 가중치(w)가 너무 커지면 모델이 억지 예측을 하니까, 가중치 값 자체를 0에 가깝게 계속 깎아내는 "값의 크기 다이어트"