3장. 미분 가능성, 연쇄법칙, 야코비안

다변수 미적분 · 1부. 다변수 미분

기본 · 약 15분 · 연습문제 5

요약

선형근사와 미분 가능성, 야코비 행렬, 다변수 연쇄법칙(행렬곱으로서), 계산 그래프와 역전파

한 변수에서 미분 가능하다는 것은 “충분히 확대하면 그래프가 직선처럼 보인다”는 뜻이었습니다. 여러 변수에서는 “충분히 확대하면 함수가 선형변환(행렬)처럼 보인다”는 뜻이 됩니다. 이 장의 주인공은 그 행렬, 곧 야코비 행렬이고, 이 관점에서 연쇄법칙은 “행렬을 곱한다”는 한 줄이 됩니다. 신경망을 학습시키는 역전파 알고리즘이 바로 이 연쇄법칙입니다.

3.1 선형근사와 미분 가능성

미적분학 6장의 선형근사 f(a+h)≈f(a)+f′(a)hf(a + h) \approx f(a) + f'(a)h를 여러 변수로 넓히면

f(a+h)≈f(a)+∇f(a)⋅hf(\mathbf{a} + \mathbf{h}) \approx f(\mathbf{a}) + \nabla f(\mathbf{a})\cdot\mathbf{h}

입니다. 기울기 f′(a)f'(a) 자리에 그래디언트가 오고, 곱셈 자리에 내적이 옵니다. 2변수 함수에서 우변은 접평면입니다.

정의 3.1 (미분 가능). lim⁡h→0f(a+h)−f(a)−∇f(a)⋅h∥h∥=0\displaystyle\lim_{\mathbf{h}\to\mathbf{0}}\frac{f(\mathbf{a} + \mathbf{h}) - f(\mathbf{a}) - \nabla f(\mathbf{a})\cdot\mathbf{h}}{\|\mathbf{h}\|} = 0이면 ff는 a\mathbf{a}에서 미분 가능(differentiable)합니다.

오차가 ∥h∥\|\mathbf{h}\|보다 빨리 0으로 간다는 뜻입니다. 편미분이 모두 있어도 미분 가능하지 않을 수 있습니다(1장 예제 1.6의 함수는 원점에서 편미분이 둘 다 0이지만 연속도 아닙니다). 다행히 다음 정리가 있습니다.

정리 3.2. 편미분들이 a\mathbf{a} 근처에서 연속이면 ff는 a\mathbf{a}에서 미분 가능합니다.

식으로 만든 함수는 대부분 이 조건을 만족하므로, 실제로는 편미분을 구해 쓰면 됩니다.

예제 3.3. f(x,y)=x2+y2f(x, y) = \sqrt{x^2 + y^2}로 3.022+3.972\sqrt{3.02^2 + 3.97^2}을 어림합니다. a=(3,4)\mathbf{a} = (3, 4)이면 f=5f = 5, ∇f=(x,y)/f=(0.6,0.8)\nabla f = (x, y)/f = (0.6, 0.8). h=(0.02,−0.03)\mathbf{h} = (0.02, -0.03)이므로 f≈5+0.012−0.024=4.988f \approx 5 + 0.012 - 0.024 = 4.988입니다. (실제 4.98806…4.98806\ldots)

3.2 야코비 행렬

값이 벡터인 함수 f:Rn→Rm\mathbf{f} : \mathbb{R}^n \to \mathbb{R}^m은 성분마다 선형근사를 합니다. 그 그래디언트들을 행으로 쌓은 것이 야코비 행렬입니다.

정의 3.4 (야코비 행렬). f=(f1,…,fm)\mathbf{f} = (f_1, \dots, f_m)의 야코비 행렬(Jacobian matrix)은 m×nm \times n 행렬

J=∂f∂x=[∂f1∂x1⋯∂f1∂xn⋮⋮∂fm∂x1⋯∂fm∂xn]J = \frac{\partial\mathbf{f}}{\partial\mathbf{x}} = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_n} \\ \vdots & & \vdots \\ \frac{\partial f_m}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_n} \end{bmatrix}

이고, f(a+h)≈f(a)+Jh\mathbf{f}(\mathbf{a} + \mathbf{h}) \approx \mathbf{f}(\mathbf{a}) + J\mathbf{h}입니다.

ii행은 fif_i의 그래디언트, jj열은 “xjx_j를 조금 바꾸면 출력 전체가 어떻게 바뀌는가”입니다. 선형변환 f(x)=Ax\mathbf{f}(\mathbf{x}) = A\mathbf{x}의 야코비 행렬은 AA 자신입니다.

예제 3.5 (극좌표). f(r,θ)=(rcos⁡θ,rsin⁡θ)\mathbf{f}(r, \theta) = (r\cos\theta, r\sin\theta)이면

J=[cos⁡θ−rsin⁡θsin⁡θrcos⁡θ],det⁡J=r.J = \begin{bmatrix} \cos\theta & -r\sin\theta \\ \sin\theta & r\cos\theta \end{bmatrix}, \qquad \det J = r.

