이 강의의 목표는 공식을 빨리 외우는 것이 아닙니다. 목표는 아래 식을 스스로 설명할 수 있게 되는 것입니다.
Jij=∂xj∂yi
이 식은 말로 풀면 다음 뜻입니다.
야코비안 행렬 J의 i행 j열 원소는, j번째 입력 xj를 살짝 움직였을 때 i번째 출력 yi가 얼마나 변하는지를 잰 값이다.
이 한 줄에 여러 개념이 한꺼번에 들어 있습니다.
- ∂는 무엇인가? 12강의 d와 어떻게 다른가?
- "한 입력만 움직인다"는 게 정확히 어떤 동작인가?
- i, j가 두 개 붙어 있으니 결과가 행렬이라는 건 알겠는데, 행과 열의 의미는?
- 입력이 하나이거나 출력이 하나일 때는 어떻게 되는가?
이 강의는 이 질문을 하나씩, 아주 작은 단계로 나누어 설명합니다. 12강에서 한 변수 함수의 미분을 봤다면, 13강은 그것을 여러 변수로 확장하는 작업입니다.
이번 강에서 새로 등장하는 어휘만 모았습니다. 함수·정의역·치역(3강), 미분·도함수·연쇄법칙(12강), 벡터·행렬·내적(7~10강)은 앞서 본 그대로 씁니다.
| 말 |
뜻 |
| 다변수 함수 |
입력이 여러 개인 함수. 예: f(x,y)=x2+3y |
| 벡터값 함수 |
출력이 여러 개인 함수. 예: F(t)=(cost,sint) |
| 편미분 (∂) |
다른 입력은 멈춘 채 한 입력으로만 미분 |
| 기울기벡터 (그라디언트, ∇f) |
모든 편미분을 모은 벡터. 가장 빨리 증가하는 방향 |
| 방향 미분 |
임의의 방향으로 움직일 때의 변화율 |
| 야코비안 행렬 (J) |
벡터값 다변수 함수의 모든 편미분을 모은 행렬 |
| 헤시안 행렬 (H) |
2차 편미분을 모은 행렬. 곡률 정보를 담는다 |
| 국소 선형근사 |
한 점 근처에서 함수를 선형식으로 근사하는 일 |
| 다변수 연쇄법칙 |
합성함수의 편미분을 야코비안의 곱으로 쓰는 규칙 |
여기서 가장 중요한 식은 도입부에서 본
Jij=∂xj∂yi
입니다. 12강의 f′(a)를 행렬로 일반화한 것입니다.
3강의 함수는 보통 입력 하나 → 출력 하나였습니다.
f(x)=x2
이번 강의 다변수 함수는 입력이 여럿입니다.
f(x,y)=x2+3y
입력 (x,y)=(2,1)을 넣으면 f(2,1)=4+3=7. 입력 두 개가 함께 출력 하나를 정합니다.
여러 입력을 묶어 벡터로 봅시다 (7강).
x=[xy]
그러면 다변수 함수는
f:Rn→R
즉 "n차원 벡터를 받아 한 수를 내보내는 함수"라고 쓸 수 있습니다. 손실함수가 대표적인 예입니다.
출력이 여러 개인 함수도 자주 만납니다.
F(x,y)=⎣⎢⎡x+yxyx2−y2⎦⎥⎤
이런 함수를 벡터값 함수라고 부르고
F:Rn→Rm
으로 씁니다. AI에서 신경망 한 층 y=Wx+b도 벡터값 함수입니다.
- f:R→R → 2차원 평면 위의 곡선
- f:R2→R → 3차원 공간 위의 곡면 (지형 같은 모양)
- f:R3→R → 그릴 수 없음 (4차원)
3차원 이상은 그림으로 그릴 수 없지만, 다음 절부터 볼 편미분의 직관은 차원에 상관없이 통합니다.
요리 맛은 소금, 설탕, 물의 양이 함께 결정합니다. 한 가지가 맛에 미치는 영향만 따로 알고 싶으면, 나머지는 모두 똑같이 둔 채 그것만 살짝 바꿔 봅니다. 이것이 편미분의 정신입니다.
f(x,y)의 x에 대한 편미분은 y를 상수처럼 두고 x에 대해서만 12강의 미분을 적용한 것입니다.
∂x∂f(a,b)=h→0limhf(a+h,b)−f(a,b)
기호 ∂("partial")는 편미분에서만 쓰는 기호입니다. 12강의 d 대신 ∂를 씁니다.
마찬가지로 y에 대한 편미분은
∂y∂f(a,b)=h→0limhf(a,b+h)−f(a,b)
f(x,y)=x2+3y의 편미분을 구해 봅시다.
x에 대한 편미분: y를 상수로 보면 3y 항은 상수, x2만 미분.
∂x∂f=2x
y에 대한 편미분: x를 상수로 보면 x2이 상수, 3y만 미분.
∂y∂f=3
12강의 미분 규칙을 그대로 쓰되, 다른 변수는 상수처럼 취급합니다.
f(x,y)=x2y+exy.
x에 대해: 첫 항 x2y는 y를 상수로 보면 2xy. 둘째 항 exy는 연쇄법칙 (12강 8.4절): 안 u=xy, ∂u/∂x=y, 바깥 eu의 미분은 eu. 결과는 y⋅exy.
∂x∂f=2xy+yexy
y에 대해: 첫 항은 x2. 둘째 항은 x⋅exy.
∂y∂f=x2+xexy
편미분을 하나씩 따로 구해 두면 답이 흩어져 있습니다. 이를 한 벡터로 묶은 것이 기울기벡터, 영어로 그라디언트입니다.
∇f(x)=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡∂x1∂f∂x2∂f⋮∂xn∂f⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
기호 ∇는 "나블라" 또는 "델"로 읽습니다. 입력이 n차원이면 그라디언트도 n차원 벡터입니다.
f(x,y)=x2+3y의 그라디언트는
∇f(x,y)=[2x3]
위치에 따라 그라디언트도 달라집니다. 예: ∇f(1,0)=(2,3)T, ∇f(0,0)=(0,3)T.
핵심 사실 하나.
그라디언트 ∇f는 함수 f가 가장 빨리 증가하는 방향을 가리키고, 그 크기는 그 방향에서의 증가율과 같다.
지형에 비유하면 등산가가 한 점에 서 있을 때, ∇f는 가장 가파른 오르막 방향입니다. 반대로 −∇f는 가장 가파른 내리막 방향이고, 이것이 경사하강법의 핵심입니다 (10.2절).
∇f=0이 되는 점은 어느 방향으로 움직여도 (1차 근사로) 변화가 없는 곳입니다. 이런 점이 극값(극대·극소·안장점) 후보가 됩니다. 12강 9.2절의 다변수 버전입니다.
그라디언트는 편미분, 즉 좌표축 방향 변화율만 모아 둔 것 같지만, 사실 임의의 방향에 대한 변화율을 한 식으로 알려 줍니다.
단위벡터 u 방향으로 움직일 때 f의 변화율을 방향 미분이라고 하고
Duf(x)=h→0limhf(x+hu)−f(x)
으로 정의합니다.
미분 가능한 함수에서는 다음 식이 성립합니다.
Duf(x)=∇f(x)⋅u
즉 방향 미분은 그라디언트와 단위벡터의 내적입니다 (10강).
10강에서 본 내적의 성질로
∇f⋅u=∥∇f∥⋅∥u∥⋅cosθ=∥∇f∥cosθ
이 값은 θ=0일 때 (즉 u가 ∇f와 같은 방향일 때) 최댓값 ∥∇f∥를 가집니다. 이것이 4.3절의 "그라디언트는 가장 빨리 증가하는 방향"이라는 사실의 증명입니다.
이제 출력도 여러 개인 일반적인 경우로 갑니다.
벡터값 함수 F:Rn→Rm의 야코비안은
J=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡∂x1∂F1∂x1∂F2⋮∂x1∂Fm∂x2∂F1∂x2∂F2⋮∂x2∂Fm⋯⋯⋱⋯∂xn∂F1∂xn∂F2⋮∂xn∂Fm⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
성분으로 쓰면 도입부의 식 그대로
Jij=∂xj∂Fi
크기는 m×n입니다. 행은 출력, 열은 입력입니다.
출력이 하나(m=1)인 경우 야코비안은 행 하나짜리 행렬, 즉 그라디언트의 가로 형태입니다.
J=(∇f)T
그래서 그라디언트는 야코비안의 특수한 경우입니다.
F(x,y)=[x+yxy]의 야코비안.
F1=x+y의 편미분: ∂F1/∂x=1, ∂F1/∂y=1.
F2=xy의 편미분: ∂F2/∂x=y, ∂F2/∂y=x.
J(x,y)=[1y1x]
위치 (1,2)에서는
J(1,2)=[1211]
- J의 i번째 행: i번째 출력의 그라디언트 (입력에 대한 민감도).
- J의 j번째 열: j번째 입력이 모든 출력에 미치는 영향.
이 관점은 신경망에서 어떤 가중치가 어떤 출력에 영향을 주는지 따질 때 유용합니다.
12강 8.4절의 연쇄법칙은 한 변수에서 h′(x)=f′(g(x))⋅g′(x)였습니다. 다변수에서는 어떻게 될까요?
F:Rn→Rm, G:Rp→Rn의 합성
H=F∘G:Rp→Rm
의 야코비안은 두 야코비안의 행렬곱입니다.
JH(x)=JF(G(x))⋅JG(x)
12강의 단순 곱셈이 8강의 행렬곱으로 일반화된 것입니다.
- JF: m×n
- JG: n×p
- 곱: m×p ← JH의 크기와 일치 ✓
8강의 "행렬곱은 변환을 이어붙이는 것"이 그대로 되살아납니다.
신경망 한 층의 변환은 벡터값 함수입니다. 깊은 신경망은 여러 층의 합성
y=FL∘FL−1∘⋯∘F1(x)
이고, 손실함수에 대한 가중치의 그라디언트는 7.1절의 식을 여러 번 곱해서 얻습니다. 이 계산을 역순으로 효율화한 알고리즘이 역전파(backpropagation)입니다.
한 줄로: 다변수 연쇄법칙 = 야코비안의 행렬곱 = 역전파의 수학.
12강 9.2절에서 한 변수 함수의 극값 판별에 부호 변화를 썼습니다. 다변수에서는 도구가 한 단계 더 필요한데, 그것이 헤시안입니다.
f:Rn→R의 헤시안 행렬은 모든 2차 편미분을 모은 n×n 행렬.
Hij=∂xi∂xj∂2f
f(x,y)=x2+3xy+y2.
∂x∂f=2x+3y,∂y∂f=3x+2y
각각을 다시 편미분.
∂x2∂2f=2,∂x∂y∂2f=3,∂y∂x∂2f=3,∂y2∂2f=2
따라서
H=[2332]
부드러운 함수에서는 편미분 순서를 바꿔도 결과가 같습니다.
∂x∂y∂2f=∂y∂x∂2f
따라서 헤시안은 항상 대칭행렬. 9강에서 본 고유값분해가 그대로 적용됩니다.
그라디언트가 0인 점에서 헤시안의 고유값으로 종류를 판별합니다.
- 모든 고유값이 양 → 극소 (그릇 모양)
- 모든 고유값이 음 → 극대 (뒤집힌 그릇)
- 고유값에 부호가 섞여 있음 → 안장점 (말 안장 모양)
12강에서 미분의 의미가 "한 점에서의 접선"이었습니다. 다변수에서는 "한 점에서의 접평면"이 됩니다.
12강에서 한 점 a 근처에서의 함수 근사는
f(a+h)≈f(a)+f′(a)⋅h
다변수 함수의 한 점 근처 근사는
f(x+h)≈f(x)+∇f(x)⋅h
기호만 다를 뿐 구조는 같습니다. 곱하기가 내적으로 바뀐 것뿐.
F:Rn→Rm의 경우
F(x+h)≈F(x)+J(x)⋅h
스칼라 곱하기가 행렬 곱하기로 바뀌었지만, "한 점 근처에서는 선형으로 본다"는 핵심은 변하지 않습니다. 15강 테일러 전개에서 더 자세히 다룹니다.
거의 모든 머신러닝·딥러닝 기법이 다변수미분에 기댑니다.
신경망의 매개변수 θ는 수백만~수십억 개. 손실함수 L(θ)는 그 거대한 벡터를 입력으로 받는 다변수 함수입니다. 학습 = L이 작아지는 θ 찾기.
12강 10.2절의 한 변수 식
θnew=θold−η⋅L′(θold)
은 다변수에서
θnew=θold−η⋅∇L(θold)
가 됩니다. 4.3절에서 본 "−∇L이 가장 빨리 감소하는 방향"이 이 식의 직관입니다.
7.3절. 여러 층 신경망의 손실 그라디언트는 각 층의 야코비안을 차례로 곱해서 얻습니다.
PyTorch나 JAX 같은 프레임워크는 위 계산을 자동으로 해 줍니다. 사용자는 손실 함수만 적으면 그라디언트를 알아서 계산해 줍니다(자동 미분, autograd). 그 이론적 토대가 13강의 야코비안과 연쇄법칙입니다.
- 14강: 미분의 반대 작업인 적분. 다변수 적분은 부피·확률밀도로 이어진다.
- 15강: 한 점에서의 도함수·헤시안 정보로 함수를 다항식으로 근사하는 다변수 테일러 전개.
- 16강: 다변수 미분으로 시간에 따른 변화를 표현하는 미분방정식 시스템.
- 5단원 22~23강: 그라디언트와 헤시안을 본격적으로 쓰는 최적화 알고리즘들.
문제: f(x,y,z)=x2y+yz3−lnz의 모든 편미분을 구하시오.
풀이:
x로 편미분 (y,z는 상수):
∂x∂f=2xy
y로 편미분 (x,z는 상수):
∂y∂f=x2+z3
z로 편미분 (x,y는 상수):
∂z∂f=3yz2−z1
문제: f(x,y)=x2+4y2의 점 (1,1)에서의 그라디언트를 구하고, 가장 빨리 증가하는 방향을 말하시오.
풀이:
∇f(x,y)=[2x8y]⇒∇f(1,1)=[28]
점 (1,1)에서 가장 빨리 증가하는 방향은 [28] 방향입니다. 단위벡터로 정규화하면
u^=4+641[28]=681[28]
증가율(방향 미분의 최댓값)은 ∥∇f(1,1)∥=68≈8.25.
문제: F(x,y)=[x2−y22xy]의 야코비안을 구하시오. (이 함수는 복소수 제곱 z↦z2에 해당)
풀이:
F1=x2−y2: ∂F1/∂x=2x, ∂F1/∂y=−2y.
F2=2xy: ∂F2/∂x=2y, ∂F2/∂y=2x.
J(x,y)=[2x2y−2y2x]
흥미롭게도 이 야코비안은 9강에서 본 회전+늘리기의 형태입니다. 점 (1,0)에서는 J=[2002]이며, 단순한 2배 늘리기입니다.
문제: f(x,y)=x2+y2이고 x=cost, y=sint일 때 dtdf를 구하시오.
풀이:
다변수 연쇄법칙으로
dtdf=∂x∂f⋅dtdx+∂y∂f⋅dtdy
각각:
∂x∂f=2x=2cost,∂y∂f=2y=2sint
dtdx=−sint,dtdy=cost
대입:
dtdf=2cost⋅(−sint)+2sint⋅cost=−2costsint+2sintcost=0
직관적으로 f(x,y)=x2+y2=cos2t+sin2t=1 (상수)이므로 도함수가 0인 것이 맞습니다.
문제: f(x,y)=x2+xy+y2−4x−5y의 임계점을 찾고 종류를 판별하시오.
풀이:
1단계: 그라디언트 = 0
∂x∂f=2x+y−4=0
∂y∂f=x+2y−5=0
연립하면 x=1,y=2. 임계점은 (1,2).
2단계: 헤시안
H=[2112]
3단계: 고유값으로 판별
특성방정식 (2−λ)2−1=0에서 λ=1,3. 둘 다 양수이므로 8.4절에 따라 극소.
극솟값은 f(1,2)=1+2+4−4−10=−7.
- 다변수 함수는 입력이 여러 개, 벡터값 함수는 출력도 여러 개인 함수다.
- 편미분은 다른 입력은 멈춰 둔 채 한 변수로만 미분한 결과다.
- 그라디언트 ∇f는 편미분들을 모은 벡터, 가장 빨리 증가하는 방향이다.
- 방향 미분 Duf=∇f⋅u는 그라디언트와 단위벡터의 내적.
- 야코비안 J는 벡터값 함수의 모든 편미분을 모은 행렬, 행=출력 열=입력.
- 그라디언트는 출력이 하나일 때의 야코비안이다.
- 다변수 연쇄법칙 JH=JF⋅JG는 야코비안의 행렬곱.
- 헤시안은 2차 편미분의 대칭행렬, 그 고유값으로 극값 종류를 판별한다.
- 국소 선형근사 f(x+h)≈f(x)+∇f(x)⋅h.
- AI에서: 경사하강법 = −∇L 방향 이동, 역전파 = 야코비안 곱, autograd = 자동 미분.
- 편미분 기호 ∂가 왜 보통 d와 다른지 한 줄로 설명할 수 있는가?
- f(x,y)=exsiny의 두 편미분을 구할 수 있는가?
- f(x,y,z)=x2+y2+z2의 그라디언트를 구하고, 점 (1,2,2)에서 그 의미를 말할 수 있는가?
- 그라디언트가 "가장 빨리 증가하는 방향"인 이유를 내적으로 설명할 수 있는가?
- 다음 함수의 야코비안을 구할 수 있는가?
F(x,y)=⎣⎢⎡x+2yx2−ysinx⎦⎥⎤
- 위 야코비안의 크기는 몇 × 몇인가? 왜 그런가?
- 다변수 연쇄법칙이 왜 단순 곱이 아니라 행렬곱인지 설명할 수 있는가?
- 헤시안이 항상 대칭이라는 사실이 왜 중요한지 말할 수 있는가?
- f(x,y)=x2−y2의 점 (0,0)이 안장점인 이유를 헤시안으로 설명할 수 있는가?
- 신경망 역전파가 결국 어떤 수학적 동작인지 한 줄로 말할 수 있는가?