왜 SGD의 문제점 3가지: 진동, 고정 학습률, 희소 특징이 필요한가? 실무에서 이 개념 없이는 문제를 해결할 수 없습니다. 핵심 동기와 배경을 먼저 이해합시다.
SGD(확률적 경사 하강법)는 가장 기본적인 옵티마이저입니다:
\theta_{t+1} = \theta_t - \eta \cdot g_t
하지만 실전에서 3가지 심각한 문제가 있습니다.
문제 1: 진동(Oscillation)
- 경사가 급한 방향으로 왔다 갔다 진동
- 경사가 완만한 방향(실제 최적점 방향)으로는 매우 느리게 이동
- 수렴까지 스텝 수가 크게 늘어남
문제 2: 학습률 고정
- 모든 파라미터에 같은 학습률 η를 적용
- 어떤 파라미터는 η가 너무 크고, 어떤 파라미터는 너무 작음
- 학습 초기와 후기에 같은 η → 초기엔 느리고 후기엔 불안정
문제 3: 희소 특징 무시
- NLP에서 대부분의 그래디언트는 0, 가끔 큰 값이 옴
- SGD는 자주 나타나는 특징과 드물게 나타나는 특징을 구분 못함
- 드문 단어의 임베딩이 거의 업데이트 안 됨
이 3가지를 해결하는 과정이 Momentum → RMSProp → Adam입니다.
왜 중요한가? SGD는 모든 파라미터에 동일한 학습률을 적용합니다. 그런데 자주 등장하는 특징의 그래디언트는 크고, 드물게 등장하는 특징의 그래디언트는 작습니다. NLP에서 "the"의 임베딩은 매 배치마다 업데이트되지만, "serendipity"는 거의 업데이트되지 않습니다.
고정 학습률은 이 불균형을 해결할 수 없어, 자주 등장하는 특징은 진동하고 드문 특징은 학습이 느려집니다. 이것이 적응적 학습률 옵티마이저가 필요한 근본 이유이며, Adam은 이 문제를 1차 모멘텀과 2차 모멘텀의 조합으로 해결합니다.