모두의 AI
머신러닝플레이그라운드
로딩 중…

배우기

Ch.09

야코비안 행렬: 여러 입력이 움직일 때 출력은?

챕터별 수학 도식화

챕터를 선택하면 아래 도식이 해당 챕터 내용으로 바뀌어요. 중급 수학 흐름을 한눈에 보세요.

야코비안: 여러 입력이 움직일 때 출력은?

Ch.08 그라디언트는 결과 1개일 때, Ch.09 야코비안 JJJ는 결과 여러 개일 때 씁니다. 애니메이션: 왼쪽 입력 → 오른쪽 출력. 먼저 휘어짐(fff), 이어 직선 근사(JJJ).

1. 입력 격자2. f: 휘어짐3. 작은 ▱4. J: 직선 근사
입력 / Input출력 / OutputfJ→ 멀리: 격자가 휘어짐 (비선형 f)

빨간 격자=좌표, 초록 화살표=변환, 주황 ▱=fff의 작은 영역, 보라 ▱=JJJ의 근사. ▱ 모양이 비슷하면 f≈JΔxf\approx J\Delta\mathbf{x}f≈JΔx.

복잡한 공장에서 거대한 기계를 조종한다고 상상해 보세요. 다이얼(입력)이 여러 개 있고, 기계의 상태를 보여주는 계기판(출력)도 여러 개가 있습니다. 1번 다이얼과 2번 다이얼을 동시에 아주 살짝 돌렸을 때, 3번 계기판과 4번 계기판의 바늘은 각각 얼마나 움직일까요?
이전 장에서 배운 그라디언트(Gradient)가 결과값(오차)이 오직 1개일 때 가장 가파른 오르막길을 알려주는 '단일 나침반'이었다면, 이번 장에서 만날 야코비안 행렬(Jacobian Matrix, JJJ)은 결과값이 여러 개일 때 모든 입력과 모든 출력 사이의 미세한 상호작용을 하나의 거대한 표로 완벽하게 정리해 둔 '궁극의 민감도 종합 상황판'입니다.
우리가 다루는 세상이나 딥러닝 모델은 멀리서 보면 꼬불꼬불하고 예측하기 힘든 비선형 곡면(f\mathbf{f}f)입니다. 하지만 아무리 복잡한 곡면이라도 돋보기로 아주 크게 확대해서 특정 지점 근처만 살펴보면, 마치 반듯한 직선이나 평면처럼 보입니다. 야코비안 행렬은 이 찰나의 순간을 반듯한 평행사변형 격자로 흉내 내어(국소 선형 근사), 거대하고 복잡한 신경망이 오차를 추적하고 스스로를 튜닝할 수 있게 만드는 기적의 수학적 도구입니다.

야코비안 행렬: 여러 입력이 움직일 때 출력은?

