IT Repository

(13) Optimizer - Adaptive learning rate 개념 본문

Basic fundamentals

(13) Optimizer - Adaptive learning rate 개념

IT찬니 2020. 1. 13. 18:11

 

 

 

 
  • Vanilla SGD
    • Momentum 개념
      1. Momentum
      2. NAG
    • Adaptive learning rate 개념
      1. AdaGrad
      2. AdaDelta, RMSProp
    • 위의 두 방법을 병합: ADAM (RMSProp + NAG)
 

Adagrad (Adaptive Gradient)

Vanilla SGD : 일괄적인 Learning rate
Adagrad : 각 파라미터마다 다른 Learning rate를 적용 (Adaptive Learning rate)

$$\theta_{t+1} = \theta - \dfrac{\eta}{\sqrt{G_t + \epsilon}} \cdot \nabla_\theta J(\theta_t) \\ G_t = G_{t-1} + \left( \nabla_\theta J(\theta_t) \right) ^2$$

$\theta$ 안에 $k$개의 파라미터가 있다고 할 때,
$G_t : \{ e_1, e_2, e_3, \dots , e_k \}$
각 $e_k$는 대응되는 파라미터의 Gradient의 제곱$\left ( = \left ( \nabla_\theta J(\theta_t) \right )^2 \right )$의 누적합

따라서, Gradient의 제곱은 항상 양수이고, $G_t$는 Gradient가 얼마만큼 변화했었는지가 저장된 벡터 값이다.

$\array{& \text{Learning rate} && \text{Gradient} \\ &&& \\ \text{Vanilla SGD} & \eta & \cdot & \nabla_\theta J(\theta) \\ &&& \\ && \Downarrow & \\ &&& \\ \text{Adagrad} & \dfrac{\eta}{\sqrt{G_t + \epsilon}} && \nabla_\theta J(\theta_t) \\ &&& \\ &\downarrow & & \downarrow \\ &&& \\ \text{(element-wise)} &\begin{bmatrix}e_1 \\ e_2 \\ \cdots \\ e_k\end{bmatrix} & \times & \begin{bmatrix}g_1 \\ g_2 \\ \cdots \\ g_k\end{bmatrix} }$

위와 같이 element-wise 곱 연산으로 인해 각 파라미터에 따라 서로 다른 Learning rate가 적용된다.
참고로 초기 상태에서는 $G_t$가 0이므로, 0으로 나누지 않기 위해 아주 작은 값인 $\epsilon$을 더한다.

Problem of Adagrad
스텝이 진행될수록 $G_t$가 무한대로 발산해버리므로, 스텝 사이즈가 0으로 수렴해버림

 

RMSProp

Adagrad에서 decay 상수($\gamma$)를 곱해줌으로써, $G_t$가 무한대로 발산하는 것을 방지

$$\theta_{t+1} = \theta - \dfrac{\eta}{\sqrt{G_t + \epsilon}} \cdot \nabla_\theta J(\theta_t) \\ G_t = \gamma G_{t-1} + (1 - \gamma)\left( \nabla_\theta J(\theta_t) \right) ^2 \\ (\gamma : \text{0 ~ 1 범위의 decay 상수})$$
 

Adadelta

Adagrad에서 파라미터 업데이트 시에 각 변수의 단위를 맞추고자 함

$$\theta_{t+1} = \theta_t - \Delta_\theta \\ ~\\ \Delta_\theta = \dfrac{\sqrt{s + \epsilon}}{\sqrt{G + \epsilon}} \cdot \nabla_\theta J(\theta_t) \\ ~\\ s_{t+1} = \gamma s_t + (1 - \gamma) \Delta_\theta \\ G_{t+1} = \gamma G_t + (1 - \gamma) \left ( \nabla_\theta J(\theta_t) \right )^2 \\ ~\\ \begin{pmatrix}\text{s : 파라미터가 얼마나 변화해왔는지에 대한 벡터값} \\ \text{G : Gradient가 얼마나 변화해왔는지에 대한 벡터값} \end{pmatrix}$$

\
$\array{ & \theta_t & = & \theta & - & \dfrac{\eta}{\sqrt{G_t + \epsilon}} \cdot \nabla_\theta J(\theta_t) \\ && = & \theta & - & \dfrac{\eta}{\sqrt{G_t + \epsilon}} \cdot \dfrac{\delta J}{\delta \theta} \\ ~\\ \text{단위} & (u) && (u) && \dfrac{Constant}{(u^{-1})} \cdot {(u^{-1})} \\ & (u) && (u) && Constant }$

$\theta$를 어떠한 물리량이라고 가정하고 그 단위를 $u$라고 하면, $\eta$는 상수이고 $\dfrac{\delta J}{\delta \theta}$는 단위가 $u^{-1}$이 됨

\
$\ \array{ & \theta_{t+1} & = & \theta_t & - & \Delta_\theta \\ \text{단위} & (u) && (u) && (u) }$

$\Delta_\theta$의 단위는 아래와 같이 계산된다.

$\array{ & \Delta_\theta & = & \dfrac{\sqrt{s + \epsilon}}{\sqrt{G + \epsilon}} & \cdot & \nabla_\theta J(\theta_t)\\ \text{단위}& (u) && \dfrac{(u)}{(u^{-1})} && (u^{-1}) }$

따라서, Adadelta는 따로 Learning rate를 지정해주지 않는다.
Adadelta가 Adagrad보다 더 잘 작동하는 경우도 있으나, 그렇지 않은 경우도 있다.

'Basic fundamentals' 카테고리의 다른 글

(14) Optimizer - ADAM Optimizer  (0) 2020.01.13
(12) Optimizer - Momentum 개념  (0) 2020.01.13
(11) Optimizer - Vanilla SGD  (0) 2020.01.13
(10) Optimizer  (0) 2020.01.13
(9) Other Techniques of Optimize  (0) 2020.01.13
Comments