손실 함수, Gradient Descent, Back Propagation
수치 미분
한 점에서의 기울기. 변화량을 의미한다.
경사 하강법을 사용하기 위해서는 미분값이 필요하다.
$$
{df(x)\over dx} = \lim_{h \to 0} {f(x+h) - f(x)\over h}
$$
수치 미분이 경사 하강법에 사용되는 방법
경사 하강법에서는 $f(x)$
가 손실 함수이고, x가 현재의 가중치나 편향이 된다.
손실 함수는 대상 값과 예측 값의 오차를 의미하므로,
- 손실 함수에 대한 미분 값을 구한 후,
- 오차를 줄이는 방향으로 가중치와 편향을 수정할 수 있다.
쉽게 납득이 가능한 과정을 굳이 숫자까지 붙여가며 나눈 이유가 있다.
이 과정에서는 치명적인 문제가 존재한다.
위의 미분 값 공식을 자세히 살펴보자.
경사 하강법에서는 $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번의 망 계산만 필요하다.