05.3 역전파
앞 절에서는 계산 그래프의 역전파가 연쇄법칙에 따라 진행되는 모습을 설명했습니다. 이번 절에서는 ‘+’와 ‘$\times$’ 등의 연산을 예로 들어 역전파의 구조를 설명합니다.
5.3.1 덧셈 노드의 역전파
먼저 덧셈 노드의 역전파입니다. 여기에서는 $z = x + y$라는 식을 대상으로 그 역전파를 살펴보겠습니다. 우선 $z = x + y$의 미분은 다음과 같이 해석적으로 계산할 수 있습니다.
\[\begin{aligned} \frac{\partial z}{\partial x} &= 1 \\ \frac{\partial z}{\partial y} &= 1 \end{aligned} \hfill \text{[식 5.5]}\][식 5.5]에서와 같이 $\frac{\partial z}{\partial x}$와 $\frac{\partial z}{\partial y}$는 모두 1이 됩니다. 이를 계산 그래프로는 [그림 5-9]처럼 그릴 수 있습니다.
그림 5-9 덧셈 노드의 역전파 : 왼쪽이 순전파, 오른쪽이 역전파다. 덧셈 노드의 역전파는 입력 값을 그대로 흘려보낸다.

[그림 5-9]와 같이 역전파 때는 상류에서 전해진 미분(이 예에서는 $\frac{\partial L}{\partial z}$)에 1을 곱하여 하류로 흘립니다. 즉, 덧셈 노드의 역전파는 1을 곱하기만 할 뿐이므로 입력된 값을 그대로 다음 노드로 보내게 됩니다.
이 예에서는 상류에서 전해진 미분 값을 $\frac{\partial L}{\partial z}$이라 했는데, 이는 [그림 5-10]과 같이 최종적으로 $L$이라는 값을 출력하는 큰 계산 그래프를 가정하기 때문입니다. $z = x + y$ 계산은 그 큰 계산 그래프의 중간 어딘가에 존재하고, 상류로부터 $\frac{\partial L}{\partial z}$ 값이 전해진 것입니다. 그리고 다시 하류로는 $\frac{\partial L}{\partial x}$과 $\frac{\partial L}{\partial y}$ 값을 전달하는 것이죠.
그림 5-10 최종 출력으로 가는 계산의 중간에 덧셈 노드가 존재한다. 역전파에서는 국소적 미분이 가장 오른쪽의 출력에서 시작하여 노드를 타고 역방향(왼쪽)으로 전파된다.

이제 구체적인 예를 하나 살펴봅시다. 가령 ‘10 + 5 = 15’라는 계산이 있고, 상류에서 1.3이라는 값이 흘러옵니다. 이를 계산 그래프로 그리면 [그림 5-11]처럼 됩니다.
그림 5-11 덧셈 노드 역전파의 구체적인 예

덧셈 노드 역전파는 입력 신호를 다음 노드로 출력할 뿐이므로 [그림 5-11]처럼 1.3을 그대로 다음 노드로 전달합니다.
도로시가 ‘+’ 표시가 적힌 커다란 덧셈 게이트에 입력 신호를 집어넣고 역방향으로 흐르는 기울기가 온전히 유지되어 나오는 모습을 관찰하고 있어요.
도로시의 덧셈 통과 관찰
- 도로시: “와! 덧셈 게이트는 정말이지 오는 신호에 대해 아무런 참견도 하지 않고 그대로 슥 통과시키는 무저항 통로 같아! 상류의 미분 $\frac{\partial L}{\partial z}$가 하류인 $x$와 $y$ 쪽으로 아무런 감쇄 없이 똑같이 복사되어 전해지는구나!”
- 지니: “정확해, 도로시! 덧셈의 편미분값 $\frac{\partial z}{\partial x}$와 $\frac{\partial z}{\partial y}$가 둘 다 1이기 때문에, 상류의 미분 신호에 1을 곱해 그대로 전달하는 단순한 복제기가 된단다.”
5.3.2 곱셈 노드의 역전파
이어서 곱셈 노드의 역전파를 설명하겠습니다. $z = xy$라는 식을 생각해보죠. 이 식의 미분은 다음과 같습니다.
\[\begin{aligned} \frac{\partial z}{\partial x} &= y \\ \frac{\partial z}{\partial y} &= x \end{aligned} \hfill \text{[식 5.6]}\][식 5.6]에서 계산 그래프는 다음과 같이 그릴 수 있습니다.
그림 5-12 곱셈 노드의 역전파 : 왼쪽이 순전파, 오른쪽이 역전파다.

곱셈 노드 역전파는 상류의 값에 순전파 때의 입력 신호들을 ‘서로 바꾼 값’을 곱해서 하류로 보냅니다. 서로 바꾼 값이란 [그림 5-12]처럼 순전파 때 $x$였다면 역전파에서는 $y$, 순전파 때 $y$였다면 역전파에서는 $x$로 바꾼다는 의미입니다.
그럼 구체적인 예를 하나 봅시다. 가령 ‘$10 \times 5 = 50$’이라는 계산이 있고, 역전파 때 상류에서 1.3 값이 흘러온다고 합시다. 이를 계산 그래프로 그리면 [그림 5-13]처럼 됩니다.
그림 5-13 곱셈 노드의 역전파의 구체적인 예

