84. 모멘텀 (Momentum) 옵티마이저

⚠️ 이 문서는 딥러닝 모델이 밥그릇 모양의 손실 함수(Loss Function) 그래프를 따라 바닥(정답)으로 내려가는 과정에서, **단순히 현재 서 있는 발밑의 경사도만 보지 않고 '이전에 굴러오던 가속도(관성)'의 힘을 기억하여 함께 더해줌으로써, 얕은 함정(Local Minima)을 빠져나오게 돕고 지그재그 헛걸음을 일직선으로 잡아주는 '물리학적 최적화 기법'**을 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: 경사하강법(SGD) 업데이트 수식에 물리학의 '운동량(Momentum = 질량 $\times$ 속도)' 개념을 도입했다. 어제까지 오른쪽으로 열심히 달려오던 속도를 오늘 발걸음에 약간 보태어(예: 0.9배), 갑자기 방향을 틀 때 저항하게 만드는 것이다.
  2. 가치: 좁고 가파른 계곡을 내려갈 때 양쪽 벽에 튕기며 요동치는(지그재그) 쓸데없는 체력 낭비를 상쇄하여 곧장 밑바닥으로 직진하게 만들고, 산 중턱의 작은 웅덩이를 만났을 때 관성의 힘으로 치고 올라가 웅덩이를 탈출하게 해 준다.
  3. 기술 체계: 기존 기울기 공식에 이전 누적 업데이트 값인 $V$ 벡터를 일정 비율(보통 0.9)로 곱해 더해주며, 최신 딥러닝 표준인 Adam 옵티마이저의 핵심 엔진(1차 모멘트 추정치)으로 내장되어 있다.

Ⅰ. 기본 SGD의 치명적 삽질: 계곡에서의 핑퐁

눈앞의 경사만 보고 걷는 멍청한 알고리즘은 타원형 계곡에서 박살이 난다.

  1. 길쭉한 타원형 지형 (Ravine / 계곡):
    • 딥러닝의 손실 함수 지형은 동그란 밥그릇이 아니라, 남북(y축)으로는 절벽처럼 엄청 가파르고 동서(x축)로는 아주 완만하게 길게 늘어진 '계곡' 지형일 때가 많다. 우리가 가야 할 진짜 바닥은 동서 축을 따라 쭈욱 걸어가야 나오는 평평한 끝 지점이다.
  2. SGD의 지그재그 (Oscillation) 현상:
    • 가파른 절벽에서 SGD를 굴리면, 미분값이 큰 남북(y축) 방향으로만 민감하게 반응하여 반대쪽 벽으로 쾅! 하고 거대한 발걸음을 뛴다.
    • 반대쪽 벽에 닿으면 다시 이쪽 벽으로 쾅! 하고 튕겨 온다. 정작 진짜 가야 할 평평한 동서(x축) 방향으로는 경사가 완만해서 거의 전진하지 못하고 제자리에서 양쪽 벽만 널뛰기하며 시간(Epoch)을 다 허비한다.

📢 섹션 요약 비유: 길고 좁은 협곡을 따라 아래로 걸어가야 하는데, 바닥(SGD)에 튕기는 탁구공을 굴린 셈입니다. 탁구공은 양쪽 절벽 벽에 핑! 퐁! 하고 정신없이 부딪치느라 엄청나게 움직이긴 하지만, 정작 우리가 가야 할 협곡의 직진 방향으로는 1미터도 전진하지 못하고 헛고생만 하는 답답한 상황입니다.


Ⅱ. 모멘텀의 마법: 관성이 지그재그를 죽인다

