ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Optimization
    기초_개념/Deep Learning 2021. 1. 11. 01:39

    Optimization

    • 손실 함수의 값을 최소화할 수 있는 매개변수의 최적값을 찾는 것을 최적화(Optimization)이라 합니다.
    • 매개변수 공간은 매우 넓고 복잡하기 때문에 최적화는 매우 어렵고, 뉴럴 네트워크에서는 매개변수의 수가 엄청나게 많기 때문에 이 문제는 더욱 심각해집니다.
    • 지금까지 최적의 매개변수 값을 찾는 단서로 매개변수의 기울기를 이용한 Stochastic Gradient Descent(SDG)를 많이 사용했습니다.
    • SGD
      • SGD의 자세한 내용은 다른 글에서 다루었기 때문에 이번 글에서는 생략하고 다른 Optimization이 등장한 배경을 설명하기 위해 SGD의 한계점에 대해서만 쓰도록 하겠습니다.
      • SGD는 단순하고 구현도 쉽지만, 문제에 따라서는 비효율적일 때가 있습니다. 
      • $f(x,y) = \frac{1}{20}x^2 + y^2$ 함수의 그래프는 '밥그릇' 모양으로 x축 방향으로 늘어진 모양을 보인다.
      • 위 함수의 기울기를 그려보면 y축 방향은 가파른 반면 x축 방향은 완만한 모습을 보인다. 또 여기서 주의할 점은 기울기 대부분은 (0,0) 방향을 가리키지 않는다는 점이다. 이때, SGD는 심하게 굽이지고 비효율적인 움직임을 갖습니다. 
      • SGD의 단점은 방향에 따라 기울기가 달라지는 비등방성 (anisotropy) 함수에서는 매우 비효율적이라는 것입니다.

    (좌) $f(x,y) = \frac{1}{20}x^2 + y^2$ 그래프  /  (우) SGD 매개변수 이동

    • Momentum
      • 모맨텀은 '운동량'을 뜻하며 $v := \alpha v$ - $lr \frac{\partial L}{\partial W}$ & $ W $ <- $ W + v $
      • SGD에 v라는 변수가 추가되었는데, 이는 물리에서 말하는 속도에 해당하며 $\alpha$는 모맨텀을 얼마나 줄 것인지 대한 momentum term으로 보통 0.8 정도의 값을 사용하는 하이퍼파라미터이다.
      • 위의 SGD 그래프를 보면 x축은 계속 같은 방향으로 이동하고 y축은 방향이 계속 바뀌는 것을 볼 수 있다. 이때 x축으로는 가속도를 붙이는 역할을 하고 y축은 변화를 줄여주는 역할을 한다.
      • 뿐만 아니라, 이전 스텝에서 이동한 방향으로 관성이 있기 때문에 기울기가 0이되는 local minima를 빠져나오는 효과가 있다.

    Momentum에 의한 최적화 갱신 경로

    • Nesterov Momentum
      • Momentum은 결국 예전 상태들이 만든 방향일 뿐 이라는 것이다. 이러한 문제의식으로 부터 만들어진 것이 Nesterov Accelerated Momentum(NAG) 알고리즘이다.
      • Momentum에서는 현재 위치의 그래디언트를 이용한다면 Nesterov Momentum은 현재 위치에서 속도만큼 전진한 후의 그래디언트를 이용한다. 

    회색 : Momentum  / 빨간색 : Nesterov Momentum

    • AdaGrad
      • 뉴럴 네트워크의 학습에서는 학습률 값이 중요합니다. 이 값이 너무 작으면 학습 시간이 길어지고, 반대로 너무 크면 발산하여 학습이 제대로 이뤄지지 않습니다.
      • 이 학습률을 정하는 효과적인 기술로 Learning rate decay가 있습니다. 이는 학습을 진행하면서 Learning rate를 점차 줄여나가는 방법입니다.
      • Learning rate를 낮추는 가장 간단한 방법은 매개변수 '전체'의 Learning rate를 낮추는 것입니다.
      • 이를 더욱 발전시킨 것이 AdaGrad이며, AdaGrad는 '각각의' 매개변수에 Adaptive 값을 만들어줍니다.
      • $h$ <- $h + \frac{\partial L}{\partial W} \odot \frac{\partial L}{\partial W}$  &  $W$ <- $W - lr\frac{1}{\sqrt{h}}\frac{\partial L}{\partial W}$   //  $\odot$은 원소별 곱셈을 의미합니다.
      • 매개변수를 갱신할 때 $\frac{1}{\sqrt{h}}을 곱해 학습률을 조정하여 매개변수의 원소 중에서 크게 갱신된 원소는 Learning rate가 낮아지게 됩니다.
      • 실제로 무한히 계속 학습한다면 어느 순간 갱신량이 0이 되고 이후, 갱신이 멈추게 됩니다. 이 문제를 개선한 기법이 RMSProp Optimization 입니다. 

    AdaGrad에 의한 최적화 갱신 경로

    • RMSProp
      • RMSProp은 과거의 모든 기울기를 균일하게 더해가는 것이 아니라, 먼 과거의 기울기는 서서히 잊고 새로운 기울기 정보를 크게 반영합니다.
      • 이를 지수이동평균 (Exponential Moving Average, EMA)라고 하여, 과거 기울기의 반영 규모를 기하급수적으로 감소시킵니다.
      • $h_i$ <- $ph_{i-1}$ + $(1-p)\frac{\partial L_i}{\partial W}$ $\odot$ $\frac{\partial L_i}{\partial W}$
      • AdaGrad의 h에 새로운 하이퍼파라미터 p를 추가하여 h가 무한히 커지지 않으면서 p가 작을 수록 가장 최신의 기울기를 더 크게 반영하게 된다.
    • Adam
    • AdamW
    • RAdam

     

    '기초_개념 > Deep Learning' 카테고리의 다른 글

    수치 미분과 기울기  (0) 2021.01.13
    Normalization  (0) 2021.01.12
    정규화  (0) 2021.01.05
    Recurrent Neural Network  (0) 2020.12.31
    Dialog Management  (0) 2020.12.30

    댓글

Designed by Tistory.