포스트

딥러닝 기초 (5) - 최적화: SGD, 모멘텀, Adam

경사하강의 "기울기 반대로 한 걸음"을 더 똑똑하게 만드는 최적화 기법들 — 미니배치 SGD, 모멘텀, RMSProp, Adam, 그리고 학습률 스케줄(warmup·decay) — 을 각각이 무엇을 해결하는지 중심으로 정리한 딥러닝 기초 (5)편입니다.

딥러닝 기초 (5) - 최적화: SGD, 모멘텀, Adam

딥러닝 기초 시리즈의 5편입니다. 전체 목차는 0편에 있습니다. 4편에서 역전파로 기울기를 얻었다면, 이 편은 그 기울기로 어떻게 내려갈지를 다룹니다.

경사하강을 더 똑똑하게

4편의 기본 경사하강은 w ← w − η·∂L/∂w, 곧 “기울기 반대로 한 걸음”이었습니다. 단순하지만 문제가 있습니다. 데이터가 많으면 전체 기울기 한 번 구하기가 비싸고, 손실 지형이 울퉁불퉁하면 진동하거나 느립니다. 최적화 기법들은 이 걸음을 개선합니다.

미니배치 SGD

전체 데이터로 기울기를 구하는 대신, 데이터를 작은 미니배치로 나눠 배치마다 갱신하는 것이 확률적 경사하강법(SGD)입니다. 갱신이 훨씬 잦아지고 메모리도 감당됩니다. 배치로 추정한 기울기에는 노이즈가 섞이는데, 이 노이즈가 오히려 얕은 지역 최소를 빠져나오는 데 도움이 됩니다. 오늘날 “SGD”는 대개 이 미니배치 방식을 뜻합니다.

모멘텀: 관성을 더하다

기본 SGD는 좁고 긴 골짜기에서 좌우로 튀며 느리게 내려갑니다. 모멘텀(Momentum)은 과거 기울기를 관성처럼 누적해 이를 완화합니다. 좌우로 튀는 성분은 서로 상쇄되고, 골짜기를 따라 이어지는 방향은 누적돼 가속됩니다.

1
2
v ← β·v + ∂L/∂w        # 과거 기울기의 관성 (β는 보통 0.9)
w ← w − η·v

공을 굴리면 관성으로 진동을 뚫고 골짜기 바닥을 향해 미끄러지는 것과 같습니다.

적응형 학습률: RMSProp에서 Adam으로

모든 파라미터에 같은 학습률을 쓰는 것도 비효율적입니다. RMSProp/AdaGrad는 파라미터마다 그동안 기울기가 컸던 방향은 학습률을 줄이고, 작았던 방향은 키워 좌표별로 보폭을 다르게 가져갑니다.

Adam은 여기에 모멘텀을 합친 것으로, 과거 기울기의 방향(1차 모멘트)과 크기(2차 모멘트)를 함께 추적합니다. 별다른 튜닝 없이도 잘 도는 경우가 많아 오늘날 사실상의 기본값입니다. 특별한 이유가 없으면 Adam으로 시작하면 됩니다.

옵티마이저핵심 아이디어
SGD미니배치로 자주 갱신. 노이즈가 탈출을 도움
모멘텀과거 기울기 관성 → 진동 억제, 가속
RMSProp좌표별 적응 학습률
Adam모멘텀 + 적응 학습률. 기본값

학습률 스케줄

학습률 η는 최적화에서 가장 중요한 하이퍼파라미터입니다. 너무 크면 최소점을 지나쳐 발산하고, 너무 작으면 한없이 느립니다. 고정값을 쓰기보다 학습이 진행되며 조절하는 스케줄을 씁니다.

  • warmup — 초반에 학습률을 작게 시작해 서서히 올립니다. 불안정한 초기 학습을 안정시킵니다.
  • decay — 후반에 학습률을 줄여 미세 조정합니다.

특히 Transformer 학습에서는 warmup + decay가 거의 필수입니다.

정리

개념한 줄 요약
미니배치 SGD배치 단위로 자주 갱신. 노이즈가 탈출을 도움
모멘텀과거 기울기 관성으로 진동 억제·가속
적응형 학습률파라미터마다 보폭을 다르게 (RMSProp)
Adam모멘텀 + 적응. 기본 선택
학습률 스케줄warmup으로 시작, decay로 마무리

옵티마이저가 좋아도 시작점이 나쁘면 학습이 안 됩니다. 다음 편은 그 시작점, 가중치 초기화입니다.

다음 글: 딥러닝 기초 (6) - 가중치 초기화: Xavier와 He

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.