수치 미분의 결과에는 오차가 포함되어 있습니다. 대부분의 경우 오차는 매우 작지만 어떤 계산이냐에 따라 커질 수도 있습니다.
수치미분의 결과에 오차가 포함되기 쉬운 이유는 주로 '자릿수 누락' 때문입니다. 중앙차분 등 '차이'를 구하는 계산은 주로 크기가 비슷한 값들을 다루므로 계산 결과에서 자릿수 누락이 생겨 유효 자릿수가 줄어들 수 있습니다. 예를 들어 유효 자릿수가 4일 때 1.234 - 1.2333 이라는 계산(비슷한 값끼리의 뺄셈)을 생각해보죠. 계산 결과는 0.001 되어 유효 자릿수가 1로 줄어듭니다. 원래는 1.234.... - 1.233... = 0.001434..같은 결과였을지도 모르는데, 자릿수 누락 때문에 0.001이 됐다고 볼 수 있습니다. 이와 같은 원리 때문에 수치 미분을 이용하면 자릿수 누락이 발생하여 오차가 포함되기 쉽습니다.
수치 미분의 더 심각한 문제는 계산량이 많다는 점입니다.변수가 여러 개인 계산을 미분할 경우 변수 각각을 미분해야 하기 때문입니다. 신경망에서는 매개변수를 수백만개 시상 사용하는 것일도 아니므로 이 모두를 수치 미분으로 구하는 것은 현실적이지 않습니다. 그래서 등장한 것이 바로 역전파입니다. 다음 단계에서 드디어 역전파를 소개합니다.
덧붙여서, 수치 미분은 구현하기 쉽고 거의 정확한 값을 얻을 수 있습니다. 이에 비해 역전파는 복잡한 알고리즘이라서 구현하면서 버그가 섞여 들어ㅓ가기 쉽습니다. 그래서 역전파를 정확하게 구현했는지 확인하기 휘애 수치 미분의 별과를 이용하곤합니다. 이를 기울기 확인(gradient checking)이라고 하는데, 단순히 수치 미분 결과와 역전파의 결과를 비교하는 것입니다. 기술기 확인은 10단계에서 구현합니다.
댓글 없음:
댓글 쓰기