행렬식 rr은 8장에서 극좌표 적분의 dx dy=r dr dθdx\,dy = r\,dr\,d\theta로 나옵니다(선형대수 6장의 넓이 배율).

3.3 연쇄법칙

정리 3.6 (연쇄법칙). g:Rn→Rm\mathbf{g} : \mathbb{R}^n \to \mathbb{R}^m, f:Rm→Rp\mathbf{f} : \mathbb{R}^m \to \mathbb{R}^p가 미분 가능하면

Jf∘g(x)=Jf(g(x)) Jg(x).J_{\mathbf{f}\circ\mathbf{g}}(\mathbf{x}) = J_{\mathbf{f}}(\mathbf{g}(\mathbf{x}))\,J_{\mathbf{g}}(\mathbf{x}).

합성의 야코비 행렬은 야코비 행렬의 곱입니다. 선형대수 5장에서 “선형변환의 합성 = 행렬곱”이었던 것이, 미분하면(가까이서 보면) 모든 함수에 대해 성립하는 것입니다.

자주 쓰는 특별한 경우 두 가지:

(1) 곡선을 따라. z=f(x,y)z = f(x, y), x=x(t)x = x(t), y=y(t)y = y(t)이면

dzdt=∂f∂xdxdt+∂f∂ydydt=∇f⋅r′(t).\frac{dz}{dt} = \frac{\partial f}{\partial x}\frac{dx}{dt} + \frac{\partial f}{\partial y}\frac{dy}{dt} = \nabla f\cdot\mathbf{r}'(t).

(2) 변수 둘에서 둘로. z=f(x,y)z = f(x, y), x=x(s,t)x = x(s, t), y=y(s,t)y = y(s, t)이면 ∂z∂s=∂f∂x∂x∂s+∂f∂y∂y∂s\dfrac{\partial z}{\partial s} = \dfrac{\partial f}{\partial x}\dfrac{\partial x}{\partial s} + \dfrac{\partial f}{\partial y}\dfrac{\partial y}{\partial s}.

“모든 길을 따라 미분을 곱하고, 길들을 더한다”고 기억합니다.

예제 3.7. z=x2yz = x^2y, x=cos⁡tx = \cos t, y=sin⁡ty = \sin t이면 dzdt=2xy(−sin⁡t)+x2cos⁡t\frac{dz}{dt} = 2xy(-\sin t) + x^2\cos t. t=0t = 0에서 x=1x = 1, y=0y = 0이므로 dzdt=0+1=1\frac{dz}{dt} = 0 + 1 = 1입니다.

3.4 계산 그래프와 역전파

복잡한 함수는 간단한 연산을 이어 붙인 계산 그래프로 볼 수 있습니다. 연쇄법칙을 출력 쪽에서 입력 쪽으로 거꾸로 적용하면 모든 입력에 대한 편미분을 한 번의 역방향 계산으로 얻습니다. 이것이 역전파(backpropagation)입니다.

예제 3.8. L=(wx+b−y)2L = (wx + b - y)^2에서 w=2w = 2, x=3x = 3, b=1b = 1, y=5y = 5일 때 ∂L/∂w\partial L/\partial w, ∂L/∂b\partial L/\partial b를 구합니다. 중간값을 u=wxu = wx, v=u+bv = u + b, e=v−ye = v - y, L=e2L = e^2으로 둡니다.

단계 앞으로(값) 뒤로(미분)
u=wxu = wx 66 ∂L∂w=∂L∂u⋅x=4⋅3=12\frac{\partial L}{\partial w} = \frac{\partial L}{\partial u}\cdot x = 4\cdot3 = 12
v=u+bv = u + b 77 ∂L∂u=∂L∂v⋅1=4\frac{\partial L}{\partial u} = \frac{\partial L}{\partial v}\cdot1 = 4, ∂L∂b=4\frac{\partial L}{\partial b} = 4
e=v−ye = v - y 22 ∂L∂v=∂L∂e⋅1=4\frac{\partial L}{\partial v} = \frac{\partial L}{\partial e}\cdot1 = 4
L=e2L = e^2 44 ∂L∂e=2e=4\frac{\partial L}{\partial e} = 2e = 4

앞으로 값을 계산하고(표의 위에서 아래), 뒤로 미분을 계산합니다(아래에서 위). 각 단계는 자기 연산의 국소적인 미분만 알면 됩니다. 파라미터가 수십억 개인 신경망도 출력 하나(손실)의 그래디언트를 앞 계산과 비슷한 비용으로 구할 수 있는 이유입니다.

3.5 이 장의 요약

  • 미분 가능 = 선형근사 f(a)+∇f⋅hf(\mathbf{a}) + \nabla f\cdot\mathbf{h}의 오차가 ∥h∥\|\mathbf{h}\|보다 작음.
  • 야코비 행렬 = 가까이서 본 선형변환. 행은 성분의 그래디언트.
  • 연쇄법칙 = 야코비 행렬의 곱. 거꾸로 적용하면 역전파.