곱셈의 역전파에서는 입력 신호를 바꾼 값을 곱하여 하나는 $1.3 \times 5 = 6.5$, 다른 하나는 $1.3 \times 10 = 13$이 됩니다.
지니가 ‘x’ 곱셈 게이트에서 순방향 시 두 갈래 입력 신호가 꼬여서 교차 교환되는 규칙을 시범해 보이고 있고, 도로시가 깜짝 놀라며 지켜보고 있어요.
지니의 곱셈 게이트 신호 교차 비결
- 지니: “도로시, 곱셈 게이트에서는 신호가 거꾸로 흐를 때 순방향의 입력값을 ‘교차’해서 곱해줘. $x$의 하류에는 $y$를 곱해주고, $y$의 하류에는 $x$를 곱해주지!”
- 도로시: “아! 서로의 순방향 입력 세기만큼 상대방 갈림길의 기울기를 증폭시켜 주는구나! 그래서 $x=2, y=3$일 때 역전파가 흐르면 $x$ 쪽에는 $y=3$이 곱해지고, $y$ 쪽에는 $x=2$가 곱해져서 메아리가 울리는 거네!”
- 토토: “왈왈! (꼬인 화살표를 가리키며) 교차 반사다 멍!” 덧셈의 역전파에서는 상류의 값을 그대로 흘려보내서 순방향 입력 신호의 값은 필요하지 않았습니다만, 곱셈의 역전파는 순방향 입력 신호의 값이 필요합니다. 그래서 곱셈 노드를 구현할 때는 순전파의 입력 신호를 유지합니다.
지니의 역전파 메아리 (덧셈과 곱셈 노드)
- 지니: “도로시, 덧셈 노드(+)와 곱셈 노드(x)의 역전파 규칙은 아주 간단해! 덧셈은 상류에서 온 기울기 신호를 그대로 하류에 통과시켜주고(기울기에 1을 곱하니까), 곱셈은 순방향으로 들어왔던 두 입력의 위치를 ‘서로 맞바꾼 값’을 상류 기울기에 곱해서 하류로 던져준단다!”
- 도로시: “아! 덧셈은 갈림길에서 온 신호를 있는 그대로 똑같이 나누어 흘려보내고, 곱셈은 상대방 노드의 입력 크기만큼 가중해서 기울기를 전달하는 거구나! 그래서 곱셈 노드는 순방향 때 입력받았던 값($x, y$)을 기억(메모리에 보관)하고 있어야 역전파 연산을 할 수 있겠네!”
- 토토: “왈왈! (신호를 전달하며) 덧셈은 그대로 토스! 곱셈은 크로스 곱하기다 멍!”
도로시가 앞으로 쏜 신호(순전파)의 메아리(역전파)가 돌아오자, 지니가 덧셈 문은 신호를 그대로 통과시키고 곱셈 문은 교차로 값을 곱해 하류로 반사하는 마법을 부리고 있고, 토토가 신나서 짖고 있어요.
5.3.3 사과 쇼핑의 예
이번 장을 시작할 때 본 사과 쇼핑 예를 다시 살펴보겠습니다. 이 문제에서는 사과의 가격, 사과의 개수, 소비세라는 세 변수 각각이 최종 금액에 어떻게 영향을 주느냐를 풀고자 합니다. 이는 ‘사과 가격에 대한 지불 금액의 미분’, ‘사과 개수에 대한 지불 금액의 미분’, ‘소비세에 대한 지불 금액의 미분’을 구하는 것에 해당하죠. 이를 계산 그래프의 역전파를 사용해서 풀면 [그림 5-14]처럼 됩니다.
그림 5-14 사과 쇼핑의 역전파 예

지금까지 설명한 바와 같이 곱셈 노드의 역전파에서는 입력 신호를 서로 바꿔서 하류로 흘립니다. [그림 5-14]의 결과를 보면 사과 가격의 미분은 2.2, 사과 개수의 미분은 110, 소비세의 미분은 200입니다. 이는 소비세와 사과 가격이 같은 양만큼 오르면 최종 금액에는 소비세가 200의 크기로, 사과 가격이 2.2 크기로 영향을 준다고 해석할 수 있습니다. 단, 이 예에서 소비세와 사과 가격은 단위가 다르니 주의해야 합니다(소비세 1은 100%, 사과 가격 1은 1원).
정리할 겸, 마지막으로 ‘사과와 귤 쇼핑’의 역전파를 풀어볼까요? [그림 5-15]의 빈 상자에 적당한 숫자를 넣어 각 변수의 미분을 구해보세요(답은 몇 페이지 앞에 있습니다).
그림 5-15 사과와 귤 쇼핑의 역전파 예 : 빈 상자 안에 적절한 숫자를 넣어 역전파를 완성하시오.
