[기본기 0-3] 딥러닝을 위한 미분과 연쇄법칙

난이도: 기초

태그: 미분,연쇄법칙,역전파,딥러닝기초

딥러닝 학습의 목표는 loss를 최소화하는 파라미터를 찾는 것입니다. 이를 위해 가중치를 조금 바꿨을 때 loss가 얼마나 변하는지 계산해야 합니다.

역전파를 "오차가 뒤로 흐른다"라고만 외우면 금방 헷갈린다. 더 정확한 이해는 "합성함수의 미분을 효율적으로 계산하는 절차"다.

신경망은 여러 층이 연속으로 이어진 구조라서, 앞쪽 파라미터 하나가 최종 loss에 어떤 영향을 주는지 직접 계산하면 매우 비효율적이다. 역전파는 이 영향을 출력층에서 입력층 방향으로 차례대로 풀어가며, 모든 파라미터의 gradient를 한 번에 계산한다.

그래서 역전파를 이해할 때는 "미분"과 "연쇄법칙"을 따로 배우는 것이 아니라, 여러 함수가 이어진 계산 그래프에서 미분이 어떻게 전달되는지 보는 것이 중요하다. 이 감각이 잡히면 autodiff도 훨씬 자연스럽게 이해된다.

L/w

이 값은 "가중치 w를 바꾸면 loss L이 얼마나 변하는가"를 의미합니다.

업데이트는 보통 아래처럼 진행됩니다.

w=wηL/w

시각 자료로 먼저 보기

신경망에서 역전파가 흐르는 개념도
오차가 출력층에서 입력 방향으로 거꾸로 흘러가며 가중치 기울기를 계산하는 backpropagation의 큰 그림이다.
원본 / 라이선스 · Jorge Guerra Pires · CC BY-SA 3.0
연쇄법칙 도식
역전파의 핵심은 연쇄법칙이라는 점을 직접 보여주는 그림이다. 함수 합성의 미분이 곱으로 이어진다는 감각을 잡기 좋다.
원본 / 라이선스 · Qniemiec · CC0
MLP 학습 루프 흐름도
forward pass, loss 계산, backward pass, parameter update까지의 반복 구조를 한 장으로 요약한 학습 루프 그림이다.
원본 / 라이선스 · Alexis0Olson · CC BY-SA 4.0

직관 비유

이 비유를 실제 모델에 연결하면, forward pass는 현재 위치의 높이를 재는 과정이고, backward pass는 어느 방향으로 얼마나 움직여야 더 낮은 지점으로 갈 수 있는지 계산하는 과정이다. learning rate는 그 방향으로 한 번에 얼마나 이동할지 정하는 보폭이다.

1) 편미분 (Partial Derivative)

딥러닝 함수는 여러 변수에 의존합니다.

L(w,b)=(wx+by)2

따라서 각 변수에 대한 변화율을 따로 계산합니다.

\partial L/\partial w, \partial L/\partial b

편미분은 복잡한 문제를 "한 변수씩 잘라서 보는 법"이다. 역전파는 이런 편미분들을 각 레이어마다 계산한 뒤 연쇄법칙으로 연결해 전체 gradient를 만든다. 즉 편미분은 재료이고, 역전파는 그 재료를 효율적으로 조립하는 방법이라고 볼 수 있다.

주의: 편미분에서는 다른 변수들을 고정하고 미분합니다.

2) 기울기 (Gradient)

gradient는 편미분을 모은 벡터입니다.

L=[L/w1,L/w2,...,L/wn]

gradient는 loss가 가장 빨리 증가하는 방향이며, 학습에서는 반대 방향으로 이동합니다.

w=wηL

3) 연쇄법칙 (Chain Rule)

신경망은 함수가 연쇄된 구조입니다.

y=f(g(x))

전체 변화율은 다음과 같습니다.

dy/dx=(dy/dg)(dg/dx)

중간 함수를 지날 때마다 미분이 곱으로 누적됩니다.

4) 연쇄법칙 계산 예시

y=(3x+1)2

g(x)=3x+1, f(g)=g^2

dy/dx=(dy/dg)(dg/dx)

dy/dg = 2g, dg/dx = 3

따라서 dy/dx = 2(3x+1)\cdot3

5) 역전파 (Backpropagation)

역전파는 연쇄법칙을 효율적으로 계산하는 알고리즘입니다.

x -> layer1 -> layer2 -> layer3 -> loss

gradient는 뒤에서 앞으로 전달됩니다.

loss -> layer3 -> layer2 -> layer1

예를 들어 L=f(h(g(x)))이면

dL/dx=(dL/dh)(dh/dg)(dg/dx)

마지막 레이어 미분값이 먼저 있어야 앞 레이어 미분을 계산할 수 있으므로 backward 순서가 필수입니다.

코드-수식 연결

수식PyTorch 코드설명
\partial L/\partial ww.grad파라미터 gradient
d/dx f(g(x))autograd연쇄법칙 자동 계산
\nabla Lloss.backward()역전파 실행
w = w - \eta\nabla Loptimizer.step()파라미터 업데이트

자주 하는 오해 5개

체크리스트