All about

제가 공부한 내용을 정리하는 글입니다. 제가 보려고 쓰는 글이기 때문에 아래는 작성의 편의상 반말로 작성했습니다. 


RMSProp


이전 AdaGrad 설명에서 언급했듯이 AdaGrad 는 최소값에 도달하기 전에 학습률을 0에 수렴하게 만들 수도 있다. AdaGrad 가 간단한 convex function 에선 잘 동작하지만, 복잡한 다차원 곡면 함수를 (상대적으로)잘 탐색하도록 설계되지 않기도 했고. 기울기의 단순한 누적만으로는 충분하지 않은 셈이다.


RMSProp 은 기울기를 단순 누적하지 않고 지수 가중 이동 평균 Exponentially weighted moving average 를 사용하여 최신 기울기들이 더 크게 반영되도록 하였다.




이전 AdaGrad 의 h 에 새로운 hyper parameter ρ 를 추가하였다. 이제 h 가 무한히 커지지 않으면서 ρ 가 작을 수록 가장 최신의 기울기를 더 크게 반영하게 된다.


Adam


Adam 은 이전 글인 Momentum, AdaGrad 설명에서 언급한 Momentum 과 AdaGrad 를 융합한 방법이다.


출처: https://arxiv.org/pdf/1412.6980.pdf


이전 글에서 Momentum 은 새로운 계수로 v 를, AdaGrad 는 h 를 추가하여 최적화를 진행하였는데, Adam 은 두 기법에서 v, h 가 각각 최초 0으로 설정되어 학습 초반에 0으로 biased 되는 문제를 해결하기 위해 고안한 방법이다.


Adam 의 의사코드를 보면 1차 모멘텀인 m 과 2차 모멘텀인 v 를 이용하여 최적화를 진행하는데, 첫번째 항인 m_1 을 계산하는 과정을 살펴보면 쉽게 이해할 수 있다.



결론적으로, m_1 = g_1(첫번째 기울기) 이 됨으로써 기존에 m_0 = 0 로 인해서, m_1 = 0.1g_1(∵β_1 = 0.9) 이 되어 0 에 biased 됨이 해결되었다. 


두번째 항부터는 뒤로 갈 수록 가장 최신 기울기 한 개가 전체 평균에 10% 정도 영향을 주니 가중이동평균 목적에 부합한다.




알고리즘의 마지막 계산 순서인 위 부분도, v 를 m 으로 나누는 선택을 할 수도 있었는데 그렇게 하지 않은 이유는 m 은 매번 구해지는 기울기에 따라 늘었다 줄었다 하는 값이지만 v 는 제곱이 더해지므로 무조건 커지는 값이기 때문에 학습할때 step 이 너무 크지 않도록 적당히 작은 값을 움직이도록 하기 위해서 m<v 인 조건을 이용한 것으로 이해된다.


마지막으로 Optimizer 의 계보(?) 를 설명하는 간단한 그림을 첨부한다.


출처: https://www.slideshare.net/yongho/ss-79607172


일반적으로 가장 많이 쓰이는 알고리즘이 Adam 이기 때문에 NAG, AdaDelta, Nadam 등은 나중에 시간 되면 작성하자.


공유하기

facebook twitter kakaoTalk kakaostory naver band
loading