[딥러닝]최적화 AdaMax 알고리즘


딥러닝 최적화 알고리즘인 AdaMax 에 대해 알려드리겠습니다. AdaMax라는 이름에서 알 수 있듯이 ADAM 에서부터 온 알고리즘입니다. ADAM 에 대해 먼저 이해를 하고 오시길 추천합니다.  

AdaMax 알고리즘

$J$는 loss나 score라고 보면 됩니다. 우리가 최적화 하고자하는 변수인 $\theta$에 대한 함수입니다. 

$$J = J(\theta)$$

AdaMax 알고리즘은 단순하다. $p>0$라고 하자. 

$$v_k[n] = \gamma_1 v_k[n-1] + (1-\gamma_1)\frac{\partial J}{\partial{\theta_k}}$$

$$G_k[n] = \gamma_2 G_k[n-1] + (1-\gamma_2)\left(\frac{\partial J}{\partial{\theta_k}}\right) ^p$$

여기서 눈치를 채셨는지요? ADAM 에서는 아래와 같이 그라디언트의 제곱(p=2)을 사용해서 $G$를 정의했지만 

AdaMax 는 그라디언트의 p제곱을 이용했습니다.(Lp norm)

 

위와 같이 $v_k$와 $G_k$를 정의한 후 아래에 $u$를 정의합니다.

$$u_k(n) = \max \{  \gamma_2 u_k(n-1), \mid \frac{\partial J}{\partial \theta_k}  \mid \}$$

그리고 bias를 없애기 위해(난 이해 못함) 다음과 $v_k\prime[n]$을 정의합니다.

$$v_k\prime[n] = \frac{v_k[n]}{1-\gamma_1^n}$$

 

그런 후 $\theta$를 업데이트 합니다.

$$\theta_k[n+1] = \theta_k[n] – \frac{\mu}{u_k(n)}v_k\prime(n)$$

Leave a Comment