# RMSprop (루트 평균 제곱 전파, Root Mean Square Propagation)

RMSprop(루트 평균 제곱 전파)은 딥러닝 및 머신러닝에서 많이 사용되는 최적화 알고리즘이다. 이는 일반적인 확률적 경사하강법(SGD)에서 발생하는 문제점을 해결하고자 개발되었다. RMSprop은 특히 신경망 학습에서 자주 사용되며, 학습률을 적응적으로 조정하여 안정적인 학습을 도모한다.

#### RMSprop의 기본 개념

RMSprop은 경사하강법의 변형 중 하나로, 각 매개변수에 대해 개별적인 학습률을 적용하는 방법이다. 이는 확률적 경사하강법이 종종 학습률을 적절히 조정하지 못해 발생하는 문제를 해결한다.

RMSprop은 지수 이동 평균(Exponential Moving Average, EMA)을 사용하여 기울기의 제곱을 계산한다. 이 평균값은 각 매개변수의 업데이트 크기를 조정하는 데 사용된다. 구체적으로, 기울기의 제곱 평균을 계산한 후, 이를 이용해 학습률을 나누어 업데이트를 수행한다.

#### 수학적 표현

RMSprop의 주요 아이디어는 기울기 업데이트 시 이전 기울기의 정보를 반영하는 것이다. 이 과정은 다음과 같이 수학적으로 표현된다.

우선, 기울기의 제곱에 대한 지수 이동 평균을 계산한다:

$$
E\[g^2]*t = \gamma E\[g^2]*{t-1} + (1 - \gamma)g\_t^2
$$

여기서 $ E\[g^2]\_t $는 시간 $ t $에서의 기울기의 제곱에 대한 지수 이동 평균이며, $ \gamma $는 가중치 감소 계수(decay rate)이다. 일반적으로 $ \gamma $는 0.9로 설정된다.

다음으로, 매개변수 $ \theta $의 업데이트는 다음과 같이 이루어진다:

$$
\theta\_{t+1} = \theta\_t - \frac{\eta}{\sqrt{E\[g^2]\_t + \epsilon}} g\_t
$$

여기서 $ \eta $는 학습률, $ g\_t $는 현재 기울기, $ \epsilon $은 수치적인 안정성을 위해 추가된 작은 값이다. $ \epsilon $은 매우 작은 값으로 설정되며, 일반적으로 $ 10^{-7} $이 사용된다.

이 과정에서 $ E\[g^2]\_t $는 매개변수 업데이트 시 각각의 기울기 크기에 따라 학습률을 조정하는 역할을 한다. 이로 인해 학습률이 매우 크거나 작아지는 문제를 방지할 수 있다.

#### RMSprop의 장점

RMSprop은 적응적 학습률을 통해 경사하강법의 단점을 보완한다. 이는 다음과 같은 장점을 제공한다:

1. **안정적인 학습**: 지수 이동 평균을 사용하여 기울기의 변동을 완화한다. 이를 통해 학습 과정에서 과도한 진동을 방지하고, 보다 안정적인 학습을 가능하게 한다.
2. **효율적인 학습**: RMSprop은 기울기의 크기에 따라 학습률을 자동으로 조정한다. 이로 인해 각 매개변수는 그 자체의 스케일에 맞는 학습률로 업데이트되며, 학습 속도가 향상된다.
3. **메모리 효율성**: RMSprop은 추가로 저장해야 하는 변수가 적어 메모리 사용량이 적다. 이는 대규모 모델에서 유리한다.
4. **보편적인 사용성**: RMSprop은 다양한 문제에 적용 가능하며, 특히 딥러닝에서 좋은 성능을 보인다. 이는 RMSprop이 SGD와 달리 학습률의 미세 조정 없이도 효과적으로 작동하기 때문이다.

#### RMSprop의 한계

RMSprop은 강력한 최적화 기법이지만, 몇 가지 한계도 존재한다.

1. **국소 최소값 문제**: RMSprop은 국소 최소값에 빠질 수 있다. 이는 기울기 기반의 최적화 알고리즘이 공통적으로 가지는 문제점이다.
2. **최적의 하이퍼파라미터 선택 어려움**: RMSprop에서도 여전히 하이퍼파라미터(특히 학습률과 $ \gamma $)의 선택이 중요하다. 이들의 값이 부적절하게 설정되면, 학습이 제대로 이루어지지 않을 수 있다.
3. **모멘텀의 부재**: 모멘텀(momentum)을 포함하지 않는 경우, RMSprop은 경사면을 따라 더 느리게 이동할 수 있다. 이를 보완하기 위해 모멘텀을 결합한 RMSprop 변형도 존재한다.

***

관련 자료:

* Geoffrey Hinton, Neural Networks for Machine Learning Coursera Lecture 6e.
* D. P. Kingma and J. Ba, Adam: A Method for Stochastic Optimization, arXiv preprint arXiv:1412.6980, 2014.
* I. Goodfellow, Y. Bengio, and A. Courville, Deep Learning, MIT Press, 2016.
* Geoffrey Hinton, Lecture 6e rmsprop: Divide the gradient by a running average of its recent magnitude, Neural Networks for Machine Learning, 2012.
* Tieleman, T., & Hinton, G. (2012). Lecture 6.5 - rmsprop: Divide the gradient by a running average of its recent magnitude. COURSERA: Neural Networks for Machine Learning.
* D. P. Kingma, J. Ba, Adam: A Method for Stochastic Optimization, ICLR 2015.
