모멘텀을 사용한 SGD는 확률적 경사 하강법(SGD)의 변형으로, 수렴을 가속화하고 업데이트를 안정화하기 위해 모멘텀 항을 통합한다. 표준 SGD는 현재 미니배치 경사만을 사용하여 매개변수를 업데이트하는데, 이는 노이즈가 많고 불규칙한 움직임을 유발할 수 있다. 모멘텀은 과거 경사의 이동 평균을 유지함으로써 이를 해결하며, 업데이트 방향을 효과적으로 평활화하고 진동을 감쇠시킨다. 물리적 모멘텀에서 영감을 받은 이 기법은 옵티마이저가 일관된 방향으로 속도를 축적하고, 특히 딥러닝에서 흔한 조건이 나쁜 손실 지형에서 협곡을 더 효율적으로 횡단할 수 있게 한다.
핵심 아이디어는 고전적 최적화로 거슬러 올라가며, 1980년대에 버클리 연구원 버나드 위드로우 등이 신경망 훈련에서 대중화했다. 오늘날 널리 사용되는 구체적 공식은 카네기 멜론 교수 제프리 힌턴이 1986년 논문 'Learning representations by back-propagating errors'에서 소개했고, 2012년 강의 노트에서 더욱 정교화되었다. 이 방법은 심층 신경망 훈련의 표준 도구가 되었으며, 종종 Adam과 같은 최신 옵티마이저를 비교하는 기준선 역할을 한다.
수학적 공식
표준 SGD에서 반복 \( t \) 시점의 매개변수 업데이트는 다음과 같다:
\[ w_{t+1} = w_t - \eta \nabla Q_i(w_t) \]
여기서 \( \eta \)는 학습률이고 \( \nabla Q_i(w_t) \)는 미니배치 샘플에서 계산된 경사이다. 모멘텀을 사용하면 추가 속도 변수 \( v \)가 도입되며 업데이트는 다음과 같아진다:
\[ v_{t+1} = \mu v_t + \eta \nabla Q_i(w_t) \]
\[ w_{t+1} = w_t - v_{t+1} \]
여기서 \( \mu \) (일반적으로 0.5에서 0.9 사이)는 모멘텀 계수로, 이전 속도를 얼마나 유지할지 제어한다. \( \mu \)가 높을수록 과거 경사에 더 많은 가중치를 부여하여 더 부드럽지만 새로운 경사 방향에 대한 적응은 잠재적으로 느려진다. 속도는 시간에 따라 경사를 축적하므로, 경사가 지속적으로 같은 방향을 가리키면 스텝 크기가 커져 진행이 가속화된다. 반대로 경사가 진동하면 모멘텀 항이 이를 평균화하여 지터를 줄인다.
직관과 비유
'모멘텀'이라는 이름은 물리학에서 유래한다: 언덕을 굴러 내려가는 공은 질량 때문에 속도를 얻고 방향 변화에 저항한다. 최적화에서 속도 벡터는 공의 모멘텀처럼 작용하여 옵티마이저가 작은 국소 변동을 '넘어서' 일관된 방향으로 계속 나아가게 한다. 이는 표준 SGD가 골짜기 벽을 가로질러 지그재그로 움직이는 길고 좁은 골짜기가 있는 손실 표면에서 특히 유용하다. 모멘텀은 옵티마이저가 골짜기 바닥을 따라 더 직접적으로 이동하게 하여 최소점에 도달하는 데 필요한 반복 횟수를 줄인다.
변형 및 확장
모멘텀의 여러 변형이 개발되었다. 유리 네스테로프가 1983년에 소개한 네스테로프 가속 경사(NAG)는 현재 속도를 적용한 후의 위치에서 경사를 계산하는 선견지명 버전으로, 현재 위치에서 계산하지 않는다. 이 '엿보기'를 통해 NAG는 경로를 더 빠르게 수정할 수 있어 종종 고전적 모멘텀보다 빠른 수렴을 달성한다. 딥러닝에서 NAG는 '네스테로프 모멘텀'이라고도 불리며 TensorFlow 및 PyTorch 같은 라이브러리에서 구현된다.
또 다른 관련 개념은 헤비볼 모멘텀으로, 본질적으로 위에서 설명한 고전적 모멘텀이다. '헤비볼'이라는 용어는 표면 위를 굴러가는 무거운 공의 비유에서 유래하며, 최적화 문헌에서 '모멘텀'과 상호 교환적으로 사용되기도 한다.
딥러닝 훈련에서의 역할
실제로 모멘텀을 사용한 SGD는 신경망, 대규모 언어 모델, 트랜스포머 훈련에 널리 사용된다. 예를 들어 OpenAI와 Google DeepMind는 다양한 훈련 실행에서 모멘텀 기반 옵티마이저를 사용했다고 보고했다. 이 방법은 속도 항이 배치 간 경사 노이즈를 평활화하므로 큰 미니배치와 학습률 스케줄을 사용할 때 훈련을 안정화하는 데 도움이 된다. 또한 모멘텀을 시간에 따라 학습률을 감소시키는 학습률 스케줄과 결합하는 것이 일반적이며, 이를 통해 옵티마이저가 큰 초기 스텝을 만들고 이후 미세 조정할 수 있다.
Adam과의 비교
2015년에 소개된 Adam 옵티마이저는 각 매개변수에 대해 별도의 적응형 학습률을 유지하여 모멘텀을 확장하며, 모멘텀과 매개변수별 스케일링을 결합한다. Adam은 특히 희소 경사나 노이즈가 많은 목적 함수에서 실제로 더 빠르게 수렴하는 경우가 많지만, 모멘텀을 사용한 SGD는 일부 작업, 특히 컴퓨터 비전에서 더 나은 일반화를 보일 수 있다. 많은 실무자가 합성곱 신경망에는 모멘텀을 사용한 SGD를 기본으로 사용하고 트랜스포머에는 Adam을 사용하지만, 선택은 특정 문제에 따라 달라진다. 연구에 따르면 모멘텀을 사용한 SGD는 특히 가중치 초기화 및 배치 정규화와 함께 적절히 조정되면 비교 가능하거나 더 우수한 테스트 정확도를 달성할 수 있다.
수렴 특성
이론적으로 모멘텀을 사용한 SGD는 볼록성 가정 하에서 표준 SGD의 수렴 보장을 유지한다. 볼록 목적 함수의 경우 Robbins-Monro 조건을 만족하는 감소 학습률로 알고리즘은 전역 최소점에 거의 확실히 수렴한다. 비볼록 목적 함수의 경우 국소 최소점 또는 정류점에 수렴한다. 모멘텀 항은 점근적 수렴 속도를 변경하지 않지만 상수 인자를 개선할 수 있으며, 이는 종종 더 적은 반복으로 주어진 정확도에 도달함을 의미한다. 그러나 올바른 모멘텀 계수를 선택하는 것이 중요하다; 너무 높은 값은 오버슈팅과 발산을 유발할 수 있고, 너무 낮은 값은 이점을 줄인다.
실용적 고려 사항
모멘텀을 사용한 SGD를 구현할 때 몇 가지 실용적 세부 사항이 중요하다. 모멘텀 계수는 종종 기본값으로 0.9로 설정되지만, 매우 깊은 신경망에서는 0.95 또는 0.99 같은 값이 사용된다. 일부 구현은 훈련 중 \( \mu \)를 낮게 시작하여 점차 증가시키는 모멘텀 스케줄을 사용한다. 또한 모멘텀은 경사 클리핑과 상호 작용한다: 모멘텀 업데이트를 적용하기 전에 경사를 클리핑하면 속도가 너무 커지는 것을 방지하며, 이는 순환 신경망이나 불안정한 경사를 가진 모델을 훈련할 때 중요하다. 분산 훈련에서 모멘텀은 동기식 또는 비동기식으로 구현될 수 있으며, 재현성을 위해 동기식 모멘텀이 더 일반적이다.
역사적 맥락
최적화에서 모멘텀의 개념은 딥러닝보다 앞선다. 1960년대에 버나드 위드로우와 테드 호프는 업데이트에 모멘텀 형태를 사용한 최소 평균 제곱 필터를 개발했다. 신경망을 위한 현대적 공식은 종종 제프리 힌턴의 1986년 작업에 기인하며, 그는 역전파를 가속화하는 방법으로 '모멘텀 방법'을 설명했다. 그 이후로 이는 scikit-learn, TensorFlow, PyTorch의 구현과 함께 머신러닝 라이브러리의 필수 요소가 되었다. 더 복잡한 옵티마이저의 확산에도 불구하고 그 단순성과 효과성은 지속적인 관련성을 보장했다.