
Neural Network의 계산 두 단계
- Foward Propagation: Input에서 Ouput(Cost Function J)까지의 값을 계산
- Backward Propagation: Output에서 Input 방향으로 Derivative(Gradient)를 계산
우리는 지금 아래의 식을 계산하고 싶습니다.
$$J = 3(a + bc)$$

이러한 Computation Graph를 이용하면 왜 순방향에서 역방향으로 계산을 나눠서 하는 것이 좋은지 이해하기에 훨씬 직관적이고 쉬워져요.
위 그래프처럼 함수를 세 단계로 분해합니다.
Step 1
$$ u = b * c $$
Step 2
$$ v = a + u $$
Step 3
$$ J = 3 * v $$
예를 들어 a = 5, b = 3, c = 2 라 했을 때 아래처럼 계산이 가능하겠죠.
b ──┐
├── [u = bc] ──┐
c ──┘ ├── [v = a+u] ──── [J = 3v] ──── J=33
│
a ─────────────────┘
Foward pass(순방향)은 왼쪽에서 오른쪽으로 진행하며 $J$의 값을 계산합니다.
Backward pass(역방향)은 오른쪽에서 왼쪽으로 진행하며 derivative를 계산합니다. 이것이 gradient를 구하는 가장 효율적인 방법이에요.
핵심은 세 가지로 정리해볼 수 있습니다.
- Computation graph는 최적화하고 싶은 특별한 출력 변수(여기서는 $J$)가 있을 때 유용합니다.
- Logistic regression에서 $J$는 최소화하려는 cost function입니다.
- 위 그래프를 염두해둡시다.
- Foward: 왼쪽에서 오른쪽으로(값 계산)
- Backward: 오른쪽에서 왼쪽으로(Derivative 계산)
Derivatives with a Computation Graph
Code에서의 변수명
Backpropagation 구현 시, 최종 출력 변수(보통 $J$ 에요)에 대한 각 변수의 derivative를 구합니다. 코드에서는 이를 간단히 dvar로 표현합니다.
dv = dJ/dv (코드에서 "dv"라고 쓰면, 실제 의미는 dJ/dv)
da = dJ/da
du = dJ/du
db = dJ/db
dc = dJ/dc
Step-by-Step Backward Computation
Step 1: $dJ/dv$ 구하기
$J = 3v$ 이므로, v를 11에서 11.001로 밀면 $J$는 33에서 33.003이 된다.
Step 2: $dJ/da$ 구하기
$a = 5$를 5.001로 밀면 → $v = 11.001$ → $J = 33.003$
이것을 chain rule로 분해하면
$$dJ/da = (dJ/dv) * (dv/da) = 3 * 1 = 3$$
$a$가 변하면 $v$가 변하고
$v$가 변하면 $J$가 변한다.
각 단계의 기울기를 곱한 것이 전체 기울기가 됩니다. 이것이 Chain Rule이죠.
우리는 이것을 이용해서 최종적으로 우리가 구하려고 하는 $dJ/dw$를 구할 겁니다.
Step 3: $dJ/du$ 구하기
$u = 6$을 6.001로 밀면 $v = 11.001, J = 33.003$
$$dJ/du = (dJ/dv) * (dv/du) = 3 * 1 = 3$$
Step 4: $dJ/db$ 구하기
$$dJ/db = (dJ/du) * (du/db)$$
$u= bc$ 이므로 $b = 3$을 3.001로 밀면 $u = 3.001 * 2 = 6.002$($c =2$이므로 $u$가 2배로 증가)
$$du/db = c = 2$$
$$dJ/db = 3 * 2 = 6$$
$$b=3.001 → u=6.002 → v=11.002 → J=33.006. 변화량 = 0.006/0.001 = 6 $$
로 검증할 수 있다.
Step 5: $dJ/dc$ 구하기
$$dJ/dc = (dJ/du) * (du/dc) = 3 * b = 3 * 3 = 9$$
앞서 언급했던 Chain Rule의 핵심 원리를 명확히 짚고 넘어가보죠.
만약 a가 v에 영향을 주고, v가 J에 영향을 준다면
$$dJ/da = (dJ/dv) * (dv/da)$$
$$J가 a에 의해 변하는 정도 = J가 v에 의해 변하는 정도 * v가 a에 의해 변하는 정도$$
Backpropagation이 효율적인 이유
오른쪽에서 왼쪽으로 계산하면, 이미 계산한 derivative를 재활용할 수 있습니다.
- 먼저 $dv$($=dJ/dv = 3$)를 구하면
- $da, du$를 구할 때 $dv$를 재활용ㅎ아고
- $du$를 구한 뒤에는 $db, dc$를 구할 때 $du$를 재활용한다.

'CS & AI > Deep Learning' 카테고리의 다른 글
| [Coursera] Activation Functions / Deep Learning Specialization (0) | 2026.04.13 |
|---|---|
| [Coursera] Gradient Descent in Logistic Regression / Deep Learning Specialization (0) | 2026.04.10 |
| [궁금증] Norm? (0) | 2026.04.07 |
| [궁금증] Variance & Bias (0) | 2026.04.05 |
| [Coursera] Gradient Descent / Deep Learning Specialization (0) | 2026.03.26 |
나의 성장 드라마
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!