Optimizers¶
parameters의 수가 적은 단순한 모델들의 경우 Hessian 계열이 사용되기도 하나,
Deep Neural Network에선 Gradient 계열 만이 사용됨.
- parameters의 수의 square에 비례하는 연산을 요구하는 Hessian 계열은 메모리 문제와 함께 너무 느린 학습속도로 인해 DNN 에 적합하지 않음.
Gradient 계열 Optimizers¶
대표적인 알고리즘의 요약.
- Batch Gradient Decent (or Vanilla Gradient Decent)
- Gradient계열의 원조.
- Stochastic Gradient Decent
- data 하나만으로 업데이트를 수행하여 Batch GD의 느린 문제 수정
- Mini-batch GD
- Batch GD와 SGD의 중간형.
- Momentum
- SGD의 local minimum에 빠지는 문제점을 momentum을 도입(이전 업데이트와 현재 gradient를 vector sum)하여 해결.
- NAG(Nesterov Accelerated Gradient)
- 우선 momentum으로 이동하고, 이동한 위치에서 gradient를 구해 이를 vector sum. 이 경우 Momentum에 비해 수렴위치인 minimum에서 요동치는 문제가 줄어들어 보다 안정화됨.
- Adagrad
- 학습이 진행되면서 parameter들의 업데이트 정도가 각기 다른 점을 반영하여, 각 parameter의 이전 gradient들의 합(업데이트된 정도)을 구하여 이에 반비례하여 업데이트되는 방식으로
adaptive learning rate
를 도입. - RMSProp과 Adadelta
- Adagrad의 learning rate가 지나치게 이른 학습 단계에서 소실되는 문제를 gradient의 2차 moment를 기반으로 보완하여 안정적인
adaptive learning rate
를 Deep Neural Network에서 사용가능하도록 해줌. - Adam
- RMSProp에 momentum을 도입하여 RMSProp과 Momentum을 효과적으로 결합함.
- AdaMax
- Adam에서 adaptive learning rate를 감소시키는데 gradient의 square를 이용한 \(L-2\) norm이 이용된 부분을 \(l-\infty\) norm으로 대체하여 보다 안정적인 학습을 가능하게 함(안정성을 빼곤 일반적으로 Adam이 보다 나은 것으로 알려짐).
- NAdam
- ADAM에 momentum대신에 NAG를 더해주어서 보다 빠른 수렴속도를 보이도록 개선.
다음 두 이미지는 Gradient Optimizers의 동작을 잘 보여줌.
- Images credit: Alec Radford.
- 참고 사이트: cs231n
- Contours of a loss surface and time evolution of different optimization algorithms. (별모양이 최적값임)
- Momentum 기반의 알고리즘들(
Momentum
와NAG
)에서 overshooting 이 보임. (hill에서 공을 아래로 굴릴 때 보이는 왔다갔다하와 동작.)
- Momentum 기반의 알고리즘들(
- A visualization of a saddle point in the optimization landscape, where the curvature along different dimension has different signs (one dimension curves up and another down).
SGD
는 제대로 최소값으로 나가지 못하는 것을 확인할 수 있음.- 고정된 learning rate를 사용하는 경우, local minima에 매우 취약함 을 알 수 있음.
- Adaptive Learning ratio계열 의 (
Adagrad``,
Adadelta,
Rmsprop`) 알고리즘들은 효과적으로 학습이 이루어짐을 확인 가능함.