다음과 같이 통상적인 계산인 순전파 계산 그래프(그림 5-1)와 미분을 계산하는 역전파 계산 그래프(그림 5-4)를 위아래로 나련히 놓고 살펴봅시다.
이렇게 비교하니 순전파와 역전파의 관계가 명확히 보입니다. 예를 들어 순전파 시의 변수 a는 역전파 시의 미분 dy/da에 대응합니다, 마찬가지로 b와 dy/db가 대응하고 x 와 dy/dx가 대응합니다. 또한 함수에도 대응 관계가 보입니다. 함수 B는 역전파의 B'(a)에 대응하고 A는 A'(x)에 대응하는 식 입니다. 이렇게 변수는 '통상값'과 '미분값'이 존재하고, 함수는 '통상 계산(순전파)'과 '미분값을 구하기 위한 계산(역전파)'이 존재하는 것으로 생각할 수 있습니다. 이를 통해 역전파를 어떻게 구현할지 짐작해볼 수 있을 것 입니다.
마지막으로 [그림 5-5]의 함수 노드 C'(b)를 계산하려면 b값이 필요하다는 사실입니다. 마찬가지로 B'(a)를 구하려면 입력 a의 값이 필요합니다. 무슨 말인고 하니, 역전파 시에는 순전파 시 이용한 데이터가 필요하다는 것입니다. 따라서 역전파를 구현하려면 먼저 순전파를 하고, 이때 각 함수가 입력 변수(앞의 예에서는 x, a, b)의 값을 기억해두지 않으면 안 됩니다. 그런 다음에야 각 함수의 역전파를 계산할 수 있습니다.
이상이 역전파의 이론 설명입니다. 다소 복잡한가요? 좋은 소식을 알려드리겠습니다. 다행히 역전파는 이 책에서 가장 어려운 내용에 속한답니다. 그리고 아직 잘 이해되지 않는 부분도 실제로 코드를 실행해보면 이해될 것입니다. 다음 단계에서는 역전파를 구현하고 실제로 돌려보며 검증하겠습니다.
댓글 없음:
댓글 쓰기