ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 8. 경사 하강법 종류
    AI/딥러닝 2019. 7. 14. 07:35

    저번에 Gradient Descent 알고리즘에 대해 다룬 적이 있습니다. 기본적으로 다뤘던 알고리즘은(SGD : Stochastic Gradient Descent ) Cost function의 형태가 convex하지 않고 복잡할 경우, local minimum에 빠져 엉뚱한 결과를 내는 경우도 존재합니다. 그래서 이번엔 이를 개선시킨 Gradient Descent 알고리즘들을 소개하려고 합니다.

    저기 별 모양이 cost가 최소가 되는 지점임

    Exponentially Weighted Moving Average

    우선 Moving Average가 무엇인지 알아볼까요. 말 그대로 '이동 평균'입니다. 보통 Moving Average는 현재 1~n까지의 데이터가 있으면, 현재 n부터 데이터의 특정 시점까지의 평균을 의미합니다. 그런데 Exponentially Weighted가 붙었습니다. 최근 데이터일수록 가중치를 더 부여하고 오래전 데이터일수록 가중치를 낮게 하는데 Exponential 하게 부여합니다. 수식은 이렇습니다.

     

    v(t) = B·v(t-1) + (1-B)·θ(t)

     

    v(0) = 0부터 시작해볼게요

    v(1) = B·v(0) + (1-B)·θ(1) = (1-B)·θ(1)

    v(2) = B·v(1) + (1-B)·θ(2) = B·(1-B)·θ(1) + (1-B)·θ(2) = (1-B)·(B·θ(1) + θ(2))

    v(3) = B·v(2) + (1-B)·θ(3) = B·(1-B)·(B·θ(1) + θ(2)) + (1-B)·θ(3) = (1-B)·(B2·θ(1) + B·θ(2) + θ(3))

     

    v(t) = (1-B)·(Bt-1θ(1) + Bt-2θ(2) + ... + θ(t))

     

    파란 색이 실제 데이터, 빨간 선이 moving average를 나타냅니다. 이제 본격적으로 Momentum을 볼까요.

    Momentum

    지금까진 Gradient Descent를 하면서 learning rate에 크게 영향을 받았었습니다. 그래서 learning rate가 작을 경우 local minimum에 빠지는 경우도 있었죠. 이제 Momentum으로 해당 문제를 어느 정도 개선할 수 있습니다. Momentum은 경사 하강하면서 관성을 부여합니다. 바로 위에서 본 Moving average로 말이죠. local minimum에 빠질 때, 관성의 힘으로 힘차게 빠져나갈 수 있다고 합니다. 다만, 위의 gif를 보면 알 수 있듯이, 힘을 강하게 받으면 global minumum에 다가갈 때 빙 둘러서 가네요.

    수식은 다음과 같습니다.

     

    v(t) = B·v(t-1) + (1-B)[∇J(θ(t-1))],

    θ(t) = θ(t-1) - a·v(t)

     

    B는 얼마나 관성의 힘을 줄지입니다. B가 0이면, 이전 속력의 영향을 받지 않아 기존 Gradient Descent Algorithm(SGD)과 동일합니다.

    Nesterov's Accelerated Gradient (NAG)

    이 방식은 Momentum과 유사합니다. Momentum은 브레이크 고장난 8톤 트럭이라면, NAG는 브레이크를 고친 제동 가능한 트럭이라는 겁니다. 위 gif에서도 Momentum이 가는 경로와 유사하지만, 톡 튀어나가지 않고 제동을 걸어주는 모습이 보이네요.

    NAG는 Momentum step을 먼저 거친 뒤에 gradient를 계산합니다. 마치 미래를 먼저 내다보는 것처럼요. 그래서 어느 정도 과속을 줄인다고 합니다. 선 멘텀 후 하강

    그 외에도 RMSProp, Adam 등이 있는데 잘 모르겠으면 그냥 Adam 쓰면 된다고 하네요...ㅋ

     

    그림 한 장으로 정리하면 다음과 같습니다. 좋은 그림이네요.

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

     

     

    반응형

    댓글

Designed by Tistory.