Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

Zorba blog

Gradient Descent Optimization Algorithms 본문

Machine Learning

Gradient Descent Optimization Algorithms

Zorba blog 2022. 6. 23. 11:48

Gradient Descent

- Neural Network의 weight을 조절하는 과정에는 보통 "Gradient Descent" 라는 방법을 사용함.

- 네트워크에서 내놓는 결과값과 실제 결과값 사이의 차이를 정의하는 함수 Loss function J()

- J()를 최소화하기 위해 기울기를 이용하는 방법을 Gradient Descent라 함.

- 한 Interation 에서의 변화 식은 다음과 같음.

사진

 

- J() 앞에 붙은 에타(n)은 미리 정해진 step size로 learning rate로 불림.

- 보통 0.01~0.001 정도의 적당한 크기를 사용.

 

- Loss Function을 계산할 때 전체 train set을 사용하는 것을 Batch Gradient Descent 라고 함.

- 이렇게 계산할 경우 한 Step마다 전체 데이터에 대해 Loss Function을 계산하므로 너무 많은 계산량 필요.

- 이를 방지하기 위해 Stochastic Gradient Descent(SGD) 방법을 사용.

- SGD는 Loss Function을 계산할 때 전체 데이터(Batch) 대신 일부 조그마한 데이터모음(mini-batch)에 대해서만 Loss Function을 계산하여 이 값을 이용해 Parameter Update 진행.

  • 장점1) 계산 속도 측면에서 훨씬 나은 성능을 기대할 수 있음.
  • 장점2) 여러 번 반복 수행할 경우 보통 batch의 결과와 유사한 결과로 수렴.
  • 장점3) Batch Gradient Descent에서 빠진 local minima에 빠지지 않을 가능성 있음

 

움짤 추가.

https://www.google.com/search?q=sgd+momentum+nag&source=lnms&tbm=isch&sa=X&ved=2ahUKEwj81IbDtcL4AhU6RmwGHaLYBN8Q_AUoAXoECAEQAw&biw=2133&bih=1041&dpr=0.9#imgrc=ZGctRMduE6Oc7M&imgdii=EREGXx8PxDXNdM 

 

sgd momentum nag - Google 검색

SGD, Momentum, NAG velog.io

www.google.com

- 위 그림은 SGD 및 SGD의 변형 알고리즘들이 최적값을 찾는 과정을 시각화한 것이며, 아래는 특징들을 설명.

  • SGD는 다른 알고리즘들 보다 이동속도가 현저하게 느리다.
  • 단순한 SGD를 이용해 네트워크를 학습시킬 경우 네트워크가 상대적으로 좋은 결과를 얻지 못할 것이라 예측할 수 있음. (같은 epoch 만큼 돌았을 경우 최적값까지 도달하는 epoch의 차이 발생 가능성.)
  • 네트워크와 Loss Function의 특징에 맞춰 적당한 알고리즘을 채택하는 것이 학습 성능 개선에 영향을 줄 것.

Momentum

- Momentum 방식은 말 그대로 Gradient Descent를 통해 이동하는 과정에 일종의 '관성'을 주는 것.

- 현재 Gradient를 통해 이동하는 방향과는 별개로, 과거에 이동했던 방식을 기억하면서 그 방향으로 추가적으로 이동하는 방식.

식 추가.

 

- r는 얼마나 momentum을 줄 것인지에 대한 momentum term으로 보통 0.9 값 사용.

- 과거에 얼마나 이동했는지에 대한 정보를 항 vt-1 에 기억.

- 새로운 이동을 진행할 경우 이를 고려해 Parameter 를 업데이트.

- SGD가 진동(Oscilation) 현상을 겪을 때 적용.

사진 추가

 

- 중앙의 최적적으로 이동해야 하는 상황에서 한번의 Step으로 움직일 수 있는 step_size(learning rate)는 각 Parameter들의 방향으로 한계가 생김.

- 그러나 momentum 방식은 우측 그림에서 처럼 step이 반복될 수록 이동하는 방향으로 힘을 얻기 때문에 상대적으로 빠르게 이동.(그 효과는 r값의 곱만큼 계속해서 줄어듬)

사진

 

  • 장점) local minima를 빠져나오는 효과
  • 단점) 기존 변수 외에도 과거에 이동했던 양을 변수별로 저장해야 하므로 메모리가 기존의 두 배 필요.

Nesterov Accelerated gradient(NAG)

- Momentum 방식에서는 이동 벡터 vt를 계산할 때 현재 위치에서의 gradient와 momentum step을 독립적으로 계산하고 합침.

