Processing math: 100%
본문 바로가기
Optimization

[Optimization]Adam(Adaptive Momentum Estimation), Adamax

by 어떻게든 되겠지~ 2024. 6. 13.

 

 

앞선 글에서 Gradient Descent에서 Momentum(운동량), Velocity(속도)를 조정하는 방법들에 대해서 알아보았습니다

 

[Optimization]Momentum, Nesterov Accelerated Gradient(NAG)

앞서 Gradient Descent 에서 Mini - Batch GD, SGD를 공부해보았습니다 [Optimization][Gradient Descent] Batch와 Gradient Descent(Full batch, Mini-batch, SGD)[Optimization] Gradient Descent(경사하강법)! Optimization에 대해서 이제 처

self-objectification.tistory.com

 

 

이번 글에서는 Momentum, Velocity를 모두 조정하는 방법인 Adam에 대해 알아보도록 하겠습니다

Adam(Adaptive Momoment Estimation)

Adam은 Momentum과 RMSProp의 장점을 결합한 Gradient Descent 
Momentum의 특징인 vi와 RMSProp의 특징인 기울기의 제곱을 지수 이동 평균한 값을 수식에 활용합니다

v(t)=β1v(t1)+(1β1)L(θt)G(t)=β2G(t1)+(1β2)L(θt)2θt+1=θtηˆG(t)ˆv(t)+ϵ

※ 편향 보정

초기에 v(t)G(t)는 0에 가까운 값을 가지므로 이를 보정하여 추정이 정확하게 이루어지도록 한다.

ˆv(t)=v(t)1βt1,ˆG(t)=G(t)1βt2

 

ˆv(t),ˆG(t) 는 초기 학습 단계에서 gradient가 작을 때 적절한 learning rate를 선택하기 위해 bias가 수정된 값이다

 

1차 모멘텀 추정 

v(t)는 Momentum에서와 같이 Gradient에 EMA를 적용한 값을 사용한 것입니다

여기서 β1은 보통 0.9의 값을 사용합니다

 

아래 글은 Momentum에 대한 글입니다.

 

[Optimization]Momentum, Nesterov Accelerated Gradient(NAG)

앞서 Gradient Descent 에서 Mini - Batch GD, SGD를 공부해보았습니다 [Optimization][Gradient Descent] Batch와 Gradient Descent(Full batch, Mini-batch, SGD)[Optimization] Gradient Descent(경사하강법)! Optimization에 대해서 이제 처

self-objectification.tistory.com

 

2차 모멘텀 추정

G(t)는 RMSProp에서와 같이 Gradient의 제곱에 EMA를 적용한 값을 사용한 것입니다

여기서 β2은 보통 0.99의 값을 사용합니다

 

아래 글은 RMSProp에 대한 글입니다.

 

[Optimization]Adagrad(Adaptive Gradient), RMSProp(Root Mean Squared Propagation), Adadelta(Adaptive delta)

앞선 글에서는 Gradient Descent의 운동량(Momentum)을 조정하여 수렴속도를 빠르게 하는 방법인 Momentum, Nesterov Accelerated Gradient(NAG) Optimizer를 살펴보았습니다  [Optimization]Momentum, Nesterov Accelerated Gradient(

self-objectification.tistory.com

 

Adam의 장점

  1. 적응적인 학습률 : 각 Paramter 마다 개별적으로 학습률을 조정
  2. 빠르고 안정적인 수렴 : 1차 모멘텀과 2차 모멘텀을 결합하여 빠르게 수렴하고 큰 기울기로 인한 과도한 업데이트 방지, 기울기와 기울기 제곱을 동시에 추정함으로써 더욱 안정적이고 빠른 학습 가능
  3. 편향 보정 : 초기 단계에 편향 보정을 적용하여 v(t)G(t)가 너무 작아지는 문제를 방지

Adam의 단점

  1. 메모리 사용량 : 각 Parameter에 대해 1차와 2차 모멘텀 추정을 유지해야 하므로 다른 최적화 알고리즘에 비해 메모리 사용량이 많다
  2. 빠르고 안정적인 수렴 : 1차 모멘텀과 2차 모멘텀을 결합하여 빠르게 수렴하고 큰 기울기로 인한 과도한 업데이트 방지, 기울기와 기울기 제

 


Adamax

Adamax는 Adam 논문에서 Extension으로 제안된 알고리즘입니다

AdamL2 Norm을 기반으로 Learning rate를 조정하는데 AdamaxNP Norm으로 확장하여 Learning rate를 조정하도록 확장시킨 알고리즘입니다

하지만 p가 매우 클 경우, NP Norm이 극단적인 값을 갖는 등 매우 불안정할 수 있다고 합니다

 

v(t)는 Adagrad에서 사용한 것과 동일하게 사용합니다

v(t)=β1v(t1)+(1β1)ηL(θt)

 

Adam은 L2 Norm을 사용하였지만 LP Norm으로 확장시킨 식은 아래와 같습니다

V(t)=β2V(t1)+(1β2)(L(θt))p=(1βp2)ti=1β2p(ti)|Lw(t)|

 

여기서 p일 때 V(t)1pG(t)라고 하면

limpV(t)1p=G(t)=max(β2G(t1),|Lw(t)|)

 

따라서 Adamax의 알고리즘은 아래와 같습니다

w(t+1)=w(t)ηG(t)^v(t)

반응형