새소식

머신러닝 & 딥러닝

[최적화] 모멘텀(Momentum)

  • -

모멘텀(Momentum)은 최적화 알고리즘에서 많이 사용되는 방법으로, 파라미터 업데이트 시 이전 단계의 움직임에 가중치를 두어 일정한 방향성을 유지하는 기법이다. 정확하게는 모멘텀 자체가 최적화 알고리즘은 아니고, 기존의 최적화 알고리즘에 추가되어 사용되는 기법이다. 이를 통해 최적화 과정에서 파라미터 업데이트가 더 안정적이고 빠르게 수렴하도록 한다. 직관적으로는 공이 경사면을 따라 내려가면서 속도를 얻어 일정한 방향으로 움직이는 모습을 생각할 수 있다(관성을 떠올리면 이해가 쉬움).

모멘텀의 공식은 다음과 같다.

 

$v_{t+1} = \beta v_t + (1-\beta) \nabla_{\theta_t} L(\theta_t)$
$\theta_{t+1} = \theta_t - \eta_t v_{t+1}$

 

여기서 $v_t$는 현재 속도(모멘텀)를 나타내고, $\beta$는 속도에 대한 감쇠 계수(보통 0.9)다. $\theta_t$는 현재 파라미터 값을 나타내며, $\nabla_{\theta_t} L(\theta_t)$는 손실 함수의 기울기(gradient)를 나타낸다. $\eta_t$는 학습률(learning rate)을 나타낸다.

모멘텀 방법을 사용하려면 다음과 같은 과정을 거친다.

  1. 파라미터 $\theta$의 초기 추정값과 속도 $v_0$를 설정한다.
  2. 손실 함수의 기울기를 계산한다: $\nabla_{\theta_t} L(\theta_t)$
  3. 속도를 업데이트한다: $v_{t+1} = \beta v_t + (1-\beta) \nabla_{\theta_t} L(\theta_t)$
  4. 파라미터를 업데이트한다: $\theta_{t+1} = \theta_t - \eta_t v_{t+1}$
  5. 원하는 정확도에 도달하거나, 최대 반복 횟수에 도달할 때까지 2~4단계를 반복한다.

 

모멘텀은 일정한 속도를 유지하므로 손실 함수의 지역 최소값이나 안장점에 빠져서 전역 최소값(global minimum)을 찾지 못하는 문제를 완화할 수 있다. 또한, 모멘텀은 고차원 최적화 문제에서 특히 효과적이다. 각 변수의 스케일이 다른 경우에도 방향성을 유지하면서 더 빠르게 최적의 해를 찾을 수 있다.

 

그치만 모멘텀은 이전 단계의 속도(모멘텀)를 저장해야 하므로, 메모리 사용량이 증가한다는 단점이 있다. 이는 병렬 처리 및 대규모 모델에서 메모리 요구사항에 영향을 줄 수 있다. 이런 단점을 극복하기 위해 다양한 모멘텀 기반 알고리즘이 존재한다. 이에는 AdaGrad, RMSprop, Adam 등이 있다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.