① 그라디언트 vs 야코비안 — 답이 1개일 때와 여러 개일 때
Ch.08 그라디언트는 답이 하나일 때 씁니다. 예: "공부 시간을 10분 늘리면 시험 점수가 몇 점 오를까?" 야코비안은 답이 여러 개일 때 씁니다. 예: 로봇 팔에서 어깨·팔꿈치를 조금 움직이면, 손의 X 위치와 Y 위치가 각각 얼마나 변하는지 한 표에 모아 둔 것입니다. Ch.08 = 나침반 하나, Ch.09 = 다이얼 여러 개와 계기판 여러 개를 연결한 큰 표.
② 표 한 칸 JijJ_{ij}Jij​ 읽는 법 — "다이얼 j → 바늘 i"
JijJ_{ij}Jij​는 어렵게 보여도 이렇게만 읽으면 됩니다. "jjj번째 입력(다이얼)을 살짝 돌리면, iii번째 출력(바늘)이 얼마나 움직이나?" 표의 행 = 출력 번호, 열 = 입력 번호입니다. 2×2 예: 첫 번째 행은 "첫 번째 결과가 x, y 입력에 각각 얼마나 반응하는가"를 담습니다.
③ Δy≈JΔx\Delta\mathbf{y}\approx J\Delta\mathbf{x}Δy≈JΔx — "조금 움직이면 대략 이만큼"
입력을 아주 조금 움직이면(Δx\Delta\mathbf{x}Δx), 출력도 아주 조금 변합니다(Δy\Delta\mathbf{y}Δy). 이때 출력 변화 ≈ 야코비안 × 입력 변화로 대략 맞출 수 있습니다. 멀리서 보면 휘어진 길(비선형)도, 한 점 근처에서는 짧은 직선처럼 보인다는 뜻과 같습니다. 위쪽 그림의 곡선 vs 아래쪽 직선 격자가 바로 이 차이입니다.
④ 역전파 — 오차를 거꾸로 전달할 때 표를 곱한다
신경망은 층이 여러 겹입니다. 마지막에 "틀렸다"는 신호가 나오면, 앞 층으로 거꾸로 전달해야 어디를 고칠지 알 수 있습니다. 각 층마다 작은 야코비안 표가 있고, 이 표들을 곱해 가며 연결합니다(Jtotal=JL⋯J1J_{\text{total}}=J_L\cdots J_1Jtotal​=JL​⋯J1​). LEGO를 거꾸로 이어 붙이듯 표 × 표 × 표라고만 기억해도 충분합니다.
⑤ det⁡J\det JdetJ — 넓이가 몇 배로 늘었나 · 로봇 팔 경고등
작은 정사각형 그림이 변환 후 평행사변형으로 찌그러지면, 넓이가 몇 배가 됐는지 알려 주는 숫자가 det⁡J\det JdetJ입니다(Ch.05 행렬식). ∣det⁡J∣=6|\det J|=6∣detJ∣=6이면 넓이 6배. 로봇 팔이 완전히 펴지면 det⁡J=0\det J=0detJ=0 — 어떤 방향으로는 1mm도 못 움직이는 마비(특이점) 상태라는 경고등입니다.
1. 벡터값 함수: 여러 개의 입력 스틱과 여러 개의 출력 스크린
지금까지 우리가 다룬 함수는 다이얼을 여러 개 돌려도 결과(오차)가 딱 하나만 나오는 기계였습니다(스칼라 함수). 하지만 카메라 화면의 픽셀 위치 좌표나, 딥러닝 중간 층의 수백 개 뉴런 값들처럼 결과물 자체가 여러 개의 묶음(벡터)으로 튀어나오는 경우가 훨씬 많습니다. 이렇게 nnn개의 입력이 들어가서 mmm개의 출력이 한꺼번에 쏟아져 나오는 기계를 벡터값 함수라고 부릅니다. 입력 스틱 하나를 툭 건드리면 수십 개의 출력 스크린이 동시에 출렁이게 됩니다.
2. 국소 선형화: 돋보기로 보면 둥근 지구도 평평하다
위 비주얼의 상단 그림처럼, 실제 세상의 변화는 격자가 휘어지고 구부러지는 아주 복잡한 곡선(비선형)입니다. 하지만 우리가 어떤 특정 지점 근처를 현미경으로 수만 배 줌인(Zoom-in)해서 본다면 어떨까요? 곡선은 마치 아주 짧고 반듯한 직선처럼 보이고, 둥근 곡면은 평평한 평면처럼 다룰 수 있게 됩니다. 이처럼 아주 찰나의 좁은 영역(국소 영역)에서만큼은 복잡한 변화를 반듯한 일차방정식(선형)처럼 취급하겠다는 아이디어가 미적분학의 핵심이며, 야코비안 행렬은 바로 그 반듯하게 펴진 평면의 '기울기 종합 표'입니다.
3. 야코비안 행렬의 정의: 궁극의 변화량 요약본
수식 Jij=∂fi∂xjJ_{ij} = \frac{\partial f_i}{\partial x_j}Jij​=∂xj​∂fi​​는 복잡해 보이지만 아주 단순한 뜻입니다. "jjj번째 다이얼을 한 칸 돌렸을 때, iii번째 계기판 바늘은 몇 칸 움직이는가?"를 표의 iii행 jjj열 자리에 꼼꼼히 적어둔 것입니다. 덕분에 수많은 다이얼을 동시에 무작위로 살짝살짝 돌렸을 때(Δx\Delta \mathbf{x}Δx), 전체 계기판들이 최종적으로 어떻게 변할지(Δy\Delta \mathbf{y}Δy)를 Δy≈JΔx\Delta \mathbf{y} \approx J \Delta \mathbf{x}Δy≈JΔx 라는 단 한 줄의 깔끔한 행렬 곱셈으로 즉시 예측할 수 있습니다.
4. 그라디언트(Ch.08)와의 관계: 나침반을 쌓아 올린 탑
만약 출력이 딱 1개라면, 이 표는 1줄짜리 가로줄이 되며 우리가 익히 아는 그라디언트 나침반이 됩니다. 만약 출력이 3개라면? 각각의 출력에 대한 그라디언트 나침반 3개를 차곡차곡 가로로 쌓아 올린 3줄짜리 표가 됩니다. 즉, 야코비안은 '각 출력값들이 가진 그라디언트들을 층층이 쌓아 올려 만든 거대한 나침반들의 모음집'이라고 이해하면 완벽합니다.
5. 기하학적 마법: 찌그러진 면적의 비율 (det⁡J\det JdetJ)
작고 반듯했던 정사각형 격자 모양의 입력 데이터가 야코비안 변환을 거치면, 기울어진 평행사변형 모양으로 찌그러집니다. 이때, 그 평행사변형의 면적이 원래의 정사각형 면적보다 도대체 몇 배나 커졌는지(혹은 작아졌는지)를 직관적으로 알려주는 숫자가 바로 행렬식 det⁡J\det JdetJ입니다. 만약 ∣det⁡J∣=6|\det J| = 6∣detJ∣=6 이라면, 공간이 찰흙처럼 늘어나면서 단위 면적이 6배로 팽창했다는 뜻이 됩니다.
한 줄 요약: 야코비안 행렬 JJJ는 여러 개의 다이얼을 돌렸을 때 여러 개의 계기판이 어떻게 변할지를 완벽하게 담아낸 '궁극의 민감도 종합 표'입니다. 좁은 구역에서는 복잡한 변화를 반듯한 일차방정식(Δy≈JΔx\Delta\mathbf{y} \approx J\Delta\mathbf{x}Δy≈JΔx)처럼 다룰 수 있게 해주며, 딥러닝 모델이 거대한 층들을 넘어 오차를 거꾸로 추적(역전파)할 수 있게 만드는 가장 중요한 수학적 심장입니다.
딥러닝은 수많은 야코비안 행렬들이 거미줄처럼 얽힌 거대한 공장입니다. 어떤 신경망 층을 통과할 때 활성화 함수(ReLU, Sigmoid 등)를 거치며 데이터의 형태가 복잡하게 굽이치더라도, '역전파(Backpropagation)'라는 오차 추적 시스템은 찰나의 국소 선형화 마법을 부려 각 층의 야코비안 행렬을 구해냅니다. 이전 장의 그라디언트가 오직 마지막 '최종 오차'에 대한 나침반이었다면, 신경망 내부의 깊은 층과 층 사이에서는 수천 개의 뉴런들이 서로 미치는 영향을 담아낼 수 있는 거대한 야코비안 행렬이 반드시 필요합니다.
결국 신경망이 학습한다는 것은, 꼬리에 꼬리를 무는 연쇄 법칙(Chain Rule)에 따라 이 야코비안 행렬들을 계속해서 곱해나가는 수학적 과정에 불과합니다. 진짜 사람 같은 얼굴을 만들어내는 GAN 생성기나, 데이터를 압축하는 오토인코더 모델들 모두 "내가 입력한 잠재된 노이즈를 아주 살짝 비틀었을 때, 눈앞의 이미지가 어떻게 찌그러지고 변할까?"를 이 야코비안 행렬을 통해 꿰뚫어 보고 학습의 방향을 결정합니다.
1. 역전파(Backpropagation): 오차가 거꾸로 굽이쳐 흐르는 강
인공지능 모델에서 오차를 줄이려면, 마지막 층에서 발생한 오차를 첫 번째 입력층까지 거꾸로 전달하며 책임 소재를 따져야 합니다. 수십 개의 층(Layer)이 쌓여 있을 때, 각 층을 지날 때마다 해당 층이 만들어낸 국소 야코비안 행렬들을 징검다리처럼 척척 곱해 나가기만 하면 (Jtotal=JL⋯J2J1J_{\text{total}} = J_L \cdots J_2 J_1Jtotal​=JL​⋯J2​J1​), 아무리 복잡한 딥러닝 모델이라도 한 번에 전체 민감도를 계산해내고 가중치를 업데이트할 수 있습니다.
2. 확률 밀도의 팽창과 수축 (Normalizing Flows)
최신 생성형 AI 중에는 단순한 찰흙(정규분포)을 마구 주무르고 늘려서 정교한 조각상(복잡한 데이터 분포)으로 만드는 기법이 있습니다. 찰흙을 양옆으로 2배 넓게 늘리면 그 밀도는 절반으로 옅어지겠죠? 이처럼 공간의 부피가 변화함에 따라 확률 밀도가 어떻게 왜곡되는지 정밀하게 보정할 때, 부피의 변화율을 알려주는 야코비안 행렬식 log⁡∣det⁡J∣\log|\det J|log∣detJ∣ 가 필수적인 마법의 열쇠로 사용됩니다.
3. 로봇 팔의 미세 제어와 마비 상태(Singularity)
어깨와 팔꿈치 관절을 가진 로봇 팔을 생각해 봅시다. 목표물에 닿기 위해 '관절 모터를 1도 돌리면 손끝의 X, Y 좌표가 각각 얼마나 이동할까?'를 정확히 계산해 주는 것이 야코비안입니다. 만약 로봇 팔이 일직선으로 완전히 펴져 버린다면 어떻게 될까요? 이때는 야코비안의 행렬식 det⁡J\det JdetJ가 000이 되어버립니다. 이는 로봇 팔이 더 이상 특정 방향(앞쪽)으로는 단 1밀리미터도 움직일 수 없는 수학적 특이점(마비 상태)에 빠졌음을 경고하는 아주 중요한 실전 신호입니다.
문제 풀 때 이렇게만 따라가세요
① 표 크기 — 출력 몇 개? 입력 몇 개?
출력(결과) mmm개, 입력 nnn개면 JJJ는 mmm행 × nnn열 표입니다. 행 = 출력, 열 = 입력 (계기판 번호 / 다이얼 번호).
② 표 칸 채우기 — "다이얼 j → 바늘 i"
(i,j)(i,j)(i,j) 칸에는 "jjj번 입력을 살짝 움직이면 iii번 출력이 얼마나 변하나?" 값을 넣습니다. 수식 이름은 편미분(JijJ_{ij}Jij​)이지만, 반응 정도 하나라고만 생각해도 됩니다.
③ 작은 움직임 — 입력 조금 → 출력 조금
입력을 아주 조금 바꿀 때 (Δx\Delta\mathbf{x}Δx), 출력 변화(Δy\Delta\mathbf{y}Δy)는 대략 JJJ × 입력 변화로 맞춥니다: Δy≈JΔx\Delta\mathbf{y}\approx J\Delta\mathbf{x}Δy≈JΔx.
④ 출력 1개면 Ch.08 그라디언트
결과가 1개(m=1m=1m=1)뿐이면 JJJ는 Ch.08 그라디언트 ∇f\nabla f∇f를 가로로 눕힌 것과 같습니다 (∇fT\nabla f^\mathsf{T}∇fT).
풀이 순서 3단계:
① 크기 확인 →
② 칸별 편미분 채우기 →
③ 함수가 겹쳐 있으면 JgJfJ_g J_fJg​Jf​ 곱하기
  • 말로 정리야코비안
  • 의미Jij=∂fi/∂xjJ_{ij}=\partial f_i/\partial x_jJij​=∂fi​/∂xj​, m×nm\times nm×n
  • 말로 정리국소 근사
  • 의미Δy≈JΔx\Delta\mathbf{y}\approx J\Delta\mathbf{x}Δy≈JΔx
  • 말로 정리그라디언트
  • 의미m=1m=1m=1일 때 J=∇fTJ=\nabla f^\mathsf{T}J=∇fT
  • 말로 정리연쇄
  • 의미Jg∘f=JgJfJ_{g\circ f}=J_g J_fJg∘f​=Jg​Jf​
  • 말로 정리det J
  • 의미면적·부피 배율 (Ch.05)
  • 말로 정리역전파
  • 의미∂L/∂x=JT(∂L/∂f)\partial L/\partial\mathbf{x}=J^\mathsf{T}(\partial L/\partial\mathbf{f})∂L/∂x=JT(∂L/∂f)
