ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Gradient Descent & BackPropagation
    기초_개념/Deep Learning 2020. 12. 23. 01:06

    Gradient Descent를 학습하기 전에 2021/01/13 - [기초_개념/Deep Learning] - 수치 미분과 기울기를 먼저 읽는 것을 추천 드립니다.

    Gradient Descent

    • Cost 함수를 최소화하는 파라미터를 찾기 위한 알고리즘으로 파라미터를 찾는 과정을 학습한다고 한다.
    • Cost 함수를 3차원으로 그려보면 몇 개의 봉우리가 있는 그래프가 나오며 Gradient Descent를 통해 경사면을 따라서 하강하게 된다. 이때, 시작점의 위치에 따라 다른 경로로 다른 최저점에 도달하게 된다. 이 최저점을 Local Optimum 혹은 Local Minimum이라 한다. Gradient Descent는 반드시 Local minimum에 도달할 수 있지만 Global Minimum에 도착한다는 보장은 없다.

    $ W := W - \alpha\frac{\partial}{\partial W} cost(W)$

    • Learning Rate는 경사면을 따라 내려올 때 한 걸음의 보폭이라고 생각할 수 있다. 즉 Learning Rate가 작아질 수록 경사면을 내려오는 속도가 줄어든다.
      • Learning Rate가 과하게 클 경우 : X축의 움직임이 지나치게 커져서 최저점으로 수렴하지 못하고 양쪽을 번갈아 움직이다 거꾸로 Cost가 증가할 수 있다. 한 점으로 수렴하는 것을 (Converge)라 하며 반대로 분산되는 것을 (Diverge)라 한다.
      • Learning Rate가 과하게 작을 경우 : 너무 많은 Step이 필요하다 --> 학습이 오래걸린다.
    • 위의 수식에서 알 수 있듯이 미분값이 양수(Positive Value)라면 W는 감소하여 왼쪽으로 이동하며, 음수(Negative Value)라면 W는 증가하고 오른쪽으로 이동한다.
    • Global Optimum을 찾기 위해 굴곡있는 함수가 있다면 활 모양의 함수 ( Convex Function )로 만들어야 한다.
      • 비볼록 함수에서 GD가 잘 동작하도록 하기 위한 방법
        • 다양한 시작점에서 시작해보기 --> 어느 출발점에서 시작하는 것이 좋은지 알 수 없기 때문에
        • Learning Rate 변경해보기
    • Saddle Point Problem
      • GD는 기울기가 0이되면 학습이 진행되지 않으며 기울기가 0이 되는 경우는 (극대, 극소, saddle point) 세 가지 입니다. 만약 saddle point에 빠지게 된다면 더 나은 파라미터가 있음에도 움직일 수 없다.
      • 딥러닝에서는 엄청나게 많은 극소값들이 존재하며 대부분의 극소값에서의 성능이 전체 최소값에서의 성능과 거의 비슷하기 때문에 GD가 큰 문제가 되지 않는다. 
        • 딥러닝 벡터의 모든 차원에서 기울기가 0인 일은 거의 불가능하다. 따라서 꾸준히 움직이면 적어도 한 차원에서는 계속 값이 작아지게 되고 그러다 보면 suddle point를 통과할 수 있다.
      • 인공신경망은 언제나 Lipschitz 가정을 만족하는 함수라고 할 수 있기 때문에 t-1 시점의 변수로 성능을 측정하고 그 성능이 좋아지도록 변경한 t 시점의 변수의 성능이 더 좋다고 볼 수 있다.
        • Lipschitz Assumption : 입력의 아주 작은 변화 = 출력의 아주 작은 변화
        • 이러한 이유로 Deep Learning에서 Local Minima 문제가 발생함에도 불구하고 학습이 잘 이루어진다.
    • SGD ( Stochastic Gradient Descent )
      • 확률적 경사 하강법
      • 한 번에 전체 데이터가 아닌 batch size 개 씩을 계산하고 그 정보를 통해 학습을 진행한다.
      • 데이터를 일부만 보는 이유
        • 계산량이 너무 많다, 훈련 속도가 느리다, 기울기가 이도저도 아닌 방향으로 만들어질 수 있다.
      • 너무 작은 배치 크기는 데이터를 잘 반영하지 못하고 너무 업데이트가 잦아 오히려 학습이 안되고 시간이 오래 걸릴 수 있다.
    • Momentum
      • GD 알고리즘의 단점은 기울기 0인 점을 탈출하지 못한다는 것 외에도 학습이 느리다는 점이다. 이를 해결하기 위해 일반적으로 사용되는 방법이 Momentum을 적용하는 것이다.
      • 파라미터가 이동하던 방향으로 계속 가도록 하여, 현재 기울기가 바른 방향이라면 점점 더 속도가 빨라지게 되어 더 빨리 훈련이 될 수 있고, 틀린 방향이라면 속도를 줄이는 효과를 얻을 수 있다. 또한 현재 기울기가 0인 saddle point에서 Momentum에 의해 더 잘 탈출 할 수 있다.
      • 새로운 속도는 이전 속도와의 지수평균 (Exponential Average)를 통해 계산되며 모멘텀 상수가 있어, 이 값이 클 수록 이전 속도를 더 많이 반영한다.
      • Nesterov Momentum
        • Momentum은 결국 예전 상태들이 만든 방향일 뿐 이라는 것이다. 이러한 문제의식으로 부터 만들어진 것이 Nesterov Accelerated Momentum(NAG) 알고리즘이다.
        • Momentum에서는 현재 위치의 그래디언트를 이용한다면 Nesterov Momentum은 현재 위치에서 속도만큼 전진한 후의 그래디언트를 이용한다. 

    회색 : Momentum  / 빨간색 : Nesterov Momentum

     

    BackPropagation

    • 효과적으로 각 변수의 함수값에 대한 미분값을 구하는 알고리즘으로 뉴럴 네트워크 학습의 기초가 되는 개념이다.
    • 뉴럴 네트워크 학습에서 각 뉴런이 Input을 받아와 wights를 적용한 출력을 다음 레이어에 전달하는 과정을 Forward Propagation이라 한다.
    • BackPropagation은 뉴런의 weights를 조정하여 뉴런의 output이 정답에 가까워지도록 하는 것을 말한다.
    • Neural Network Learning
      • Initialization : 뉴럴 네트워크를 구성하는 모든 뉴런의 weights를 초기화한다 ( Xavier or He initialization )
      • Forward Propagation : 학습 데이터셋을 입력하고 뉴럴 네트워크를 거치며 최종 출력을 계산한다.
      • Error Function : Error(Loss) Function을 정의하고 최종 출력과 정답을 사이의 차이를 얻는다.
      • BackPropagation : Error Function을 최소화로 만드는 것을 목표로 뉴런의 가중치를 변경하는 것
      • Weight Updates : Backpropagation 알고리즘의 결과에 따른 최적값으로 가중치를 변경
      • Iterate until convergence : Error Function의 극소점을 찾을 때까지 위의 과정을 반복한다.
    • Backpropagation이 필요한 이유
      • 뉴런 네트워크는 복잡한(고차원)의 데이터를 입력으로 할 경우가 많으며 여러 개의 레이어(수많은 뉴런)으로 구성되어 있다. 따라서 효율적인 Optimization Function이 필요하다.
      • 이러한 상황에서 backpropagation은 최적의 가중치 값을 매우 효율적으로 찾을 수 있으면서 간단한 알고리즘으로 Gradient Descent 기술을 사용한다.
    • Chain Rule
      • 여러 개의 합성된 함수에서 변수에 대한 미분을 구하는 방법
      • 미분값을 구하는 것을 축력에 대한 입력의 미분값을 구하고 계속 더하거나 곱해주는 과정으로 간략화된다.
      • z는 Loss Function에 의한 결과값을 나타낸다.

    • Error Propagation
      • 일반적으로 Forward 과정에서는 Activation Function에 의한 신호 (Signal)이 이동하고 Backpropagation 에서는 오차 (Error)가 이동한다고 한다.
      • 이때, 오차란 구하고자 하는 정답에 대한 입력의 미분값을 의미한다. 

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

    정규화  (0) 2021.01.05
    Recurrent Neural Network  (0) 2020.12.31
    Dialog Management  (0) 2020.12.30
    Neural Network Bias  (0) 2020.12.26
    Activation Function  (0) 2020.12.23

    댓글

Designed by Tistory.