RMSProp은 머신러닝과 딥러닝에서 신경망을 훈련하는 데 흔히 사용되는 적응형 학습률 최적화 알고리즘이다. 이 알고리즘은 각 파라미터에 대해 학습률을 개별적으로 조정하며, 최근 기울기 크기의 제곱 평균 제곱근으로 기울기 업데이트를 나누어 훈련을 안정화하고 수렴을 가속화한다. 특히 비정상 목적 함수와 희소 데이터에 효과적이다.
이 방법은 2012년 Geoffrey Hinton이 Coursera 강좌 "Neural Networks for Machine Learning"의 강의 노트에서 소개했지만, 공식적인 동료 검토를 거치지는 않았다. 이는 rprop과 AdaGrad의 개선으로 개발되었으며, 후자의 학습률이 단조롭게 감소하는 문제를 해결했다. RMSProp은 이후 많은 딥러닝 프레임워크에서 표준 최적화기로 자리 잡았으며, 대규모 언어 모델 및 기타 생성형 AI 시스템과 같은 모델 훈련에 널리 사용된다.
배경: 확률적 경사 하강법
RMSProp은 확률적 경사 하강법(SGD)의 기반 위에 구축된다. SGD는 목적 함수를 최적화하는 반복적 방법이다. 머신러닝에서 목표는 종종 Q(w) = (1/n) Σ Q_i(w) 형태의 경험적 위험 함수를 최소화하는 것이며, 여기서 각 Q_i는 i번째 훈련 예제에 대한 손실이다. 표준 경사 하강법은 전체 데이터셋에 대한 기울기를 계산하므로 대규모 데이터셋에서는 계산 비용이 높다. SGD는 대신 각 단계에서 무작위로 선택된 부분 집합(또는 단일 샘플)을 사용하여 기울기를 근사하므로 반복 속도가 빠르지만 업데이트가 더 noisy하다.
확률적 근사의 아이디어는 1950년대 Robbins-Monro 알고리즘으로 거슬러 올라간다. 현대 실무에서 SGD와 그 변형은 대규모 모델 훈련에 필수적이며, 전체 기울기 평가의 계산 부담을 줄인다. 그러나 고정 학습률을 사용하는 SGD는 학습률 선택에 민감할 수 있으며 수렴이 느리거나 진동할 수 있다.
적응형 학습률의 필요성
SGD에서 학습률 η는 단계 크기를 제어한다. 단일 전역 학습률을 선택하는 것은 어렵다. 딥 네트워크에서 기울기 규모가 다양하므로 파라미터마다 다른 단계 크기가 필요할 수 있기 때문이다. 큰 학습률은 발산을 유발할 수 있고, 작은 학습률은 수렴을 느리게 한다. 적응형 방법은 과거 기울기 정보를 기반으로 파라미터별 학습률을 유지하여 이 문제를 해결한다.
초기 적응형 방법에는 AdaGrad가 있으며, 이는 제곱 기울기의 합의 역제곱근으로 학습률을 조정한다. 그러나 Adagrad의 제곱 기울기 누적은 단조롭게 증가하여 학습률이 시간이 지남에 따라 0으로 수축하며, 이는 딥러닝에서 사용을 제한한다. RMSProp은 제곱 기울기의 이동 평균을 사용하여 학습률이 너무 작아지는 것을 방지한다.
RMSProp 알고리즘
RMSProp은 각 파라미터에 대해 제곱 기울기의 이동 평균을 유지한다. 각 반복 t에서 파라미터 w에 대해 알고리즘은 미니 배치에서 기울기 g_t를 계산하고 평균을 다음과 같이 업데이트한다:
v_t = β v_{t-1} + (1 - β) g_t^2
여기서 β는 감쇠율이며 일반적으로 0.9로 설정된다. 파라미터 업데이트는 다음과 같다:
w_{t+1} = w_t - (η / sqrt(v_t + ε)) * g_t
여기서 η는 전역 학습률(종종 0.001)이고 ε는 0으로 나누는 것을 방지하기 위한 작은 상수(예: 1e-8)이다. sqrt(v_t) 항은 최근 기울기의 제곱 평균 제곱근이며, 따라서 이름이 RMSProp이다.
감쇠율 β는 고려되는 이력의 양을 제어한다. 더 작은 β는 최근 기울기에 더 많은 가중치를 부여하여 손실 지형의 변화에 더 적응적으로 만든다. 이는 순환 신경망 및 온라인 학습에서 발생하는 비정상 목적 함수에 특히 유용하다.
변형 및 확장
RMSProp은 여러 변형에 영감을 주었다. 가장 주목할 만한 것은 adam으로, 기울기의 이동 평균(1차 모멘트)과 제곱 기울기의 이동 평균(2차 모멘트)을 모두 유지하여 RMSProp에 모멘텀을 결합한다. Adam은 견고성과 빠른 수렴 덕분에 많은 딥러닝 응용에서 기본 최적화기가 되었다. 다른 변형으로는 RMSProp과 유사하지만 다른 업데이트 규칙을 사용하는 AdaDelta와 Nesterov 모멘텀을 통합한 Nadam이 있다.
실무에서 RMSProp은 종종 미니 배치 훈련과 함께 사용되며, 기울기는 데이터의 작은 부분 집합에서 계산된다. 또한 배치 정규화 및 훈련을 안정화하는 기타 기술과 잘 작동한다. TensorFlow 및 PyTorch와 같은 많은 딥러닝 프레임워크는 RMSProp의 내장 구현을 제공하여 실무자가 쉽게 사용할 수 있다.
딥러닝 응용
RMSProp은 이미지 인식을 위한 합성곱 네트워크와 시퀀스 모델링을 위한 순환 네트워크를 포함한 딥 신경망 훈련에 널리 적용되었다. 특히 자연어 처리에서 사용되는 희소 기울기를 가진 모델 훈련에 효과적이다. 예를 들어, RMSProp은 초기 버전의 트랜스포머 훈련과 심층 Q-네트워크와 같은 강화 학습 알고리즘에 사용되었다.
대규모 언어 모델의 맥락에서 RMSProp 및 Adam과 같은 적응형 최적화기는 고차원 파라미터 공간과 다양한 기울기 규모를 처리하는 데 중요하다. OpenAI, Anthropic, Google DeepMind와 같은 기업은 Amazon Web Services 및 Google Cloud와 같은 제공업체의 분산 컴퓨팅 인프라를 사용하여 대규모 데이터셋에서 모델을 훈련할 때 이러한 최적화기에 의존한다.
다른 최적화기와의 비교
RMSProp은 업데이트를 평활화하기 위해 속도 벡터를 누적하는 모멘텀 기반 방법(예: 모멘텀이 있는 SGD)과 다르다. 모멘텀은 지역 최소값을 탈출하고 일관된 방향으로 가속하는 데 도움이 되지만, RMSProp은 파라미터별 단계 크기를 정규화하여 기울기 규모가 다를 때 더 안정적일 수 있다. Adagrad와 비교하여 RMSProp의 이동 평균은 학습률이 너무 급격히 감소하는 것을 방지하여 긴 훈련 실행에 더 적합하다.
그러나 RMSProp은 β와 η의 선택에 민감할 수 있다. 실무에서 기본 β 0.9와 η 0.001은 많은 문제에서 잘 작동한다. 일부 작업에서는 Adam의 편향 보정과 모멘텀이 더 빠른 수렴을 이끌 수 있지만, RMSProp은 특히 메모리가 문제가 될 때 여전히 견고한 선택이다. 파라미터당 추가 변수 하나만 저장하면 되기 때문이다.
실무 고려 사항
RMSProp을 사용할 때 손실 곡선을 모니터링하고 필요에 따라 하이퍼파라미터를 조정하는 것이 중요하다. 너무 높은 학습률은 발산을 유발할 수 있고, 너무 낮으면 수렴이 느려질 수 있다. ε 항은 일반적으로 수치 문제를 방지하기 위해 작은 값으로 설정된다. 희소 데이터의 경우 RMSProp을 기울기 클리핑과 결합하여 순환 네트워크에서 흔한 기울기 폭발 문제를 피할 수 있다.
RMSProp은 전역 학습률을 시간이 지남에 따라 줄이는 학습률 스케줄과도 호환된다. 이는 훈련 후반 단계에서 모델을 미세 조정하는 데 도움이 될 수 있다. 많은 실무자가 RMSProp을 기준선으로 사용하고 특정 작업에 가장 적합한 것을 선택하기 위해 Adam 또는 다른 최적화기와 비교한다.
결론
RMSProp은 딥러닝 분야에 큰 영향을 미친 기초적인 적응형 학습률 방법이다. 과거 기울기의 제곱 평균 제곱근을 사용하여 비정상 목적 함수가 있는 문제에서 신경망을 훈련하는 안정적이고 효율적인 방법을 제공한다. 그 아이디어는 Adam과 같은 더 고급 최적화기에 통합되었지만, RMSProp은 여전히 머신러닝 실무자의 도구 상자에서 가치 있는 도구로 남아 있다. 딥러닝이 계속 진화함에 따라 RMSProp과 같은 적응형 최적화 방법은 점점 더 복잡한 모델을 훈련하는 데 필수적일 것이다.