말로 정리의미
야코비안Jij=∂fi/∂xjJ_{ij}=\partial f_i/\partial x_jJij​=∂fi​/∂xj​, m×nm\times nm×n
국소 근사Δy≈JΔx\Delta\mathbf{y}\approx J\Delta\mathbf{x}Δy≈JΔx
그라디언트m=1m=1m=1일 때 J=∇fTJ=\nabla f^\mathsf{T}J=∇fT
연쇄Jg∘f=JgJfJ_{g\circ f}=J_g J_fJg∘f​=Jg​Jf​
det J면적·부피 배율 (Ch.05)
역전파∂L/∂x=JT(∂L/∂f)\partial L/\partial\mathbf{x}=J^\mathsf{T}(\partial L/\partial\mathbf{f})∂L/∂x=JT(∂L/∂f)
① 행=출력, 열=입력.
② 선형 f=Axf=Axf=Ax면 J=AJ=AJ=A.
③ 작은 Δx\Delta\mathbf{x}Δx.
④ 특이(det=0=0=0)면 한 방향으로 찌그러짐.

풀이 예시

예시 1 — 2×2 J
문제: f(x,y)=(x+y,  x−y)\mathbf{f}(x,y)=(x+y,\;x-y)f(x,y)=(x+y,x−y)의 JJJ는?
풀이: f1=x+y⇒(1,1)f_1=x+y\Rightarrow(1,1)f1​=x+y⇒(1,1), f2=x−y⇒(1,−1)f_2=x-y\Rightarrow(1,-1)f2​=x−y⇒(1,−1). J=(111−1)J=\begin{pmatrix}1&1\\1&-1\end{pmatrix}J=(11​1−1​).

