Backpropagation


이번 강의에서는 computational graph 를 이용하여, analytic gradient를 어떻게 계산하는지에 대해 이야기합니다.

computational graph 를 이용하여, 어떤 함수든지 표현할 수 있고, 각 노드는 연산의 단계를 표현합니다.

computational graph를 사용해서 함수를 표현하게 되면서, backpropagation 이라는 개념을 도입하게 됩니다.

backpropagation은 gradient를 얻기 위해 computational graph 내부의 모든 변수에 대해 chain rule을 반복적으로 사용하는 것입니다.

backpropagation 에 대한 간단한 예시를 먼저 보겠습니다.

함수 $f(x,y,z) = (x+y)z$ 가 있을 때, 우리가 원하는 것은 f의 출력에 대한 어떤 변수들의 gradient 입니다.

먼저, 오른쪽 박스의 그림과 같이 computational graph 를 만듭니다. 초기의 x,y,z 는 각각 -2, 5, -4 로 주어졌습니다.

x+y 는 q 라고 할 것이고, 그럼 f 는 qz 가 될 것입니다.

그리고 빨간 박스안에 q의 각각 x,y 에 대한 미분을 계산하였고, 파란 박스안에는 f의 각각 q,z 에 대한 미분을 계산하였습니다.

그럼 이제, chain rule을 이용하여, backpropagation을 진행합니다. f 에 대한 f 의 미분부터 계산하여 순서대로 진행하게 되면, 결국에는 원하는 gradient(빨간색 숫자)들을 얻을 수 있습니다.

——> forward pass 이 과정에서 local gradient 구하고, 메모리에 저장합니다.

<—— backward pass(backpropagation) Chain rule 이용해서 원하는 값을 구한다. df/dq = global gradient, dq/dx = local gradient