欲速不達

일을 급히 하고자 서두르면 도리어 이루지 못한다.

Fantastic AI, Fantastic World

DS | Data Science/ML | Machine Learning

[DL Basic] Optimization 최적화 - 2 : Gradient Descent

_껀이_ 2022. 10. 4. 21:14
728x90
반응형

1. Gradient Descent Method

1) Stochastic Gradient Descent : SGD vs Mini-batch Gradient Descent vs Batch Gradient Descent

SGD는 확률적으로 gradient를 업데이트하는 방식이다. 이는 데이터 하나에 대해 gradient를 업데이트하는 방법이고, 모든 데이터에 대해서 업데이트하는 기존의 Gradient Descent 방법보다는 모델의 Generalization에서 좋은 성능을 보여주었다.

 

하지만 실제로 모델을 학습할때는 resource적인 측면에서도 효율적이어야하는데 SGD는 모든 데이터에서 하나하나의 확률적인 업데이트를 실행하기 때문에 비효율적이었고, 이에 batch를 추출하여 업데이트하는 방법이 등장하였다. batch를 사용하는 방법으로는 데이터에서 mini-batch를 추출하여 해당하는 batch의 gradient를 구하여 업데이트하는 방식인 Mini-batch Gradient Descent가 있으며, 데이터 전체에 대해서 gradient를 구하여 업데이트 하는 Batch Gradient Descent가 있다.

 

batch가 크다고 다 좋은 것이 아니라 오히려 모델의 성능이 떨어지게 되므로 대부분의 모신러닝 모델들은 일정 크기의 mini-batch를 사용하게 되었다.

 

 

 

2) Momentum

Momentum은 물리학 용어로 '관성'을 뜻한다. 머신러닝에서는 이전 레이어에서 업데이트된 gradient의 방향으로도 해석할 수 있는데, 원래의 방향성을 반영하여 유지하기 위한 방법이다.

mometum은 아래와 같이 현재 위치에서의 gradient와 직전 gradient를 현재시점에서 반영하는 것으로 계산된다.

 

 

 

3) Nesterov Accelerated Gradient

Nesterov Accelerated Gradient은 momentum을 사용하지만 momentum을 적용하여 진행된 지점에서의 gradient를 계산하여 현재 시점의 step을 움직인다. momentum과 비교하여 보면 momentum의 반영 정도를 조절한 것으로 볼 수 있다.

 

Momentum vs Nesterov Accelerated Gradient

 

 

 

4) Adagrad

Adagrad는 learning rate에 초점을 맞춘 gradient descent 방식이다. learning rate가 너무 작으면 학습되는데 많은 시간이 소요되고, 너무 크면 발산하여 수렴하지 않기 때문에 학습이 제대로 이루어지지 않는데, Adagrad는 학습을 진행하면서 parameter의 빈번함(frequent)를 기준으로 학습률을 조절하는 방식이다. 업데이트가 빈번하게 된 parameter에 대해서는 업데이트를 작게하고 업데이트가 빈번하지 않은 parameter에 대해서는 업데이트를 크게 하는 방식이다.

 

 

 

6) RMSprop

RMSprop은 adaptive learning rate를 제안하였다. Adagrad는 gradient를 제곱해서 누적해가는데, 학습을 진행할수록 업데이트되는 양이 점점 줄어들게 된다. 어느 순간 gradient의 총합은 매우 커져서 업데이트량이 0에 수렴하게 되는데 이를 해결하기 위해 RMSprop에서는 과거의 모든 gradient에 대해 다른 가중치를 두어 반영하는 양을 다르게 하여 adaptive learning rate를 적용한다.

adaptive learning rate는 gradient의 지수이동평균(Exponential Moving Average : EMA)를 계산하여 반영하게 되며, step이 지날수록 최근의 gradient를 더 크게 반영하고 그 전의 gradient를 순차적으로 적게 반영시키는 것이 된다.

 

 

 

7) Adam

Adam(Adaptive Moment Estimation)은 momentum과 RMSprop의 아이디어를 융합한 방법이다. 과거의 gradient을 EMA로 계산한 값과 momentum을 동시에 반영하여 업데이트한다.

 

 

 

머신러닝 문제에 따라 장단점은 다르지만, 최근 대부분의 머신러닝 모델은 Adam을 사용한다. 업데이트되는 양이나 방향 등을 적절히 감안한 방법이기 때문에 가장 보편적인 Optimizer로 사용되는 것으로 보인다.

 

 

 

 

 

 

이미지 출처 : 네이버커넥트 부스트캠프 AI Tech 강의자료, 구글링 등

728x90
반응형