ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 수치 미분과 기울기
    기초_개념/Deep Learning 2021. 1. 13. 23:03

    수치 미분

    • Gradient Descent는 기울기(경사) 값을 기준으로 나아갈 방향을 정한다는 것은 많이 들어보셨을 것이라 생각됩니다. 이번 글에서는 이 기울기를 구하기 위한 '미분'에 대해 알아보도록 하겠습니다.
    • 우리가 알고 있는 미분은 단순하게 '기울기'라고 생각할 수 있지만, 구체적으로 말하면 어느 한순간의 변화량을 표시한 것입니다.
    • 수식으로는 $\frac{df(x)}{dx} = \displaystyle \lim_{h\rightarrow0} \frac{f(x+h)-f(x)}{h}$로 표현되며 $x$의 '아주 작은 변화'가 $f(x)$를 얼마나 변화시키느냐를 의미합니다. 이를 수치 미분 이라고 합니다.
    • $h$를 무한히 0으로 좁히는 것은 한계가 있기 때문에 수치 미분에는 오차가 포함됩니다. 이 오차를 줄이기 위해 $(x+h)$와 $(x-h)$일 때의 함수 $f$의 차분을 계산하는 방법을 쓰기도 하는데 이를 중심 차분 or 중앙 차분이라고 부릅니다.
    • 함수 $f(x) = x^2$가 있을 때 $x=2$에서 우리가 알고 있는 $f(x)$의 미분값 $f'(2) = 4$이지만 수치 미분으로 구한 미분값은 오차가 포함되어 4.00000000000435과 같이 굉장히 가까운 값이 나옵니다.
    • 수치 미분으로 구한 미분값과 우리가 알고 있는 미분 계산에 의한 값을 기울기로 그려보면 거의 접선에 가깝다는 것을 알 수 있습니다.

     

    편미분

    • 인수들의 제곱 합을 계산하는 $f(x_0, x_1) = x_0^2 + x_1^2$ 함수는 앞의 수치 미분에서 다루었던 함수와 달리 변수가 2개입니다.

    $f(x_0, x_1) = x_0^2 + x_1^2$ 그래프

    • 이제 위의 함수를 미분하고자 할 때 어느 변수에 대한 미분이냐를 구별해야 합니다. 이와 같이 변수가 여럿인 함수에 대한 미분을 편미분 이라고 하고 미분 변수에 따라 $\frac{\partial f}{\partial x_0}$ 혹은 $\frac{\partial f}{\partial x_1}$으로 표현됩니다.
    • 실습을 통해 편미분 값을 확인해봅시다.

    $x_0 = 3$, $x_1 = 4$일 때, $x_0$에 대한 편미분 $\frac{\partial f}{\partial x_0}$을 구하라
    $x_0 = 3$, $x_1 = 4$일 때, $x_1$에 대한 편미분 $\frac{\partial f}{\partial x_1}$을 구하라

    • 위의 결과를 보면 수치 미분을 통해 구한 미분값과 우리가 평소 구하는 미분(해석적 미분)값이 거의 같다는 것을 알 수 있습니다.
    • 이처럼 편미분은 변수가 하나의 미분과 마찬가지로 특정 장소의 기울기를 구합니다. 단, 목표 변수 하나에 초점을 맞추고 다른 변수는 고정한다는 것에 차이가 있습니다.

     

    기울기

    • $(\frac{\partial f}{\partial x_0}, \frac{\partial f}{\partial x_1})$을 계산하면 됩니다.
    • 이때, $(\frac{\partial f}{\partial x_0}, \frac{\partial f}{\partial x_1})$ 처럼 모든 변수의 편미분을 벡터로 정리한 것을 기울기(Gradient)라고 합니다.
    • 이를 코드로 구현하면 아래와 같습니다.

    • 그리고 $(x_0,x_1)$의 각 점에서의 Gradient 결과에 마이너스를 붙인 벡터를 그리면 다음 그림과 같이 최소값을 가리키는 화살표로 그려집니다. 또, 최소값에서 멀어질수록 화살표의 크기 (벡터의 크기)가 커지는 것을 알 수 있습니다.

    기울기는 각 지점에서 값이 낮아지는 방향을 가리키며, 이는 기울기가 가리키는 쪽은 각 장소에서 함수의 출력을 가장 크게 줄이는 방향을 의미합니다.


    경사법

    • 기계학습과 딥러닝 학습은 손실함수가 최소가 되는 매개변수를 찾아내는 것을 의미합니다. 하지만 일반적으로 손실 함수는 매우 복잡하고, 매개변수 공간 또한 너무 광대하여 어디가 최소값인지 알 수 없습니다. 이런 상황에서 기울기를 이용하여 손실 함수를 최소로 만드는 매개변수를 찾으려는 것이 경사법입니다.
    • 여기서 문제는 기울기가 가리키는 방향이 정말로 나아갈 방향인지는 보장할 수 없으며, 실제로 복잡한 함수에서는 기울기가 가리키는 방향에 최솟값이 없는 경우가 대부분입니다. 하지만 그 방향으로 가야 함수의 값을 줄일 수 있습니다.
    • 경사법은 현 위치에서 기울어진 방향으로 일정 거리만큼 이동하고, 다음 이동한 곳에서도 마찬가지로 기울기를 구하고, 구한 기울기 방향으로 나아가기를 반복하는 방법을 말합니다.
    • 경사법을 수식으로 나타내면 $x_0 = x_0 - \eta \frac{\partial f}{\partial x_0}$ , $x_1 = x_1 - \eta \frac{\partial f}{\partial x_1}$ 입니다. 이때 $\eta$는 Learning Rate를 의미하며, 매개변수를 얼마나 갱신할 것인지를 나타냅니다.

    뉴럴 네트워크에서의 기울기

    • 뉴럴 네트워크에서도 기울기를 단서로 나아갈 방향을 정하기 때문에 기울기를 구해야 합니다.
    • 여기서 말하는 기울기는 가중치 매개변수에 대한 손실 함수의 기울기 $\frac{\partial L}{\partial W}$를 말합니다.
    • 매개변수 $W = \bigl(\begin{smallmatrix}w_{11} & w_{12} & w_{13} \\ w_{21} & w_{22} & w_{23} \end{smallmatrix}\bigr)$일 때, 뉴럴 네트워크의 기울기 $\frac{\partial L}{\partial W} = \bigl(\begin{smallmatrix}\frac{\partial L}{\partial w_{11}} & \frac{\partial L}{\partial w_{12}}  & \frac{\partial L}{\partial w_{13}}  \\ \frac{\partial L}{\partial w_{21}}  & \frac{\partial L}{\partial w_{22}}  & \frac{\partial L}{\partial w_{23}}  \end{smallmatrix}\bigr)$ 가 됩니다.
    • 이 때, $\frac{\partial L}{\partial w_{12}}$은 $w_{11}$을 조금 변경했을 때 손실 함수 $L$이 얼마나 변화하는지를 의미합니다.
    • 예를 들어 $\frac{\partial L}{\partial W} = \bigl(\begin{smallmatrix}0.2 & 0.1 & -0.4 \\ 0.3 & 0.2 & -0.5 \end{smallmatrix}\bigr)$일 때 각 행렬의 의미는 다음과 같다.
      • $w_{11}$를 $h$ 만큼 증가시키면 손실 함수의 값은 $0.2h$ 만큼 증가한다.
      • $w_{23}$를 $h$만큼 증가시키면 손실 함수의 값은 $0.5h$ 만큼 감소한다.
      • $w_{23}$이 $w_{11}$보다 갱신에 더 많은 기여를 한다.

     

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

    Convolution  (0) 2021.01.18
    Normalization  (0) 2021.01.12
    Optimization  (0) 2021.01.11
    정규화  (0) 2021.01.05
    Recurrent Neural Network  (0) 2020.12.31

    댓글

Designed by Tistory.