새소식

머신러닝 & 딥러닝

[최적화] 모멘텀(Momentum)

  • -

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

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

 

vt+1=βvt+(1β)θtL(θt)vt+1=βvt+(1β)θtL(θt)
θt+1=θtηtvt+1θt+1=θtηtvt+1

 

여기서 vtvt는 현재 속도(모멘텀)를 나타내고, ββ는 속도에 대한 감쇠 계수(보통 0.9)다. θtθt는 현재 파라미터 값을 나타내며, θtL(θt)θtL(θt)는 손실 함수의 기울기(gradient)를 나타낸다. ηtηt는 학습률(learning rate)을 나타낸다.

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

  1. 파라미터 θθ의 초기 추정값과 속도 v0v0를 설정한다.
  2. 손실 함수의 기울기를 계산한다: θtL(θt)θtL(θt)
  3. 속도를 업데이트한다: vt+1=βvt+(1β)θtL(θt)vt+1=βvt+(1β)θtL(θt)
  4. 파라미터를 업데이트한다: θt+1=θtηtvt+1θt+1=θtηtvt+1
  5. 원하는 정확도에 도달하거나, 최대 반복 횟수에 도달할 때까지 2~4단계를 반복한다.

 

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

 

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

Contents

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

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