ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Optimizer] Optimizer-경사하강법(Gradient Descent)
    Artificial Intelligence/Deep learning 2021. 5. 19. 14:34

    경사 하강 학습법은 최적화 이론의 한 방법입니다. 최적화 이론은 어떤 함수가 있을 때 함수의 출력이 최적의 값을 찾아내는 이론을 말합니다.

    그중에서도 딥러닝에서는 경사 하강법을 많이 사용하는데요 학습한 부분들을 정리하며 포스팅해보겠습니다. 수정해야 할 부분이 있으시면 댓글로 달아주시면 감사하겠습니다

     

     

    경사 하강법(Gradient Descent)

    경사 하강법의 Step

    함수 $f(x)$에서 경사를 따라 여러번의 스텝(step)을 통해 최적점(최솟값)으로 다가가는 것을 경사 하강법이라고 합니다

    경사는 기울기(미분, Gradient)를 이용해 계산합니다.

     

     

     

    경사 하강법(Gradient Descent)의 학습률(Learning rate)

    적절한 학습률(Learning rate)을 선택하지 못하는 경우

    경사하강법에서 학습률(Learning rate)을 값을 지정해야 해야 합니다.(Step size라고 부르기도 합니다) 

    위의 수식에서는 $a$가 학습률입니다.

    학습률(Learning rate)이 큰 경우 한 번 이동하는 거리가 커지므로 빠르게 수렴할 수 있다는 장점이 있습니다. 하지만, 학습률(Learning rate)을 너무 크게 설정해버리면 최솟값을 계산하도록 수렴하지 못하고 함숫값이 계속 커지는 방향으로 최적화가 진행될 수도 있습니다.

    또, 한편 학습률(Learning rate)이 너무 작은 경우 발산하지는 않을 수 있지만 최적의 값을 구하는데 소요되는 시간이 오래 걸린다는 단점이 있습니다. 즉 경사하강법(Gradient Descent)에는 적절한 학습률(Learning rate)를 찾는 것이 중요합니다

     

     

     

    경사 하강법(Gradient Descent)의 사용 이유

     

    • 실제 분석에서 맞딱드리게 되는 함수들은 닫힌 형태(closed form)가 아니거나 함수의 형태가 복잡해 (가령, 비선형함수) 미분계수와 그 근을 계산하기 어려운 경우가 많고, 실제 미분계수를 계산하는 과정을 컴퓨터로 구현하는 것에 비해 경사 하강법(Gradient Descent)은 컴퓨터로 비교적 쉽게 구현할 수 있기 때문입니다.
    • 데이터 양이 매우 큰 경우 경사하강법(Gradient Descent)과 같은 iterative 한 방법을 통해 해를 구하면 계산량 측면에서 더 효율적으로 해를 구할 수 있습니다

     

     

    경사 하강법(Gradient Descent)의 문제점

    Local Minimum

    • 경사하강법(Gradient Descent) 알고리즘을 시작하는 위치는 매번 랜덤 하기 때문에 어떤 경우에는 Local Minimun에 빠져 계속 헤어 나오지 못하는 경우가 생깁니다.

    Saddle Point

    • 안장점(Saddle Point)은 다변수 실함수의 변역에서, 어느 방향에서 보면 극대값이지만 다른 방향에서 보면 극소값이 되는 점입니다.   접평면 수평이 되는 점입니다. 안장점에서는 기울기가 0이기 때문에 더 이상 움직일 수 없습니다.

     

     

    SGD(Stochastic Gradient Descent)

    Gradient Descent 방식에는 크나큰 단점이 있습니다. 최적점을 찾아 나가기 위해서 한 칸 전진할 때마다 모든 데이터 셋을 넣어주어야 하기 때문에 학습이 굉장히 오래 걸리는 비효율적인 문제가 발생합니다. 그래서 나온 것이 Stochastic Gradient Descent입니다. 

    Stochastic Gradient Descent는 기존의 Gradient Descent와는 다르게 Mini-batch로 분할해 빠르게 전진하는 방법입니다.

     

     

    Momentum

    돌이 굴러 떨어지듯, 이동 벡터를 이용해 이전 기울기에 영향을 받도록 하는 방법입니다.

    • 관성을 이용하면 Local Minimum에 대처할 수 있습니다
    • 이동 벡터(Vt)를 추가로 이용하므로, 경사 하강법에 비해 2배의 메모리를 사용합니다.

     

    AdaGrad (Adaptive Gradient)

    각각의 변수별로 학습률이 달라지게 조절하는 알고리즘입니다. 

    • Element-wise 제곱으로 gt가 커져서 학습이 많이 된 변수는 학습률을 감소시키고, 그렇지 못한 변수들이 학습될 수 있도록 합니다.
    • gt가 계속해서 커지고 한 번 커지면 줄어들지 않기 때문에, 학습이 오래 진행되면 더 이상 학습이 이루어지지 않습니다.

     

     

     

    Optimizer 계보

    출처 : https://seamless.tistory.com/38

     

Designed by Tistory.