- 반면 NAG에서는 momentum step을 먼저 고려하여, 먼저 이동했다고 생각한 후 그 자리에서의 gradient를 구해서 gradient step을 이동.

식 추가

 

- 멈춰야 할 시점에도 관성에 의해 훨씬 멀리 갈수도 있다는 단점을 보완.

- Momentum 방식의 빠른 이동에 대한 이점을 누리면서 멈춰야 할 적절한 시점에서 제동을 거는데 훨씬 용이.

- 단점) 연산량이 기존 Momentum 방식보다 많음.


Adagrad(Adaptive Gradient)

- Adagrad(Adaptive Gradient)는 변수들을 Update 할 때 각각의 변수마다 Step size를 다르게 설정해서 이동하는 방식.

- 기울기가 클 때는 G(t)가 커져서 학습률이 작아지고, 기울기가 작을 때는 G(t)가 작아져서 학습률이 커짐.

- 알고리즘의 기본적인 아이디어 : 지금까지 많이 변화했던 변수들은 Step size를 작게 하자.

- 자주 등장하거나 변화를 많이 한 변수들의 경우 : optimum에 가까이 있을 확률이 높기 때문에 작은 크기로 이동하면서 세밀한 값을 조정.

- 적게 변화한 변수들의 경우 : optimum 값에 도달하기 위해서 많이 이동해야 할 확률이 높기 때문에 먼저 빠르게 loss 값을 줄이는 방향으로 이동하려는 방식.

 

- Neural Network의 Parameter가 k개라고 할 때, Gt는 k차원 벡터로서 time step t까지 각 변수가 이동한 gradient의 sum of squares 저장.

- 델타를 업데이트하는 상황에서는 기존 step size에 Gt의 루트 값에 반비례한 크기로 이동을 진행.

- 지금까지 많이 변화한 변수일 수록 적게 이동.

- 적게 변화한 변수일 수록 많이 이동.

- 입실론e 은 10^-4 ~ 10^-8 정도의 작은 값으로 0으로 나눠지는 것을 방지.

  • 장점) 고의적 Step size decay를 신경쓰지 않아도 된다.
  • 단점) 학습이 계속적으로 진행될 때 step size가 너무 줄어든다는 문제점.

식 삽입.

- 학습이 오래될 경우 결국 거의 움직이지 않게 되는데, 이를 보오나하여 고친 알고리즘 존재.(RMSProp 과 AdaDelta)


RMSProp

- Adagrad의 단점 해결.

- r가 0.5면 기존 Adagrad와 동일. r가 1이면 이전 스텝의 G(t)만 남음. r가 0이면 기울기의 제곱이 G(t) 를 차지.

- 이전 기울기가 중요하냐, 아니면 현재 기울기가 중요하냐.

- Gradient의 제곱값을 더해 나가면서 구한 Gt 부분을 합이 아니라 지수 평균으로 바꾸어 대체.

  • 장점) Gt가 무한정 커지지 않는 효과
  • 장점) 변화량의 변수간 상대적 크기 차이는 유지

식 추가.


AdaDelta(Adaptive Delta)

- 동일하게 Gt를 구하지만 Parameter 업데이트를 위한 합을 구하는 과정에서 지수 평균을 사용.

캡처본 추가.

 


Adam(Adaptive Moment Estimation)

- RMSProp과 Momentum 방식을 합친 것 같은 알고리즘

- Momentum 방식과 유사하게 지금까지 계산해온 지수평균을 저장.

- RMSProp과 유사하게 기울기의 지수 평균을 저장.

식 추가.


Conclusion

- Momentum, NAG, AdaGrad, AdaDelta, RMSProp, Adam 등 다양한 Optimization 알고리즘이 존재.

- 여기서 설명한 알고리즘들은 모두 Stochastic Gradient Descent 방식으로 단순한 first-order optimization의 변형.

- 단순한 second-order optimization을 사용하기 위해서는 Hessian Matrix란 2차 편미분 행렬을 계산한 후 역행렬을 구해야 함.

 

출처: https://www.slideshare.net/yongho/ss-79607172

 

자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.

백날 자습해도 이해 안 가던 딥러닝, 머리속에 인스톨 시켜드립니다. 이 슬라이드를 보고 나면, 유명한 영상인식을 위한 딥러닝 구조 VGG를 코드 수준에서 읽으실 수 있을 거에요

www.slideshare.net

 

https://velog.io/@viriditass/%EB%82%B4%EA%B0%80-%EB%B3%B4%EB%A0%A4%EA%B3%A0-%EB%A7%8C%EB%93%A0-Optimizier-%EC%A0%95%EB%A6%AC

Comments