RMSprop
AdaGrad방법에서 h값이 계속커지는 것을 방지하기 위해, h를 계속 더하는 것이 아니라 지수이동평균 (EMA = Exponential Moving Average) 으로 바꾼다.
무슨뜻이냐 하면, 과거의 모든 기울기를 계속해서 균일하게 더해가는 것이 아닌 과거의 기울기는 서서히 잊고 새로운 기울기 정보를 크게 반영하겠다는 것이다. 식을 보며 이해해 보자.
$$ h \gets \gamma h + (1-\gamma)\frac{\partial L}{\partial W} \bigodot \frac{\partial L}{\partial W} \\ W \gets W - \eta \frac{1}{\sqrt{h + \epsilon}}\frac{\partial L}{\partial W} $$ AdaGrad와 비교하면 크게 달라진것이 없어보인다. 차이점은 $\gamma$라는 변수가 새로 보이는 것이다. 이를 decay rate라고 부르며 보통 이 값은 0.9나 0.99등의 값으로 설정하는데, 연산되는 위치를 살펴보면 우선 기존의 h값에 곱해짐을 알 수 있다. 이 값이 1미만임을 생각해보면, 이를통해 과거의 기울기를 잊고자 함을 수식으로 구현했다고 볼 수 있다. 그리고 기울기값에 $1-\gamma$값을 곱하며 새로운 기울기 정보를 반영해나간다. 그러면 SGD의 단점에서 다룬 함수로 비교해보자.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeSDaP8Zw4XdD4LFb1hyphenhyphenp0IJEAJxCKn0tOxjDZ27SDLB6xelAfmb0qfbHssESoaakwlZZzmJKL4tqmI5GdmgdcitOpL8nR6mvDjhwYCU_bXJM6bJzJanKgPhYV67AQWixP5CVvEFzPezY/s400/RMSprop.png)
사실 AdaGrad방법과 큰 차이가 보이지 않는다. 애초에 AdaGrad가 갱신량이 0이 될때의 문제점을 개선하기 위한 알고리즘이니까, 차이를 느끼기 어렵긴 하다. AdaGrad와 비교해 갱신량이 줄어도 계속해서 진행됨을 시각적으로 더 보고 싶으면 이 블로그의 애니메이션을 보면 좋을 것 같다.
무슨뜻이냐 하면, 과거의 모든 기울기를 계속해서 균일하게 더해가는 것이 아닌 과거의 기울기는 서서히 잊고 새로운 기울기 정보를 크게 반영하겠다는 것이다. 식을 보며 이해해 보자.
$$ h \gets \gamma h + (1-\gamma)\frac{\partial L}{\partial W} \bigodot \frac{\partial L}{\partial W} \\ W \gets W - \eta \frac{1}{\sqrt{h + \epsilon}}\frac{\partial L}{\partial W} $$ AdaGrad와 비교하면 크게 달라진것이 없어보인다. 차이점은 $\gamma$라는 변수가 새로 보이는 것이다. 이를 decay rate라고 부르며 보통 이 값은 0.9나 0.99등의 값으로 설정하는데, 연산되는 위치를 살펴보면 우선 기존의 h값에 곱해짐을 알 수 있다. 이 값이 1미만임을 생각해보면, 이를통해 과거의 기울기를 잊고자 함을 수식으로 구현했다고 볼 수 있다. 그리고 기울기값에 $1-\gamma$값을 곱하며 새로운 기울기 정보를 반영해나간다. 그러면 SGD의 단점에서 다룬 함수로 비교해보자.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeSDaP8Zw4XdD4LFb1hyphenhyphenp0IJEAJxCKn0tOxjDZ27SDLB6xelAfmb0qfbHssESoaakwlZZzmJKL4tqmI5GdmgdcitOpL8nR6mvDjhwYCU_bXJM6bJzJanKgPhYV67AQWixP5CVvEFzPezY/s400/RMSprop.png)
사실 AdaGrad방법과 큰 차이가 보이지 않는다. 애초에 AdaGrad가 갱신량이 0이 될때의 문제점을 개선하기 위한 알고리즘이니까, 차이를 느끼기 어렵긴 하다. AdaGrad와 비교해 갱신량이 줄어도 계속해서 진행됨을 시각적으로 더 보고 싶으면 이 블로그의 애니메이션을 보면 좋을 것 같다.
댓글
댓글 쓰기