Optimization

[Optimization]Momentum, Nesterov Accelerated Gradient(NAG)

어떻게든 되겠지~ 2024. 6. 10. 21:41

 

 

앞서 Gradient Descent 에서 Mini - Batch GD, SGD를 공부해보았습니다

 

[Optimization][Gradient Descent] Batch와 Gradient Descent(Full batch, Mini-batch, SGD)

[Optimization] Gradient Descent(경사하강법)! Optimization에 대해서 이제 처음 접해보시는 분은 Optimization 정의 먼저 보고 오시면 좋습니다 !  [Optimization] Optimization 정의Optimization(최적화) 란?Optimization이란

self-objectification.tistory.com

 

언급한 바와 같이 SGD의 단점(Parameter 변경폭이 불안정)을 개선하기 위해 Velocity와 Momentum을 조정한다고 설명드렸었는데요
이번 글에서는 Momentum(운동량)을 조정하는 Optimizer에 대해 소개해보고자 합니다

 

Momentum

Gradient Descent와 마찬가지로 매번 Gradient를 구하지만, 가중치를 update하기 전 이전 update 방향을 참고하여 같은 방향으로 일정한 비율만 update하는 방법입니다.

즉, 이전 이동 값을 일정 비율 반영하여 다음 값을 결정하므로 관성 효과를 얻을 수 있다는 장점이 있습니다.

 

Momentum은 Loss Function이 Vanishing Gradient(골짜기) 형태로 좁고 깊거나, 경사가 진동(Oscillation)하는 경우에 빠르고 안정적인 수렴이 가능하다.

$$
\begin{aligned}
&v_{t+1} = \gamma v_{t} -  \eta \nabla L(\theta_t) \\
&\theta_{t+1} = \theta_t +  v_{t+1}
\end{aligned}
$$

  • $\gamma$ : Momentum 계수로, 이전 속도 방향을 얼마나 반영할지를 결정합니다.(0이면 SGD와 동일, 일반적으로 0.9 사)
  • $\gamma v_t$ : 이전 단계에서의 속도를 가져와 현재 방향에 더해준다.(경사 하강법이 이전 방향으로 더 쉽게 "가속"되도록 만들어준다)
  • $- \eta \nabla L(\theta_t)$ : 현재 손실 함수의 Gradient를 따라 움직인다.

Momentum은 SGD와 같이 사용하여 SGD에서 Gradient를 속도로 대체하여 사용하는 방법으로 이전 속도를 일정 부분 반영합니다.

즉, 이전에 학습했던 속도 현재의 Gradient를 반영하여 가중치를 업데이트합니다.

 

따라서 Momentum은 아래와 같은 장점이 있습니다.

  1. 빠른 수렴 : 최적화 경로가 잘 설정된 경우 학습 속도가 빨라진다.
  2. 진동 감소 : 좁고 깊은 골짜기에서 경사의 진동을 줄여준다.
  3. 안정성 증가 : Loss Function의 Noise나 불안정한 경사 방향에 덜 민감하다.

Nesterov Accelerated Gradient(네스테로프 모멘텀, NAG)

Momentum은 현재 위치에서 Gradient를 계산하고, 이전 속도와 합산하여 이동 방향을 결정한다. 반면, NAG는 이전 속도로 예측된 위치에서 경사를 계산하여 더 정확한 이동 방향을 결정한다. 즉,  NAG는 예측된 위치에서 경사를 계산하여 더 정확한 방향을 반영하고, 이전 속도를 이용해 가중치를 업데이트한다.

따라서, Momentum은 관성 효과로 인해 진동하거나 목표 지점을 지나칠 수 있는 단점이 있다. NAG는 이전 속도로 예측된 위치에서 Gradient를 계산함으로써 이동 방향을 재조정해 이러한 문제를 해결한다.

$$
\begin{aligned}
&\tilde{\theta}_{t} = \theta_t + \gamma v_t\\
&v_{t+1} = \gamma v_{t} - \eta{\nabla{L(\tilde{\theta}_{t})}}\\
&\theta_{t+1} = \theta_t + v_{t+1}\\
\end{aligned}
$$

NAG의 작동 과정

  1. 이전 속도 $\gamma v_t$를 활용하여 미리 예측된 위치 $\tilde {\theta}_t$를 계산
  2. 예측된 위치  $\tilde {\theta}_t$에서 Gradient를 계산하여 최적화 방향을 조정
  3. 최적화 방향에 따라 속도 $v_{t+1}$을 Update
  4. 새로운 속도 $v_{t+1}$을 활용해 $\theta_{t+1}$을 Update

Momentum Step : $\gamma v_t$ : 이전 속도로 예측된 위치

Gradient Step : $\eta{\nabla{L(\theta_t + \gamma v_{t})}}$ : 예측된 위치에서의 Gradient 계산

반응형