본문 바로가기
C.W.K.
Stream
Lesson 04 of 05 · published

연쇄법칙: 합성함수의 변화를 잇기

~10 min · chain-rule, composition, backprop

Level 0수학 초심자
0 XP0/59 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete

한 변화가 다음 변화를 통과할 때

함수 의 출력이 함수 의 입력으로 들어가 를 만든다고 해보자. x가 조금 변하면 먼저 g가 변하고, 그 변화가 다시 f를 움직여. 두 민감도를 이어 주는 규칙이 연쇄법칙이야.

바깥 함수의 도함수는 안쪽 함수의 현재 출력 에서 평가하고, 안쪽 함수의 도함수와 곱해. 덧셈이 아니라 곱셈이라는 점, 그리고 평가 위치를 빼먹지 않는 것이 핵심이야.

벡터 함수에서는 야코비안이 이어진다

신경망의 중간값은 대부분 벡터와 텐서라서 스칼라 도함수 하나가 아니라 야코비안이 등장해. 합성의 야코비안은 행렬곱으로 이어지고, 실제 역전파는 거대한 야코비안 전체를 만들기보다 위에서 흘러온 벡터와 국소 야코비안의 곱을 계산해.

순전파에서 중간값과 계산 의존성을 기록하고 역방향으로 벡터-야코비안 곱을 재사용하면, 출력 스칼라 손실을 모든 매개변수에 대해 효율적으로 미분할 수 있어. 역전파는 연쇄법칙에 계산그래프 순회와 중간 결과 재사용을 결합한 알고리즘이야.

세 가지 스칼라 예시

마지막 식은 를 대입해 단순화한 결과야. 이렇게 국소 도함수를 조립한 뒤 대수적으로 줄일 수 있어.

연쇄법칙은 합성의 국소 민감도를 곱으로 이어. 깊은 망에서는 반복된 야코비안이 어떤 방향의 기울기를 줄이거나 키울 수 있지만, 실제 흐름은 단순한 스칼라 100개의 곱보다 구조와 방향에 더 크게 좌우돼.

Code

autograd로 연쇄법칙 확인하기·python
import torch

x = torch.tensor(2.0, requires_grad=True)

# y = sin(x^2) — 합성
y = torch.sin(x ** 2)
y.backward()

# Chain rule: dy/dx = cos(x^2) * 2x = cos(4) * 4 ≈ -2.614
print(x.grad.item())     # -2.614...

External links

Exercise

f(x)=(3x+1)^5의 도함수를 연쇄법칙으로 직접 구하고 x=1에서 autograd 결과와 비교해.
Hint
바깥 함수 u^5의 도함수는 5u^4, 안쪽 함수 3x+1의 도함수는 3이야. 따라서 15(3x+1)^4, x=1에서는 3840이 돼.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.