DeZero의 어디에 문제가 있는 걸까요? 원인을 파악하기 위해 [그림 15-3]과 같은 비교적 간단한 계산 그래프를 생각해보겠습니다. 이 계산 그래프도 현재의 DeZero로는 제대로 미분하지 못합니다.
[그림 15-3]에서 주목할 부분은 계산 중간에 등장하는 변수 a 입니다. 이전 단계에서 설명한 것처럼 같은 변수를 반복해서 사용하면 역전파 때는 출력 쪽에서 전파되는 미분값을 더해야 합니다. 따라서 a의 미분(수식으로는 dy/da)을 계산하려면 a의 출력 쪽에서 전파하는 2개의 미분값이 필요합니다. 그 2개의 미분값이 전해진 '후'에야 a에서 x로 미분값을 전파할 수 있습니다. 이점을 감안한 역전파의 흐름은 [그림 15-4]와 같습니다.
[그림 15-4]는 변수 y로 부터 x로 미분값이 전파되는 흐름을 보여줍니다. 다시 한번 이야기하자면, 여기서 주목할 것은 변수 a에 2개의 미분값이 모두 전파된 '후'에야 a 에서 x로 미분값을 전파한다는 점입니다. 함수의 관점에서 보면 역전파가 D, B, C, A의 순서로 진행되는 것이죠. 단, B와 C의 순서는 상관없으므로 D,C,B,A도 올바른 순서입니다. 받느시 지켜야 할 규칙은 함수 B와 C의 역전파를 모두 끝내고 나서 함수 A를 역전파한다는 것입니다.
댓글 없음:
댓글 쓰기