과거의 기억(속도)을 더해주자 놀라운 궤적 보정이 일어났다.

  1. 과거 속도의 누적 (Velocity):
    • 모멘텀 옵티마이저는 매 걸음(Step)의 업데이트 양($\Delta W$)을 계산할 때, '현재 발바닥의 기울기'뿐만 아니라 '바로 직전에 내가 이동했던 발걸음 벡터($V$)'의 90% 정도를 더해서 최종 걷는 방향을 결정한다.
    • 공식: $ V_{new} = \gamma V_{old} + \eta \times \text{기울기} $ (여기서 $\gamma$가 관성 계수, 보통 0.9)
  2. 지그재그의 상쇄 효과 (진동 감소):
    • 계곡의 양쪽 벽으로 튕기는(남북 방향) 헛걸음은 한 번은 +y, 한 번은 -y로 부호가 계속 반대로 바뀐다. 과거의 기억을 누적해서 더하면 (+y) + (-y) 가 되어 서로 캔슬(상쇄)되면서 널뛰기 폭이 극적으로 줄어든다.
  3. 직진의 가속 효과 (속도 증가):
    • 반면 우리가 진짜 가야 할 동서 축(x축) 방향의 기울기는 비록 작지만 늘 일관되게 한쪽 방향(+)을 향하고 있다. 과거의 발걸음을 계속 누적해 더해주면, 같은 방향의 힘이 가속도처럼 쌓이면서(마치 내리막을 구르는 눈덩이처럼) 목적지를 향한 전진 속도가 쾌속으로 빨라진다.

📢 섹션 요약 비유: 탁구공 대신 무거운 볼링공(모멘텀)을 협곡에 굴린 것입니다. 볼링공은 무겁기 때문에(관성) 양쪽 벽에 부딪혀도 확 꺾이지 않고 앞으로 나아가려는 직진성을 유지합니다(지그재그 상쇄). 그리고 내리막을 따라 굴러갈수록 점점 가속도가 붙어(직진 가속), 눈 깜짝할 새 협곡 바닥의 목적지에 도달하는 물리 엔진의 승리입니다.


Ⅲ. Local Minima 탈출과 Nesterov 모멘텀 (NAG)

모멘텀은 속도뿐 아니라 깊은 함정을 넘는 점프대 역할도 한다.

  1. 지역 최솟값 (Local Minima) 돌파:
    • 언덕을 내려오다 산 중턱에 움푹 파인 작은 웅덩이를 만나면 기울기가 0이 되어 SGD는 영원히 멈춘다.
    • 하지만 모멘텀은 산 꼭대기부터 엄청난 속도로 굴러 내려오던 **'지금까지의 90% 관성 에너지'**를 품고 있다. 따라서 기울기가 0인 지점을 만나도 브레이크가 듣지 않고 그 추진력으로 웅덩이 반대편 언덕을 쑥 치고 올라가 함정을 가볍게 빠져나온다.
  2. Nesterov Accelerated Gradient (NAG: 네스테로프 모멘텀):
    • 기본 모멘텀은 멈춰야 할 진짜 바닥(Global Minimum)에 도달해서도 관성 때문에 브레이크를 못 잡고 목적지를 훌쩍 지나쳐버리는(Overshooting) 단점이 있다.
    • 러시아의 수학자 네스테로프가 고안한 이 방식은, 현재 위치에서 기울기를 구하지 않고, "내가 관성에 의해 1초 뒤 도착할 예상 미래 위치"를 미리 계산한 뒤 거기서 브레이크를 밟을 준비(기울기 계산)를 하는 선구안적 튜닝으로, 멈춰야 할 곳에서 정확히 멈추는 안정성을 더했다.

📢 섹션 요약 비유: 일반 모멘텀은 내리막의 가속도를 너무 믿은 나머지 바닥에 도착하고도 멈추지 못하고 관성 때문에 반대편 언덕으로 쭈욱 올라갔다가 다시 굴러떨어지는 등 제자리 잡기에 헛스윙을 많이 합니다. NAG는 스마트 브레이크 시스템을 달아서, 10m 앞에 목적지가 보이면 굴러가던 관성이 있더라도 미리 앞을 내다보고 브레이크를 스르륵 잡아 정확히 과녁에 멈추는 숙련된 운전자입니다.