IQ Lab
← all posts
AI 2026.04.28 · 13 min read Advanced

미분가능성의 계층 — 편미분에서 역전파까지

편미분이 존재해도 전미분이 없을 수 있다는 사실부터, 야코비안-헤시안-연쇄법칙이 하나의 선형근사 철학으로 통일되는 구조까지, 딥러닝 최적화의 수학적 뼈대를 추적한다.


PyTorch의 loss.backward()는 단 한 줄이다. 그 한 줄이 수십 개의 레이어를 타고 올라가며 수백만 개의 편미분을 계산한다. 그런데 “편미분의 모음”인 gradient만으로는 충분하지 않다. 편미분이 모두 존재해도 전미분이 존재하지 않는 함수가 있다. 역전파가 올바르게 작동하려면 왜 전미분이 필요한가?

편미분과 전미분의 간극

편미분 f/xi\partial f / \partial x_i는 하나의 축 방향으로만 본 단면 경사다. gradient f=(f/x1,,f/xn)\nabla f = (\partial f/\partial x_1, \ldots, \partial f/\partial x_n)는 그 편미분들의 나열이다. 문제는 여기서 시작된다.

f(x,y)={x2yx2+y2(x,y)(0,0)0(x,y)=(0,0)f(x, y) = \begin{cases} \dfrac{x^2 y}{x^2 + y^2} & (x,y) \neq (0,0) \\ 0 & (x,y) = (0,0) \end{cases}

이 함수는 (0,0)(0,0)에서 두 편미분이 모두 0으로 존재한다. f(0,0)=(0,0)\nabla f(0,0) = (0,0)이다. 그러나 방향 v=(cosθ,sinθ)v = (\cos\theta, \sin\theta)로 방향도함수를 계산하면:

Dvf(0,0)=cos2θsinθD_v f(0,0) = \cos^2\theta \sin\theta

이것은 fv=0\nabla f \cdot v = 0과 다르다. 편미분이 모두 존재해도 Dvf=fvD_v f = \nabla f \cdot v는 성립하지 않는다. 전미분이 존재할 때만 이 등식이 보장된다.

정리 1 · 전미분과 방향도함수의 관계

f:RnRf: \mathbb{R}^n \to \mathbb{R}이 점 aa에서 전미분가능이면, 모든 단위벡터 vv에 대해:

Dvf(a)=f(a)vD_v f(a) = \nabla f(a) \cdot v

▷ 증명

전미분가능이란 선형사상 LL이 존재하여 f(a+h)=f(a)+L(h)+o(h)f(a+h) = f(a) + L(h) + o(\|h\|)가 성립함을 의미한다. h=tvh = tv로 놓으면 Dvf(a)=limt0(f(a+tv)f(a))/t=L(v)D_v f(a) = \lim_{t \to 0}(f(a+tv)-f(a))/t = L(v). v=eiv = e_i로 놓으면 L(ei)=f/xi(a)L(e_i) = \partial f/\partial x_i(a)이고 선형사상의 표현에 의해 L(v)=f(a)vL(v) = \nabla f(a) \cdot v. \square

역으로, C1C^1 조건(편미분이 연속)이면 전미분이 보장된다. 대부분의 딥러닝 연산이 C1C^1인 이유가 바로 여기에 있다.

야코비안 — 선형근사의 행렬 표현

단변수에서 f(a+h)f(a)+f(a)hf(a+h) \approx f(a) + f'(a) h라면, 다변수 f:RnRmf: \mathbb{R}^n \to \mathbb{R}^m에서는:

f(a+h)=f(a)+Jf(a)h+o(h),Jf(a)Rm×nf(a+h) = f(a) + J_f(a)\, h + o(\|h\|), \quad J_f(a) \in \mathbb{R}^{m \times n}

야코비안 JfJ_f는 전미분의 행렬 표현이다. 원소는 [Jf]ij=fi/xj[J_f]_{ij} = \partial f_i / \partial x_j. 특수 경우로 m=1m=1이면 Jf=(f)J_f = (\nabla f)^\top, n=mn = m이면 정방 행렬이 되어 detJf\det J_f가 국소 부피 변환율을 의미한다.

역전파에서 핵심 연산은 야코비안 전체가 아니라 **VJP(Vector-Jacobian Product)**다. 상위 gradient δ=L/f(x)\delta = \partial L / \partial f(x)가 주어질 때:

Lx=Jf(x)δ\frac{\partial L}{\partial x} = J_f(x)^\top \delta

m×nm \times n 행렬을 명시적으로 만들지 않고 nn-차원 벡터 하나만 계산한다. 스칼라 손실의 역전파 비용이 O(n)O(n)에 머무는 이유다.

gradient는 왜 최대 증가 방향인가

Dvf=fvD_v f = \nabla f \cdot v 위에서, 코시-슈바르츠를 적용하면:

Dvf(a)=f(a)vf(a)v=f(a)D_v f(a) = \nabla f(a) \cdot v \leq \|\nabla f(a)\| \cdot \|v\| = \|\nabla f(a)\|

등호는 v=f(a)/f(a)v = \nabla f(a) / \|\nabla f(a)\|일 때 성립한다. 반대 방향 v=f/fv = -\nabla f / \|\nabla f\|에서는 방향도함수가 f-\|\nabla f\|로 최솟값이다. 이것이 경사하강법의 수학적 정당성이다.

xk+1=xkηf(xk)x_{k+1} = x_k - \eta \nabla f(x_k)

이 업데이트는 무한소 스텝에서 가장 빠르게 감소하는 방향을 따른다. 유한한 η\eta에서는 L-smooth 조건이 추가로 필요하다.

헤시안과 2차 곡률

테일러 전개를 2차항까지 쓰면:

f(a+h)=f(a)+f(a)h+12hHf(a)h+o(h2)f(a+h) = f(a) + \nabla f(a)^\top h + \frac{1}{2} h^\top H_f(a) h + o(\|h\|^2)

헤시안 HfRn×nH_f \in \mathbb{R}^{n \times n}[Hf]ij=2f/xixj[H_f]_{ij} = \partial^2 f / \partial x_i \partial x_j. fC2f \in C^2이면 슈바르츠 정리에 의해 대칭행렬이므로 스펙트럼 분해가 가능하다. 고유벡터 방향 qiq_i의 곡률은 대응 고유값 λi\lambda_i다.

헤시안 부호의미최적화
모든 λi>0\lambda_i > 0 (PD)국소 최솟값볼록, 안정 수렴
혼합 부호 (Indefinite)안장점GD 탈출 필요
모든 λi<0\lambda_i < 0 (ND)국소 최댓값GD 접근 불가

딥러닝에서 헤시안의 최대 고유값 λmax\lambda_{\max}가 작은 “flat minimum”이 일반화 성능이 좋다는 주장(Hochreiter & Schmidhuber 1997)은 이 곡률 해석에서 나온다. 뉴턴 방법 xxH1fx \leftarrow x - H^{-1}\nabla f는 헤시안으로 곡률을 보정하여 2차 수렴을 달성하지만, O(n3)O(n^3) 역행렬 비용 때문에 대규모 모델에는 L-BFGS 같은 근사가 필요하다.

연쇄법칙 — 역전파의 수학적 실체

g:RnRkg: \mathbb{R}^n \to \mathbb{R}^kf:RkRmf: \mathbb{R}^k \to \mathbb{R}^m이 전미분가능이면:

Jfg(a)=Jf(g(a))Jg(a)Rm×nJ_{f \circ g}(a) = J_f(g(a)) \cdot J_g(a) \in \mathbb{R}^{m \times n}

왜 행렬 곱인가? 선형근사의 합성이기 때문이다. g(a+h)g(a)+Jghg(a+h) \approx g(a) + J_g h이고 f(g(a+h))f(g(a))+Jf(Jgh)=f(g(a))+(JfJg)hf(g(a+h)) \approx f(g(a)) + J_f \cdot (J_g h) = f(g(a)) + (J_f \cdot J_g) h. 합성의 선형근사 = 선형근사의 합성 = 행렬 곱.

NN층 네트워크 L=fNf1(x)L = f_N \circ \cdots \circ f_1(x)에서 역전파는 이 곱을 오른쪽부터 누적한다:

δ(n)=Jfn(x(n1))δ(n+1)\delta^{(n)} = J_{f_n}(x^{(n-1)})^\top \cdot \delta^{(n+1)}

각 단계에서 야코비안 전체를 만들지 않고 VJP만 계산한다. 전체 역전파 비용이 O(Nmn)O(N \cdot mn)에 머무는 이유다.

트레이드오프: 순전파 저장 vs 재계산

역전파는 순전파 시 모든 중간 활성화값을 저장해야 VJP를 계산할 수 있다. 레이어가 깊을수록 메모리 비용이 선형으로 증가한다. Gradient Checkpointing은 일부 중간값만 저장하고 필요 시 재계산하여 메모리를 줄이는 대신 연산을 추가한다. 전형적인 메모리-연산 트레이드오프다.

음함수 정리는 이 연쇄법칙의 자연스러운 확장이다. Deep Equilibrium Model에서 고정점 방정식 z=fθ(z)z^* = f_\theta(z^*)F(z,θ)=zfθ(z)=0F(z, \theta) = z - f_\theta(z) = 0으로 쓰면, 음함수 정리에 의해:

zθ=[Fz]1Fθ=(IJf)1fθ\frac{\partial z^*}{\partial \theta} = -\left[\frac{\partial F}{\partial z}\right]^{-1} \frac{\partial F}{\partial \theta} = \left(I - J_f\right)^{-1} \frac{\partial f}{\partial \theta}

무한 깊이 네트워크를 실제로 펼치지 않고도 gradient를 얻는다.

정리

  • 편미분 존재 ⇏\not\Rightarrow 전미분 존재 ⇏\not\Rightarrow 연속. 역전파가 올바르게 동작하려면 각 층의 연산이 전미분가능해야 한다.
  • 야코비안은 전미분의 행렬 표현이다. 역전파의 핵심 연산은 야코비안 전체가 아니라 VJP다.
  • gradient가 최대 감소 방향인 이유는 코시-슈바르츠에서 나온다. 이것은 무한소 스텝에 대한 주장이며, 유한 학습률에서는 L-smooth 조건이 필요하다.
  • 헤시안의 고유값은 방향별 곡률이다. Flat minima, 뉴턴 방법, Adam의 적응적 스케일링 — 모두 헤시안 정보를 다른 방식으로 활용한다.
  • 역전파는 다변수 연쇄법칙의 VJP 누적이다. 음함수 정리로 미분가능성을 끝까지 확장하면 DEQ처럼 암묵적으로 정의된 함수도 gradient를 가진다.

다음 글에서는 이 미분가능성 위에 볼록성과 L-smooth 조건을 얹어, 경사하강법의 수렴 속도 O(1/k)O(1/k)가 어디서 나오는지 추적한다.