손실 함수, Gradient Descent, Back Propagation

수치 미분

한 점에서의 기울기. 변화량을 의미한다.

경사 하강법을 사용하기 위해서는 미분값이 필요하다.

$$ {df(x)\over dx} = \lim_{h \to 0} {f(x+h) - f(x)\over h} $$


수치 미분이 경사 하강법에 사용되는 방법

경사 하강법에서는 $f(x)$가 손실 함수이고, x가 현재의 가중치나 편향이 된다.

손실 함수는 대상 값과 예측 값의 오차를 의미하므로,

  1. 손실 함수에 대한 미분 값을 구한 후,
  2. 오차를 줄이는 방향으로 가중치와 편향을 수정할 수 있다.

쉽게 납득이 가능한 과정을 굳이 숫자까지 붙여가며 나눈 이유가 있다.

이 과정에서는 치명적인 문제가 존재한다.


위의 미분 값 공식을 자세히 살펴보자.

경사 하강법에서는 $f(x)$가 손실 함수를 의미하는데, 손실 함수는 예측 값과 목표 값의 오류를 의미한다.

또한 x는 현재의 가중치나 bias를 의미한다.

즉, $f(x)$를 계산하기 위해서는 신경망이 예측을 한 번 수행하고, 목표 값과의 차이를 계산해야 한다.

여기까지만 하더라도 계산이 상당히 크다는 것을 짐작할 수 있으나, 미분 값을 구하기 위해서는

$f(x), f(x + h)$를 구해야 하므로, 두 지점에서 신경망의 예측이 필요하다.

요약하면, 단 하나의 가중치를 계산하는 데 신경망이 두 번이나 동작한다.

하나의 epoch에 가중치 하나, bias 하나가 있다고 생각하면, 학습을 위한 망 계산은 총 4번이 된다.

아무리 단순한 모델을 구성하더라도, 연산량이 너무 많다.

ex) layer 3층, 은닉층 노드 10개, epoch 1000인 경우

가중치 뭉치 3개, 편차 3개 존재

(4 * 3) * 1000 = 12,000번의 신경망 예측.

수치 미분은 속도가 너무 느리다.

이를 보완하기 위해 오류 역전파 알고리즘이 등장했다.

오류 역전파 알고리즘은 위와 같은 상황에서 신경망이 단 두 번만 동작하여 한 번의 가중치 학습을 완료한다.

즉, 위의 예시에서 오류 역전파를 사용하면 총 2000번의 망 계산만 필요하다.