본문 바로가기

【1】Deep Learning 시작하기/최적화가 가장 중요하다!

Adagrad Optimizer (Adaptive Gradient)

“SGD의 탐색 거리를 개선해보자! 처음엔 크게, 나중엔 작게! 맞춤형 학습률 주겠어!“

 

 

이번에는 탐색 거리에 대한 문제를 해결하고자 등장한 Adagrad(Adaptive Gradient, Adagrad) 최적화에 대해서 설명하겠다. 수식에서 α라고 표시하는 학습률은 가중치의 최적 값을 탐색할 때 얼만큼 이동할지 결정하는 중요한 변수이다.  학습률이 너무 작으면 시간이 오래 걸리고, 너무 크면 최적 값을 찾지 못하고 치솟게 된다(발산한다고 말한다). 학습률 값은 초반에 큰 값을 주다가 점차 값을 줄이는데 이는 최적 값에 근접할 시 이동거리를 짧게 해 지나치지 않으려는 것이다. 이 방법은 모든 변수에 대해  학습률 값을 일괄 적용하는 방식으로 실제 신경망을 학습할 때 많이 사용되고 있다.

 

아다그라드는 위 방식에서 조금 더 진화한 형태로 ‘변수 별 맞춤형(adaptive) 학습률’을 주는 방식이다. 변수가 자주 업데이트 된다면 최적 값에 가까워졌다는 것을 의미한다. 이때 이동거리를 짧게 주면 최적 값을 지나치지 않고 찾을 수 있다. 반대로 업데이트가 자주 되지 않는 변수의 경우에는 이동 거리를 크게 줘서 최적 값에 가깝게 만들어 시간을 줄일 수 있다. 이것이 아다그리드의 원리이다. 이를 수식으로 표현하면 다음과 같다. 

 

변수 G 는 상태가 변할 때마다 기울기의 제곱 값이 계속 더해지게 된다. 즉 과거의 기울기를 가진 값으로 시간이 지날수록 점차 커지는 것이다. 변수를 갱신할 때 학습율을 G(t) 값으로 나누어 이동거리를 조정하는데 시간 t가 커질수록 과거의 기울기를 계속 더한 G(t) 값이 점차 커지게 되므로 학습률 α를 낮추게 만든다. 참고로 상태 t 가 변할 때 마다 그때의 가중치 w(t)의 영향을 보는 것이기 때문에 변수별로 학습률이 다르게 결정되어 ‘맞춤형 학습률’을 주게 된다. 수식에 사용된 ε 기호는 아주 작은 상수를 뜻하며, 0으로 나뉘는 문제를 방지하기 위해 대게 1e-6 정도의 값을 더해준다.

 

 

 

위 그림을 보면 최적 값과 거리가 먼 초반의 경우에는 기울기가 커서 학습율이 큰 상태이며, 최적 값에 다가올 수록 기울기가 작아져 학습율을 작게 만드는 것을 확인할 수 있다.

 

그러나 아다그라드 또한 문제가 있었으니 바로 G(t)가 감소하지 않고 값이 계속 증가한다는 것이다. 이렇게 값의 증가만 있는  G(t)는 학습률을 나누는데 사용되기 때문에 매개변수가 최적 값에 근사하지 않았음에도 학습률을 계속 작게 만들어 학습을 정체 시키게 한다. 이러한 문제점을 해결하고자  RMSProp 과 Adadelt 최적화 기법이 등장하는데, 다음 글에서 두가지 기법 중 우선 RMSProp을 먼저 살펴보겠다.

 

 

 

 


작성자 홍다혜 ghdek11@gmail.com / 이원재 wonway333@gmail.com