예시 2 — 한 점에서
문제: f(x,y)=(x2,  y)\mathbf{f}(x,y)=(x^2,\;y)f(x,y)=(x2,y), (1,0)(1,0)(1,0)의 JJJ?
풀이: ∂f1/∂x=2x=2\partial f_1/\partial x=2x=2∂f1​/∂x=2x=2, 나머지 0; ∂f2/∂y=1\partial f_2/\partial y=1∂f2​/∂y=1. J=(2001)J=\begin{pmatrix}2&0\\0&1\end{pmatrix}J=(20​01​).

예시 3 — 선형
문제: f(x)=Ax\mathbf{f}(\mathbf{x})=A\mathbf{x}f(x)=Ax의 JJJ?
풀이: AAA (어디서나 같음).

예시 4 — 연쇄
문제: f(x)=xf(x)=xf(x)=x, g(u)=2ug(u)=2ug(u)=2u일 때 Jg∘fJ_{g\circ f}Jg∘f​ (1×1)?
풀이: Jf=1J_f=1Jf​=1, Jg=2J_g=2Jg​=2, Jg∘f=JgJf=2J_{g\circ f}=J_g J_f=2Jg∘f​=Jg​Jf​=2.

예시 5 — det J
문제: J=(2003)J=\begin{pmatrix}2&0\\0&3\end{pmatrix}J=(20​03​)일 때 단위 정사각형 면적?
풀이: ∣det⁡J∣=∣6∣=6|\det J|=|6|=6∣detJ∣=∣6∣=6 → 6배.

예시 6 — 선형 층
문제: z=Wx+b\mathbf{z}=W\mathbf{x}+\mathbf{b}z=Wx+b에서 JJJ는?
풀이: 선형 변환이므로 WWW.

연습 문제

m=1m=1m=1이면 야코비안 JJJ는 그라디언트 ∇f\nabla f∇f를 행 벡터로 둔 것과 같다.
1 / 5