저번 글에서는 경사하강법의 가장 원초적인 방법과 수식에 대해서 알아보았다.
하지만
원초적인 경사하강법에서는 local minima 문제가 있다는 것을 알게 되었고
이 local minima 문제를 해결하기 위해 다양한 경사하강법 기법이 등장하게 되었다.
위 사진은 다양한 경사하강법 기법에 대해서 간단히 정리한 것이다.
이 글에서는 우리가 많이 사용할 SGD와 Adam을 설명할 것이고
Adam의 이해를 위한 Momentum, Adagrad, RMSProp 또한 설명할 것이다.
< SGD (Stochastic Gradient Descent) >
SGD는 전체 데이터 셋을 보고 방향을 정하는 GD와 다르게 전체 데이터의 일부 mini-batch 데이터를 보고 방향을 정하는 기법이다.
작은 데이터에 대해서 처리하기 때문에 처리 속도가 빠르며 부정확한 방향으로 갈 수 있지만 이러한 부정확한 방향은 오히려 local minima 문제를 해결할 확률이 큼
< Momentum >
Momentum은 경사에 공을 굴리는 것과 같은 기법이며 같은 방향으로 가고 싶어하는 성질인 관성을 이용한다.
계산이 같은 방향으로 나아가면 가속이 붙어 local minima를 벗어날 수 있다.
< Adagrad >
Adagrad는 스텝을 나아갈 때마다 점점 step size를 줄여나가는 기법이다.
처음에는 크게 움직이다 점점 세밀하게 스텝을 하는 기법이다.
처음 스텝이 크기 때문에 local minima에서 벗어날 확률이 높다.
학습률이 0이 될 가능성이 있다.
< RMSprop >
Adagrad와 같이 step size를 줄이는 것은 같지만 학습률이 0이 될 가능성과 맥락없이 step size를 줄이는 문제를 해결하기 위해 기울기의 누적크기(norm)에 따라 step size를 조정하는 기법이다.
< Adam >
Adam은 Momentum과 RMSprop을 섞어놓은 기법이다.
관성도 사용하며 step size도 적절히 줄이는 기법이다 우리는 이 Adam을 가장 많이 사용하게 될 것이다.