
필자는 학습 시 보통 Adam을 사용하였는데, 최근 많은 SOTA 모델에서 최적화(Optimizer) 알고리즘으로 AdamW을 사용한다.
그래서 오늘은 Adam과 AdamW의 차이에 대해 알아보고자 한다!
가중치 감소(Weight decay)를 처리하는 방식에서 차이
가중치 감소
- 직관적으로 파라미터 업데이트 과정에서 현재 가중치에 비례하여
빠지는 항을 의미
- 학습률(η)과 강도(λ)는 항상 양수이기 때문에 W_old가 양수던 음수던 이전보다 0에 가깝게 업데이트 하여 과적합을 방지
Adam과의 차이점은 L2 정규화 처리 방식에 있다.
Adam
AdamW
분리(decoupled)그렇다면, Adam과 같이 기울기 갱신에 가중치 감소 항이 포함되면 왜 안 좋을까?
예측 능력(일반화 성능)이 저하되는 문제를 초래2차 모멘트라고 불린다.V가 왜 2차 모멘트?모멘트는 확률 변수의 모양과 특성을 나타내는 척도로 사용기울기(gradient)를 확률 변수로 간주하여 과거 기울기 제곱의 기댓값을 추정하기 때문에 2차 모멘트라고도 불림(엄밀히 말하면 $\mu$가 0이기 때문에 2차 원점 모멘트)V는 이전 업데이트에 사용한 gradient를 누적 제곱합으로 계산된다.
이 개념이 처음 소개되었던 Adagrad에서는 과거 모든 기울기를 단순 누적 제곱합으로 사용하였으나,
Adagrad, RMSprop, Adam, AdamW로 새로운 옵티마이저가 등장할 때마다 이를 계산하는 방법에 변화가 생김
지수이동평균(Exponentially Weighted Moving Average) Adam, AdamW에서 2차 모멘트인 V를 계산하는 데 사용하는 방법
이동 평균이란,
시간이 지남에 따라 가중치를 어떻게 부여?에 따라 달라짐(과거일수록 적은 가중치)EWMA는 라는 감쇠율을 사용하여 비율 반영 누적을 수행한다.
EWMA 수식
감쇠율은 0.999(default)이며, 튜닝이 가능하다.
업데이트 반복할수록, 현재 step(=배치) 학습률 결정에 영향을 미치는 이전 기울기 정보는 거듭제곱만큼 망각. 즉, 지수적으로(Exponentially) 빠르게 작아진다.
감쇠율이 아무리 1에 가까워도 1보다 작다면 망각 속도 차이는 있으나 망각은 유지됨
위 수식처럼 chain 반응이 일어나, 현재(t) 2차 모멘트에 반영되고 이는 하이퍼파라미터인 학습률에 반영되어 학습 속도를 결정한다.
v가 크다면 -> 학습 속도 느려짐v가 작다면 -> 학습 속도 빨라짐Adam
AdamW
decoupled) M은 gradient의 1차 원점 모멘트로, 관성을 더해 진동 방지, Local Minima 탈출에 기여
다시 강조하자면 M, V 계산에 gradient 포함되어 Adam은 가중치 감소 항 스케일링 영향이 발생, AdamW는 스케일링 영향에 자유롭다.
학습 시 weight_decay를 부여하지 않으면(= 0) Adam 업데이트 결과 = AdamW 업데이트 결과