쓰이는 곳. 신경망 학습의 역전파와 PyTorch·JAX의 자동 미분이 이 장의 연쇄법칙입니다. 야코비 행렬은 정규화 흐름(normalizing flow)의 log⁡∣det⁡J∣\log|\det J|, 로봇 팔의 속도 관계, 비선형 연립방정식을 푸는 뉴턴 방법에 쓰입니다. 물리에서는 좌표 변환(직교좌표 ↔ 극·구면좌표)에 야코비안이 나옵니다.

문제

3.1 [계산] · 확인 문제

f(x,y)=(x2y, x+y3)\mathbf{f}(x, y) = (x^2y,\ x + y^3)의 점 (1,2)(1, 2)에서의 야코비 행렬 [abcd]\begin{bmatrix} a & b \\ c & d \end{bmatrix}의 성분을 씁니다.

성분 값
a=∂f1/∂xa = \partial f_1/\partial x [?]
b=∂f1/∂yb = \partial f_1/\partial y [?]
c=∂f2/∂xc = \partial f_2/\partial x [?]
d=∂f2/∂yd = \partial f_2/\partial y [?]
정답
4
1
1
12
풀이

∂f1/∂x=2xy=4\partial f_1/\partial x = 2xy = 4, ∂f1/∂y=x2=1\partial f_1/\partial y = x^2 = 1, ∂f2/∂x=1\partial f_2/\partial x = 1, ∂f2/∂y=3y2=12\partial f_2/\partial y = 3y^2 = 12.

3.2 [계산] · 확인 문제

z=exsin⁡yz = e^{x}\sin y, x=t2x = t^2, y=πty = \pi t일 때 t=1t = 1에서 dz/dtdz/dt는? (소수 넷째 자리까지)

정답
-8.5397
풀이

dzdt=exsin⁡y⋅2t+excos⁡y⋅π\frac{dz}{dt} = e^x\sin y\cdot2t + e^x\cos y\cdot\pi. t=1t = 1이면 x=1x = 1, y=πy = \pi이므로 e⋅0⋅2+e⋅(−1)⋅π=−eπ≈−8.5397e\cdot0\cdot2 + e\cdot(-1)\cdot\pi = -e\pi \approx -8.5397입니다.

3.3 [계산] · 확인 문제

예제 3.8과 같은 L=(wx+b−y)2L = (wx + b - y)^2에서 w=1w = 1, x=2x = 2, b=0b = 0, y=5y = 5일 때 값을 씁니다.

값 답
LL [?]
∂L/∂w\partial L/\partial w [?]
∂L/∂b\partial L/\partial b [?]
정답
9
-12
-6
풀이

e=2+0−5=−3e = 2 + 0 - 5 = -3이므로 L=9L = 9. ∂L∂e=2e=−6\frac{\partial L}{\partial e} = 2e = -6이고, ∂L∂b=−6\frac{\partial L}{\partial b} = -6, ∂L∂w=−6⋅x=−12\frac{\partial L}{\partial w} = -6\cdot x = -12입니다.

3.4 [계산]

선형근사로 (2.01)2(0.98)3(2.01)^2(0.98)^3을 어림한 값은? (f(x,y)=x2y3f(x, y) = x^2y^3, a=(2,1)\mathbf{a} = (2, 1))

정답
3.8
풀이

f=4f = 4, fx=2xy3=4f_x = 2xy^3 = 4, fy=3x2y2=12f_y = 3x^2y^2 = 12. h=(0.01,−0.02)\mathbf{h} = (0.01, -0.02)이므로 4+0.04−0.24=3.804 + 0.04 - 0.24 = 3.80입니다.

3.5 [증명]

f(x,y)f(x, y)가 미분 가능하고 x=rcos⁡θx = r\cos\theta, y=rsin⁡θy = r\sin\theta일 때 (∂f∂r)2+1r2(∂f∂θ)2=fx2+fy2\left(\frac{\partial f}{\partial r}\right)^2 + \frac{1}{r^2}\left(\frac{\partial f}{\partial\theta}\right)^2 = f_x^2 + f_y^2임을 보입니다.

풀이

연쇄법칙으로 fr=fxcos⁡θ+fysin⁡θf_r = f_x\cos\theta + f_y\sin\theta, fθ=−fxrsin⁡θ+fyrcos⁡θf_\theta = -f_xr\sin\theta + f_yr\cos\theta입니다. 그러면 fr2+1r2fθ2=(fxcos⁡θ+fysin⁡θ)2+(−fxsin⁡θ+fycos⁡θ)2=fx2(cos⁡2θ+sin⁡2θ)+fy2(sin⁡2θ+cos⁡2θ)+0=fx2+fy2f_r^2 + \frac{1}{r^2}f_\theta^2 = (f_x\cos\theta + f_y\sin\theta)^2 + (-f_x\sin\theta + f_y\cos\theta)^2 = f_x^2(\cos^2\theta + \sin^2\theta) + f_y^2(\sin^2\theta + \cos^2\theta) + 0 = f_x^2 + f_y^2입니다(교차항은 2fxfycos⁡θsin⁡θ−2fxfysin⁡θcos⁡θ=02f_xf_y\cos\theta\sin\theta - 2f_xf_y\sin\theta\cos\theta = 0).