Optimization

[Optimization]Adam(Adaptive Momentum Estimation), Adamax

어떻게든 되겠지~ 2024. 6. 13. 17:49

 

 

앞선 글에서 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의 특징인 $v_i$와 RMSProp의 특징인 기울기의 제곱을 지수 이동 평균한 값을 수식에 활용합니다

$$
\begin{aligned}
&v(t) = {\beta}_1 \cdot v(t-1) + (1- {\beta}_1) \cdot \nabla{L( \theta_t)}\\
&G(t) = {\beta}_2 \cdot G(t-1) + (1-{\beta}_2) \cdot \nabla{L( \theta_t)}^2\\
&\theta_{t+1} = \theta_t -\eta \cdot \frac{\hat{G}(t)}{\sqrt{\hat{v}(t) + \epsilon}}\\
\end{aligned}
$$

※ 편향 보정

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

$$\hat{v}(t) = \frac{v(t)}{1 - \beta_1^t}, \quad \hat{G}(t) = \frac{G(t)}{1 - \beta_2^t}$$

 

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

 

1차 모멘텀 추정 

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

여기서 $\beta_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를 적용한 값을 사용한 것입니다

여기서 $\beta_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) = {\beta}_1 \cdot v(t-1) + (1- {\beta}_1) \cdot \eta\nabla{L( \theta_t)}$$

 

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

$$V(t) = {\beta}_2 \cdot V(t-1) + (1-{\beta}_2) \cdot (\nabla{L( \theta_t)})^p = (1 - \beta_2^p) \sum \limits_{i=1}^{t} {\beta_2}^{p(t-i)} \Big| \frac{\partial L}{\partial w(t)} \Big|$$

 

여기서 $p \rightarrow \infty $일 때 $V(t)^{\frac{1}{p}}$를 $G(t)$라고 하면

$$\underset{p \rightarrow \infty}\lim {V(t)}^{\frac{1}{p}} = G(t) = \max\big(\beta_2 G(t-1), \Big| \frac{\partial L}{\partial w(t)}\Big|\big)$$

 

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

$$w(t+1) = w(t) - \frac{\eta}{G(t)} \hat{v(t)}$$

반응형