본문 바로가기
지식공학/기계학습

Gradient Descent Optimization

by Eric87 2021. 6. 29.
반응형

Gradient Descent Momentum

Momentum방법은 현재 파라미터를 업데이트 해줄 때 이전 gradient들도 계산에 포함해주어 진행한다. 따라서 지금 gradient가 0이라고 할지라도 이전 gradient값이 있어 앞으로 나아갈 수 있다. 이는 마치 관성에 의해 계속 움직이려고 하는 효과를 가져다 준다. 하지만 이전에 있던 모든 gradient를 고려한다면, SGD는 멈추지 않을 것이다. 그래서 Momentum은 이전 gradient들의 영향력을 매 업데이트마다 감소해준다.

$$\begin{align}v_{t}&=\gamma v_{t-1}+\eta \bigtriangledown _{\theta_{t}}J(\theta_{t})\\
\theta_{t+1}&=\theta_{t}-v_{t}\end{align} $$

$\gamma$(감소율)는 0과 1사이의 값으로 보통 0.9로 정한다. 이는 SGD가 낮은 local minimum에서 벗어나 손실함수를 더 탐험할 수 있게 만들어 준다.

Nesterov Accelerated Gradient, NAG

momentum은 현재 update과정에서의 기울기 값을 기반으로 미래값을 도출하도록 되어있다. 따라서, 최적의 parameter를 관성에 의해 지나칠 수 있는 우려가 있다. NAG에서는 momentum으로 이동된 지점에서의 기울기를 활용하여 update를 수행하기 때문에 이러한 문제를 해소할 수 있다. 

$$\begin{align}v_{t}&=\gamma v_{t-1}+\eta \bigtriangledown _{\theta_{t}}J(\theta_{t}-\gamma v_{t-1})\\
\theta_{t+1}&=\theta_{t}-v_{t}\end{align}$$

위 NAG의 update식에서도 $\bigtriangledown _{\theta_{t}}J(\theta_{t}-\gamma v_{t-1})$와 같이 관성에 의해 이동된 곳에서의 기울기를 적용한 것을 볼 수 있다. 이는 관성에 의해 빨리 이동하는 이점을 누리면서도 멈춰야하는 곳에서 효과적으로 제동할 수 있다.

Adaptive Gradient, Adagrad

모든 파라미터에 대해서 같은 learning rate를 적용하여 업데이트를 했었는데 각 파라미터의 업데이트 빈도 수에 따라 업데이트 크기를 다르게 해주면 영향력에 따라 learning rate가 변하여 업데이트하는 효과가 발생한다.

Adagrad는 다음과 같은 업데이트식을 사용한다.

$$\theta_{t+1,i}=\theta_{t,i}-\frac{\eta}{\sqrt{G_{t,i}+\epsilon }}g_{t.i}$$

여기서 $G_t$는 i번째 대각원소로 t시점까지의 $\theta_i$에 대한 gradient들의 제곱의 총합을 갖는 대각행렬이다. 이후 parameter에서는 상대적으로 적은 변화를 주고 반대로 적게 이동한 parameter에서는 큰 변화를 주게 된다. $\epsilon$은 매우 작은 값으로 0으로 나누는 것을 방지하기 위해 사용됬다. Adagrad는 parameter별 상대적인 변화로 update를 수행하는 개념이었지만 학습이 진행됨에 따라 변화의 폭이 눈에 띄게 줄어들어 결국 움직이지 않게되는 상황이 발생된다.

RMSProp

Adagrad에서 문제를 개선하기 위해 $G_t$에서 지수이동평균을 사용한다. 이로인해 학습의 최소 step은 유지할 수 있게 되었다. 

$$\begin{align}E[g^2]_t&=\gamma E[g^2]_{t-1}+(1-\beta)( \bigtriangledown J(\theta_{t}))^2\\
\theta_{t+1}&=\theta_{t}-\frac{\alpha}{\sqrt{G_t}+\epsilon}\bigtriangledown J(\theta_{t})\end{align}$$

식에서와 같이 학습이 진행됨에 따라 parameter 사이 차별화는 유지하되 학습속도가 지속적으로 줄어들어 0에 수렴하는 것은 방지할 수 있다.

Adaptive Moment Estimation, Adam

RMSProp와 Momentum 기법을 합친 방법으로 기울기 값과 기울기의 제곱값의 지수이동평균을 활용하여 step변화량(학습률)을 조절한다. 1차 moment $E[X]$는 모평균이고 2차 moment $E[X^2]$와 1차 moment를 이용해 모분산을 얻을 수 있다. 

$$\begin{align}m_t&=\beta_1m_{t-1} +(1-\beta_1)\bigtriangledown J(\theta_{t})\\
v_t&=\beta_2v_{t-1} +(1-\beta_2)(\bigtriangledown J(\theta_{t}))^2\end{align}$$

편향(bias)를 잡아주기 위해 다음과 같이 bias-corrected를 계산한다. 

$$\begin{align}\hat{m_t}&=\frac{m_t}{1-\beta_1^t}\\
\hat{v_t}&=\frac{v_t}{1-\beta_2^t}\\\end{align}$$

최종 업데이트 식은 다음과 같다.

$$\theta_{t+1}=\theta_{t}-\frac{\alpha}{\sqrt{\hat{v_t}}+\epsilon}\hat{m_t}$$

 

 

반응형

'지식공학 > 기계학습' 카테고리의 다른 글

The Gaussian Distribution  (0) 2021.07.20
Binary Variables  (0) 2021.07.20
[딥러닝] 활성함수  (0) 2021.06.02
Generative Adversarial Network (GAN)  (0) 2021.05.27
딥러닝 기초  (0) 2021.05.04

댓글