본문 바로가기
데이터 및 Programing/Part1. Basic Knowledge

머신러닝, 딥러닝 학습 , 최적화(Optimization)에 대해서 (SGD, Momentum, RMSProp, Adam)

by 깜장스 2022. 1. 15.
반응형

딥러닝의 최적화를 하는 방법에 대해 간단하게 알아 보겠다.

 

 

1. 딥러닝 최적화

     딥러닝은 매개 변수(가중치)를 갱신하는 방법으로 최적화를 한다고 볼 수 있다.(내 생각임)

 

1) 확률적 경사하강법(Stochastic Gradient Descent, SGD)

 

   - 최적의 가중치 값을 구하기 위해 미분을 통해 기울기를 구하고 가중치를 갱신방법으로

 

      전체를 한번에 계산하지 않고, 확률적으로 일부 샘플을 뽑아 조금씩 나누어 학습 시키는 방법 (이게 핵심)

 

   - 한번에 처리하는 속도가 빠르다! 왜냐면 일부 샘플만 뽑아서 계산하니까! 계산 양이 작음

 

       즉! 계산양도 작으니까 필요한 HW성능(메모리 같은거) 많이 안쓰고, 그래서 큰 데이터셋에서도 학습가능

      하지만! 확률적으로 일부 샘플을 뽑아서 학습하기 때문에 손실함수가 계산과정에서 요동을 침.

     (결국은 최소값으로 가게 되겠지만 요동을 친다는 것은 최단경로로 간다고 볼 수는 없는 것)

 

   - 수식에서 j(손실계수)를 최소화 하는 것이 목적이며, Update Rule을 이용해서 줄여나감.

경사하강법 이론(출처 : https://eloquentarduino.github.io/2020/04/stochastic-gradient-descent-on-your-microcontroller/)

 

GD와 SGD 경로 차이 (출처 : https://datascience-enthusiast.com/DL/Optimization_methods.html)

 

 

   - 경로를 보면 알수 있듯이 계산은 빠를지 몰라도, 요동치면서 가다보니 Case에 따라 시간이 많이 걸리기도 함.

 

2) 모멘텀 (Momentum)

 

   - 그냥 모멘텀이라고만 부르기 보다는 Gradient Descent with Momentum 이런 형태로 많이 불림.

 

   - Momentum의 개념을 도입한 Gradient Descent는 iteration에 따라 방향이 반대로 계속 바뀌어가는

 

     형태의 경로를 거쳐왔을 때에는 해당 방향으로 update하는 변화량이 점차 작아지고,

 

     iteration에 따라 방향이 계속 유지되어가면 가속을 붙여주는 방식의 update method라 할수 있음.

 

    - 즉! 물건이 가는 방향으로 관성이 붙으면 가속이 되고, 반대로 가면 저항을 받는 그런 느낌으로 이해하면됨.

 

    - 모멘텀으로 인해 이전 SGD에서 나오는 요동치는 현상이 줄어듬.

 

 

SGD의 최적화 경로 (출처 : https://eloquentarduino.github.io/2020/04/stochastic-gradient-descent-on-your-microcontroller/)

3) Adagrad (Adaptive Gradient)

 

   - 가장 가파른 경사를 따라 빠르게 하강하는 방법,

   - 경사가 급하면 빠르게 변화, 완만할 때는 느리게 변화 함(학습률을 변화 시켜가면서 진행)

   - 딥러닝에서는 학습률이 너무 감소되서 로컬 최소점에 빠져버릴수 있어서 잘 안쓴다고함.

     (전역 최소점을 가지 못하고 로컬 최소점에서 학습이 종료되 버릴수 있다함.)

 

4) RMSProp (Root Mean Square Propagation)

 

   - RMSProp은 Momentum을 이용한 Gradient와 사용 방식은 거의 유사한데,

 

     Gradient의 방향을 이용하지 않고 그 크기만을 이용해 업데이트 해주고자 하는 각 parameter에 대한

 

     학습 속도를 조절한다.

 

   - 학습이 안되기 시작하면, 학습률이 커져서 잘되게 만들고, 학습률이 너무 크면 다시 줄이는 방식을 사용함.

 

 

5) Adam (Adaptive Moment Estimation)

 

   - ADAM은 Gradient Descent with Momentum과 RMSProp를 합친 것!

 

    (좋은건 합쳐야죠!!)

 

   - 가장 많이 쓰인다고 함. (Adam)

 

   - 논문 경로 : https://arxiv.org/abs/1412.6980

 

Adam: A Method for Stochastic Optimization

We introduce Adam, an algorithm for first-order gradient-based optimization of stochastic objective functions, based on adaptive estimates of lower-order moments. The method is straightforward to implement, is computationally efficient, has little memory r

arxiv.org

(절대...기록하기 귀찮거나...하기싫거나는 해서 이러는건 아닙....니다.)

 

 

 

이제까지 본 방법들에 대해 아래 그림으로 부터 각 방법에 따른 최적화 경로 및 속도를 비교해 볼수 있다.

 

방법에 따른 최적화 경로 (출처 : https://github.com/ilguyi/optimizers.numpy)

 

반응형