본문 바로가기

Learning/Optimizer

Optimizer

반응형

최적화: loss function의 값을 최대한 낮추는 매개변수, 즉 매개변수의 최적값을 찾는 과정

01. Optimizer의 종류

1-1. Gradient Descent

image

  • Neural net의 weight를 조정할 때 사용하는 방법.
  • 네트워크의 output과 실제 결과값 사이의 차이 loss를 최소화하기 위해 기울기를 이용한다.
  • Gradient descent에서는 네트워크의 파라미터에 대해 gradient의 반대 방향으로 일정 크기만큼 이동하는 것을 반복하여 loss를 최소화하는 파라미터 값을 찾는다.
  • 단점: 최적값을 찾아 한 칸 전진할 때마다 모든 data를 넣어줘야 한다. 학습이 굉장히 오래 걸린다.

1-2. 확률적 경사 하강법 (Stochastic Gradient Descent. SGD)

image

  • 역전파하강법(Backpropagation)을 이용해 매개변수를 최적화하는 방법. Gradient Decent에 비해 mini batch를 이용해 조금씩 훑어보고 나아간다.

image

  • 단점: 최적화를 할 때 learning rate가 낮으면 loss function의 최소값으로 곧장 최적화하지 못하고, 지그재그로 이동하면서 최적화한다. 반면 learning rate가 높으면 최적화를 하지 못한다.

image

Gradient Descent와 Stochastic Gradient Descent는 방향성과 step size에서 문제가 생겼다.

이를 해결하기 위한 여러 Optimizer가 등장했다.

방향성 해결: Momentum, NAG

Step size 해결: Adagrad, RMSProp, AdaDelta

방향성+Step size 해결: Adam, Nadam

1-3. 모멘텀 (Momentum)

  • SGD가 지그재그로 움직이며 최적화되는 문제를 해결한 방법. Gradient Descent를 통해 이동하는 과정에 일종의 관성을 준다. 갱신 경로가 공이 그릇 바닥을 구르듯 움직인다.
  • 현재 Gradient를 통해 이동하는 방향과는 별개로 과거에 이동했던 방식을 기억하면서 그 방향으로 일정 정도만큼 추가적으로 이동하는 방식이다.

image

  • Momentum을 이용하면 자주 이동하는 방향에 대해 관성이 생기고 진동을 하더라도 중앙으로 가는 방향으로 힘을 갖고 있기 때문에 상대적으로 SGD에 비해 빠르게 움직일 수 있다. 즉, local minima에서 빠져나올 수 있다.

image

  • 단점: 기존의 네트워크 파라미터 변수 외에도 과거에 이동했던 방식을 변수 별로 저장해야 하므로 변수에 대한 메모리가 기존에 비해 두 배 이상 필요하게 된다.

1-4. NAG (Nesterov Accelerated Gradient)

  • Momentum 방식을 기초로 한 방식이지만 Gradient를 계산하는 방식은 조금 다르다.

image

  • Momentum: 이동 벡터 v를 계산할 때, 현재 위치에서의 gradient와 momentum step을 독립적으로 계산하고 합친다.
  • NAG: Momentum step을 먼저 고려하여 momentum step을 먼저 이동했다고 생각한 후, 그 자리에서의 gradient를 구해서 gradient step을 이동한다.
  • Momentum은 멈춰야 할 시점에도 관성에 의해 더 멀리 나아갈 수도 있지만, NAG에서는 Momentum방식으로 반 정도 이동을 한 후 어떤 방식으로 이동해야할 지를 결정한다. 즉, Momentum과 같이 빠르게 이동하면서도 제동을 거는 데 유리하다.

1-5. AdaGrad (Adaptive Gradient)

  • SGD, 모멘텀은 학습률(η) 값이 학습에 큰 영향을 준다는 문제가 있다. 너무 작으면 학습 시간이 너무 오래 걸리고, 너무 크면 학습이 제대로 이뤄지지 않는다.
  • 학습을 하면서 학습률을 점차 줄여가는 학습률 감소(learning rate decay) 기법을 이용해 해결할 수 있다.
  • 변수들을 update할 때 각각의 변수마다 step size를 다르게 설정해서 이동한다.
  • 학습률 감소 기법을 각각의 매개변수에 맞춤형으로 적용한 방법이다. 매개변수 갱신이 크게 될수록 다음 번의 학습률을 낮춘다.

image

  • 단점: 학습을 반복하다 보면 step size가 너무 줄어든다. 그 결과 결국 거의 움직이지 않게 된다

1-6. RMSProp

  • Adagrad의 단점을 해결하기 위해 나타난 optimizer.
  • Adagrad의 식에서 gradient의 제곱값을 더해나가면서 구한 Gt 부분을 합이 아니라 지수평균으로 바꾼다.
  • Adagrad처럼 Gt가 무한정 커지지는 않으면서 최근 변화량의 변수간 상대적인 크기 차이는 유지할 수 있다.
스크린샷 2019-09-28 오후 10 04 25 1

1-7. AdaDelta

  • Adagrad의 단점을 해결하기 위해 나타난 optimizer.
  • RMSProp과 동일하게 G를 구할 때 합을 구하는 대신 지수평균을 구한다
  • 여기에서는 step size를 단순하게 η 로 사용하는 대신 step size의 변화값의 제곱을 가지고 지수평균 값을 사용한다.
스크린샷 2019-09-28 오후 10 05 21

1-8. Adam (Adaptive Moment Estimation)

  • 최적화에 의한 갱신 경로를 바꾸는 Momentum, 학습률을 바꾸는 AdaGrad를 조합해서 만든 최적화 기법
  • Momentum 방식과 유사하게 지금까지 계산해온 기울기의 지수평균을 저장하며, RMSProp과 유사하게 기울기의 제곱값의 지수평균을 저장한다

02. Optimizer 간의 비교

최적화 기법에 따른 갱신 경로
image

MNIST 데이터셋으로 본 loss 값 변화
image

03. Reference

  • 밑바닥부터 시작하는 딥러닝 - 6장 학습 관련 기술들
  • 김범수 님의 블로그: link
반응형

'Learning > Optimizer' 카테고리의 다른 글

Initializer  (0) 2020.04.12
Loss Function  (0) 2020.04.12