교재 쪽수: 139~171쪽
이 장이 뒤쪽 장에서 어디에 다시 쓰이는가: 7장 연속 최적화(Continuous Optimization, 경사하강법 및 뉴턴 방법의 토대), 9장 선형 회귀(Linear Regression, 비용함수 미분 및 정규방정식 ∇θL=0\nabla_{\boldsymbol{\theta}} L = \mathbf{0} 도출), 10장 차원 축소(Dimensionality Reduction/PCA, 라그랑주 승수법을 적용한 분산 극대화 목적식 미분), 11장 밀도 추정(Density Estimation/GMM, EM 알고리즘의 로그우도 매개변수 최적화), 12장 분류(SVM, 초평면 마진 최적화와 KKT 조건 유도). 머신러닝의 ‘학습(learning)‘은 곧 목적함수를 최적화하는 과정이며, 매개변수 공간에서 어느 방향으로 이동해야 손실(오차)이 가장 빠르게 줄어드는지를 알려주는 유일한 나침반이 바로 이 장의 기울기(gradient)와 야코비안(Jacobian)이다.


0. 이 장 지도

벡터 미적분은 머신러닝 모델의 파라미터를 데이터에 맞추어 최적화(학습)하기 위한 필수적인 수학적 언어다. 스칼라 함수를 다루던 고등학교 미분에서 출발하여, 다변수 함수(편미분/기울기), 벡터를 벡터로 보내는 함수(야코비안), 나아가 행렬에 대한 미분과 신경망 역전파(자동 미분)로 점진적으로 확장된다.

flowchart TD
    S51["5.1 일변수 함수의 미분<br/>(기초 미분, 테일러 급수)"] --> S52["5.2 편미분과 기울기<br/>(다변수 스칼라 함수, 연쇄법칙)"]
    S52 --> S53["5.3 벡터값 함수의 기울기<br/>(야코비안 행렬, 행렬 연쇄법칙)"]
    S53 --> S54["5.4 행렬의 기울기<br/>(텐서 야코비안, 벡터화)"]
    S54 --> S55["5.5 유용한 기울기 항등식<br/>(2차형식, 대각합, 행렬식, 역행렬)"]
    S53 --> S56["5.6 역전파와 자동 미분<br/>(심층신경망, Forward/Reverse 모드)"]
    S52 --> S57["5.7 고계 도함수<br/>(헤시안 행렬, 2계 편미분)"]
    S57 --> S58["5.8 선형화와 다변수 테일러 급수<br/>(국소 2차 곡면 근사)"]
    S55 --> Part2["Part 2 머신러닝 응용<br/>(9장 선형회귀, 11장 GMM 등)"]
    S56 --> Part2

절 목록 및 핵심 요약과 중요도

절 번호 및 제목핵심 한 줄 요약중요도근거
5.1 일변수 함수의 미분 (pp. 141~146)미분의 극한 정의와 다항식 테일러 급수 근사의 기초를 다룬다.★☆☆뒤쪽 장에서 직접 단독으로 쓰이기보다는 다변수 확장의 논리적 징검다리 역할을 한다.
5.2 편미분과 기울기 (pp. 146~149)다변수 스칼라 함수의 편미분을 모은 기울기 벡터(Gradient)와 연쇄법칙을 정의한다.★★★MML의 핵심 관례인 분자 중심 표기법(행벡터 기울기)의 출발점이며 다변수 최적화의 기본이다.
5.3 벡터값 함수의 기울기 (pp. 149~154)벡터 출력 함수의 도함수인 야코비안 행렬(Jacobian)과 다변수 연쇄법칙의 행렬곱을 다룬다.★★★신경망의 층별 변환, 6장 확률변수의 변수 변환(야코비안 행렬식), 가우스-뉴턴 최적화의 필수 기저다.
5.4 행렬의 기울기 (pp. 155~157)행렬을 벡터로 미분할 때 나타나는 3차원 텐서 야코비안과 벡터화(vec\text{vec}) 기법을 학습한다.★★☆신경망 가중치 행렬 미분과 공분산 행렬 추정식 전개에 사용된다.
5.5 기울기 계산을 위한 유용한 항등식 (pp. 157~158)2차 형식, 대각합(trace), 행렬식(determinant), 역행렬의 행렬 미분 공식을 정리한다.★★★9장 선형회귀의 정규방정식 도출, 10장 PCA, 11장 GMM 정규분포 모수 추정에서 수식 전개에 직결된다.
5.6 역전파와 자동 미분 (pp. 159~164)연쇄법칙의 결합법칙을 이용한 역전파(Reverse-mode autodiff)의 계산 효율성을 증명한다.★★★딥러닝 전체를 관통하는 핵심 알고리즘이다. 스칼라 손실의 기울기 전체를 순전파의 상수배 정도 계산으로 한 번에 구한다.
5.7 고계 도함수 (pp. 164~165)2계 편도함수를 모은 헤시안 행렬(Hessian Matrix)과 슈와르츠 대칭성 정리를 배운다.★★☆7장 뉴턴 방법 2차 최적화와 국소 극값(극소, 극대, 안장점) 판정에 쓰인다.
5.8 선형화와 다변수 테일러 급수 (pp. 165~170)다변수 비선형 함수를 기울기와 헤시안을 이용해 국소 1차/2차 다항식으로 근사한다.★★☆최적화 알고리즘의 국소 2차 모델링(수렴성 증명) 및 칼만 필터의 선형화(EKF)의 수학적 기초다.
5.9 추가 읽을거리 (pp. 170~171)행렬 미분 바이블(The Matrix Cookbook) 및 자동 미분 서베이 논문을 소개한다.★☆☆심화 연구 및 확장 참고용이다.

5.1 일변수 함수의 미분(Differentiation of Univariate Functions, 교재 141~146쪽)

왜 필요한가 (직관)

머신러닝의 궁극적인 목표는 손실 함수(Loss function)의 값을 최소화하는 최적의 매개변수를 찾는 것이다. 만약 우리가 조정할 수 있는 매개변수가 딱 하나(xx)뿐이라면, “현재 위치에서 xx를 아주 조금 오른쪽으로 움직였을 때 손실이 늘어나는가, 줄어드는가?“를 알아야 한다. 이 질문에 답을 주는 수학적 도구가 바로 도함수(derivative)다. 도함수는 곡선 위의 한 점 근처를 직선(접선)으로 단순화하여, 변화의 즉각적인 방향과 속도를 알려준다.

정의와 성질

1. 미분의 정의

함수 f:R→Rf: \mathbb{R} \to \mathbb{R}에 대하여 점 xx에서의 도함수 f′(x)f'(x) (또는 dfdx\frac{df}{dx})는 차분상(difference quotient)의 극한으로 정의된다:

f′(x)=dfdx=lim⁡h→0f(x+h)−f(x)hf'(x) = \frac{df}{dx} = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h}
  • hh: 입력값의 미세한 변화량
  • f(x+h)−f(x)f(x+h) - f(x): 그에 따른 출력값의 변화량
  • 기하학적 의미: 곡선 y=f(x)y = f(x) 위의 점 (x,f(x))(x, f(x))에서의 접선의 기울기(tangent slope).

2. 5.1.1 테일러 급수(Taylor Series)

복잡한 비선형 함수 f(x)f(x)를 다루기는 어렵지만, 다항식(polynomial)은 미분하기도 쉽고 계산하기도 매우 편하다. 점 x0x_0 근처에서 무한 번 미분 가능한 함수 f(x)f(x)를 다항식으로 근사하는 기법이 테일러 급수다.

nn차 테일러 다항식(Taylor polynomial) Tn(x)T_n(x)는 다음과 같이 정의된다:

Tn(x)=∑k=0nf(k)(x0)k!(x−x0)k=f(x0)+f′(x0)(x−x0)+f′′(x0)2!(x−x0)2+⋯+f(n)(x0)n!(x−x0)n\begin{aligned} T_n(x) &= \sum_{k=0}^n \frac{f^{(k)}(x_0)}{k!} (x - x_0)^k \\ &= f(x_0) + f'(x_0)(x - x_0) \\ &\quad + \frac{f''(x_0)}{2!}(x - x_0)^2 \\ &\quad + \cdots + \frac{f^{(n)}(x_0)}{n!}(x - x_0)^n \end{aligned}
  • x0x_0: 근사의 기준이 되는 중심점(expansion point). x0=0x_0 = 0일 때를 특별히 매클로린 급수(Maclaurin series)라고 부른다.
  • f(k)(x0)f^{(k)}(x_0): ff의 kk계 도함수를 x0x_0에서 평가한 값.
  • k!k!: kk 팩토리얼 (k!=k×(k−1)×⋯×1k! = k \times (k-1) \times \cdots \times 1).
  • 테일러 정리(Taylor’s Theorem)에 따르면, 원래 함수와 다항식 사이의 오차는 잉여항(remainder) Rn(x)R_n(x)로 주어지며, f(x)=Tn(x)+Rn(x)f(x) = T_n(x) + R_n(x)가 성립한다.

3. 5.1.2 미분 규칙(Differentiation Rules)

기본적인 미분 규칙은 다변수 미분에서도 성분별 계산에 그대로 적용된다:

  1. 선형성(Linearity): (αf+βg)′(x)=αf′(x)+βg′(x)(\alpha f + \beta g)'(x) = \alpha f'(x) + \beta g'(x) (단, α,β∈R\alpha, \beta \in \mathbb{R})
  2. 곱의 미분법(Product Rule): (f⋅g)′(x)=f′(x)g(x)+f(x)g′(x)(f \cdot g)'(x) = f'(x)g(x) + f(x)g'(x)
  3. 몫의 미분법(Quotient Rule): (fg)′(x)=f′(x)g(x)−f(x)g′(x)(g(x))2\left(\frac{f}{g}\right)'(x) = \frac{f'(x)g(x) - f(x)g'(x)}{(g(x))^2} (단, g(x)≠0g(x) \neq 0)
  4. 연쇄 법칙(Chain Rule): 합성함수 (g∘f)(x)=g(f(x))(g \circ f)(x) = g(f(x))에 대하여, (g∘f)′(x)=g′(f(x))⋅f′(x),즉 dydx=dydu⋅dudx(y=g(u),u=f(x))(g \circ f)'(x) = g'(f(x)) \cdot f'(x), \quad \text{즉 } \frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx} \quad (y = g(u), u = f(x))

손으로 풀어 보는 예제

[예제 1-1] 곱의 미분법과 연쇄법칙

함수 f(x)=x3e−2xf(x) = x^3 e^{-2x}의 도함수를 구하고, x=1x = 1에서의 값을 계산하라.

  • 1단계 (함수 분해): u(x)=x3u(x) = x^3, v(x)=e−2xv(x) = e^{-2x}로 둔다.
  • 2단계 (개별 미분):
    • u′(x)=3x2u'(x) = 3x^2
    • v(x)=ewv(x) = e^{w} (단, w=−2xw = -2x)이므로 연쇄법칙에 의해 v′(x)=ew⋅dwdx=e−2x⋅(−2)=−2e−2xv'(x) = e^w \cdot \frac{dw}{dx} = e^{-2x} \cdot (-2) = -2e^{-2x}
  • 3단계 (곱의 미분법 결합): f′(x)=u′(x)v(x)+u(x)v′(x)=(3x2)(e−2x)+(x3)(−2e−2x)=(3x2−2x3)e−2x=x2(3−2x)e−2xf'(x) = u'(x)v(x) + u(x)v'(x) = (3x^2)(e^{-2x}) + (x^3)(-2e^{-2x}) = (3x^2 - 2x^3)e^{-2x} = x^2(3 - 2x)e^{-2x}
  • 4단계 (x=1x=1 대입): f′(1)=12(3−2(1))e−2(1)=1⋅1⋅e−2=e−2≈0.1353f'(1) = 1^2 (3 - 2(1)) e^{-2(1)} = 1 \cdot 1 \cdot e^{-2} = e^{-2} \approx 0.1353

[예제 1-2] 로지스틱 시그모이드(Logistic Sigmoid)의 도함수

딥러닝의 대표적 활성화 함수인 로지스틱 시그모이드 σ(x)=11+e−x\sigma(x) = \frac{1}{1 + e^{-x}}의 도함수가 σ(x)(1−σ(x))\sigma(x)(1 - \sigma(x))임을 증명하라.

  • 1단계 (음의 지수꼴 표현): σ(x)=(1+e−x)−1\sigma(x) = (1 + e^{-x})^{-1}
  • 2단계 (연쇄법칙 적용): 겉함수는 u−1u^{-1}, 속함수는 u=1+e−xu = 1 + e^{-x}이다. σ′(x)=−1⋅(1+e−x)−2⋅ddx(1+e−x)\sigma'(x) = -1 \cdot (1 + e^{-x})^{-2} \cdot \frac{d}{dx}(1 + e^{-x})
  • 3단계 (속함수 미분): ddx(1+e−x)=0+e−x(−1)=−e−x\frac{d}{dx}(1 + e^{-x}) = 0 + e^{-x}(-1) = -e^{-x}
  • 4단계 (정리): σ′(x)=−(1+e−x)−2(−e−x)=e−x(1+e−x)2\sigma'(x) = -(1 + e^{-x})^{-2} (-e^{-x}) = \frac{e^{-x}}{(1 + e^{-x})^2}
  • 5단계 (형태 변형): e−x(1+e−x)2=11+e−x⋅e−x1+e−x=11+e−x⋅(1+e−x)−11+e−x=σ(x)(1−11+e−x)=σ(x)(1−σ(x))\frac{e^{-x}}{(1 + e^{-x})^2} = \frac{1}{1 + e^{-x}} \cdot \frac{e^{-x}}{1 + e^{-x}} = \frac{1}{1 + e^{-x}} \cdot \frac{(1 + e^{-x}) - 1}{1 + e^{-x}} = \sigma(x) \left(1 - \frac{1}{1 + e^{-x}}\right) = \sigma(x)(1 - \sigma(x)) 이 성질은 뒤쪽 5.6절의 역전파 계산에서 시그모이드 층의 기울기를 구할 때 계산량을 극적으로 줄여준다.

[예제 1-3] 테일러 다항식 계산

x0=0x_0 = 0에서 f(x)=cos⁡(x)f(x) = \cos(x)의 4차 테일러 다항식 T4(x)T_4(x)를 구하고, x=0.5x = 0.5에서의 참값과 근사값을 비교하라.

  • 1단계 (도함수 값 계산):
    • f(0)=cos⁡(0)=1f(0) = \cos(0) = 1
    • f′(0)=−sin⁡(0)=0f'(0) = -\sin(0) = 0
    • f′′(0)=−cos⁡(0)=−1f''(0) = -\cos(0) = -1
    • f′′′(0)=sin⁡(0)=0f'''(0) = \sin(0) = 0
    • f(4)(0)=cos⁡(0)=1f^{(4)}(0) = \cos(0) = 1
  • 2단계 (테일러 다항식 조립): T4(x)=1+0⋅x+−12!x2+0⋅x3+14!x4=1−12x2+124x4T_4(x) = 1 + 0 \cdot x + \frac{-1}{2!} x^2 + 0 \cdot x^3 + \frac{1}{4!} x^4 = 1 - \frac{1}{2} x^2 + \frac{1}{24} x^4
  • 3단계 (x=0.5x = 0.5 계산): T4(0.5)=1−0.5×0.25+124×0.0625=1−0.125+0.00260417=0.87760417T_4(0.5) = 1 - 0.5 \times 0.25 + \frac{1}{24} \times 0.0625 = 1 - 0.125 + 0.00260417 = 0.87760417 실제 cos⁡(0.5)\cos(0.5) 참값은 약 0.877582560.87758256이다. 오차는 약 0.00002160.0000216(0.002%0.002\%)에 불과하다.

헷갈리는 점 / 자주 하는 실수

  • 연쇄법칙 속함수 누락: f(x)=sin⁡(x3)f(x) = \sin(x^3)을 미분할 때 cos⁡(x3)\cos(x^3)만 쓰고 속함수 미분인 3x23x^2를 곱하는 것을 잊는 실수가 매우 흔하다.
  • 테일러 급수 분모 팩토리얼 누락: 2차 항의 분모는 2!=22! = 2, 3차 항의 분모는 3!=63! = 6, 4차 항의 분모는 4!=244! = 24이다. 팩토리얼을 그냥 차수 수치로 착각하지 않도록 주의한다.

5.2 편미분과 기울기(Partial Differentiation and Gradients, 교재 146~149쪽)

왜 필요한가 (직관)

실제 머신러닝 모델의 파라미터는 1개가 아니라 수천, 수백만 개(벡터 x∈Rn\boldsymbol{x} \in \mathbb{R}^n)다. 예를 들어 산비탈에 서 있을 때, 동서 방향으로 한 걸음 갈 때의 경사와 남북 방향으로 한 걸음 갈 때의 경사는 완전히 다르다. 다변수 함수 f(x1,x2,…,xn)f(x_1, x_2, \dots, x_n)에서 다른 모든 변수는 얼어붙은 듯 고정(상수 취급)시키고, 관심 있는 변수 하나(xix_i)만 살짝 움직였을 때의 변화율을 구하는 것이 바로 편미분(partial differentiation)이다. 그리고 이 모든 방향의 편미분을 하나의 벡터로 정돈해 묶은 것이 기울기(gradient, 그레디언트)다.

정의와 성질

1. 편미분의 정의

nn개 변수를 가지는 함수 f:Rn→Rf: \mathbb{R}^n \to \mathbb{R}에 대하여, ii번째 변수 xix_i에 대한 편도함수(partial derivative)는 다음과 같이 정의된다:

∂f∂xi=lim⁡h→0f(x1,…,xi−1,xi+h,xi+1,…,xn)−f(x1,…,xn)h\frac{\partial f}{\partial x_i} = \lim_{h \to 0} \frac{f(x_1, \dots, x_{i-1}, x_i + h, x_{i+1}, \dots, x_n) - f(x_1, \dots, x_n)}{h}

기호 ∂\partial는 편미분을 나타내며, 읽을 때는 ‘라운드(round)’ 또는 ‘파셜(partial)‘이라고 읽는다.

2. 기울기(Gradient)의 정의와 MML의 표기 관례

편미분들을 가로로 늘어놓아 벡터로 만든 것을 기울기(gradient) 또는 야코비안(Jacobian)이라고 부른다.

∇xf=grad f=dfdx=[∂f(x)∂x1∂f(x)∂x2⋯∂f(x)∂xn]∈R1×n\begin{aligned} \nabla_{\boldsymbol{x}} f &= \text{grad}\, f \\ &= \frac{df}{d\boldsymbol{x}} \\ &= \begin{bmatrix} \frac{\partial f(\boldsymbol{x})}{\partial x_1} & \frac{\partial f(\boldsymbol{x})}{\partial x_2} & \cdots & \frac{\partial f(\boldsymbol{x})}{\partial x_n} \end{bmatrix} \\ &\quad \in \mathbb{R}^{1 \times n} \end{aligned}

[매우 중요! MML 교재의 핵심 관례: 분자 중심 표기법(Numerator Layout)] 교재 MML에서는 입력 벡터가 x=[x1,…,xn]⊤∈Rn×1\boldsymbol{x} = [x_1, \dots, x_n]^\top \in \mathbb{R}^{n \times 1} (열벡터)일 때, 스칼라 함수 ff의 기울기 dfdx\frac{df}{d\boldsymbol{x}}를 반드시 1×n1 \times n 행벡터(row vector)로 정의한다!

왜 행벡터로 정의하는가? (교재의 두 가지 이유)

  1. 일관된 일반화: 이후 5.3절에서 배울 벡터값 함수 f:Rn→Rm\boldsymbol{f}: \mathbb{R}^n \to \mathbb{R}^m의 도함수(야코비안 행렬)는 m×nm \times n 행렬이 된다. m=1m=1인 특수한 경우가 바로 스칼라 함수이므로, 1×n1 \times n 행벡터가 되는 것이 차원적으로 정확히 일관된다.
  2. 연쇄법칙의 깔끔함: 기울기를 행벡터로 정의해야만 다변수 연쇄법칙을 쓸 때 전치(⊤^\top) 기호를 덕지덕지 붙이지 않고 단순 행렬곱 dzdx=dzdydydx\frac{dz}{d\boldsymbol{x}} = \frac{dz}{d\boldsymbol{y}} \frac{d\boldsymbol{y}}{d\boldsymbol{x}} (1×n=(1×m)×(m×n)1 \times n = (1 \times m) \times (m \times n))으로 직관적으로 쓸 수 있다.

(주의: 딥러닝 관례와의 차이) 딥러닝 실무나 일부 교재(예: Goodfellow의 Deep Learning)에서는 분모 중심 표기법(Denominator Layout)을 사용하여 기울기를 x\boldsymbol{x}와 같은 형태인 n×1n \times 1 열벡터로 표기하기도 한다. 시험 답안을 작성할 때는 MML의 정의에 따라 기본적으로 행벡터(1×n1 \times n)로 서술하되, 필요 시 “분모 중심 표기법에서는 이를 전치한 열벡터 ∇f∈Rn×1\nabla f \in \mathbb{R}^{n \times 1}로 표현한다"고 덧붙여 주는 것이 안전하다.

3. 5.2.1 편미분의 기본 규칙

  • 합의 규칙: ∂∂x(f(x)+g(x))=∂f∂x+∂g∂x\frac{\partial}{\partial \boldsymbol{x}} (f(\boldsymbol{x}) + g(\boldsymbol{x})) = \frac{\partial f}{\partial \boldsymbol{x}} + \frac{\partial g}{\partial \boldsymbol{x}}
  • 곱의 규칙: ∂∂x(f(x)g(x))=g(x)∂f∂x+f(x)∂g∂x\frac{\partial}{\partial \boldsymbol{x}} (f(\boldsymbol{x}) g(\boldsymbol{x})) = g(\boldsymbol{x}) \frac{\partial f}{\partial \boldsymbol{x}} + f(\boldsymbol{x}) \frac{\partial g}{\partial \boldsymbol{x}} (스칼라 함수들의 곱)

4. 5.2.2 다변수 연쇄 법칙(Chain Rule)

함수 f(x1,x2)f(x_1, x_2)가 있고, 변수 x1(t)x_1(t)와 x2(t)x_2(t)가 또 다른 단일 변수 tt의 함수라고 하자. 이때 tt의 변화가 x1x_1과 x2x_2를 동시에 거쳐 ff에 전달되므로, 전체 변화율은 각 경로의 변화율을 모두 더한 것이 된다:

dfdt=∂f∂x1dx1dt+∂f∂x2dx2dt=[∂f∂x1∂f∂x2][dx1dtdx2dt]=dfdxdxdt\begin{aligned} \frac{df}{dt} &= \frac{\partial f}{\partial x_1} \frac{dx_1}{dt} + \frac{\partial f}{\partial x_2} \frac{dx_2}{dt} \\ &= \begin{bmatrix} \frac{\partial f}{\partial x_1} & \frac{\partial f}{\partial x_2} \end{bmatrix} \begin{bmatrix} \frac{dx_1}{dt} \\ \frac{dx_2}{dt} \end{bmatrix} = \frac{df}{d\boldsymbol{x}} \frac{d\boldsymbol{x}}{dt} \end{aligned}

행벡터 기울기와 열벡터 변화율의 행렬곱으로 정확히 표현된다!

손으로 풀어 보는 예제

[예제 2-1] 편미분과 기울기 벡터 계산 (교재 예제 5.7 변형)

함수 f(x1,x2)=x12x2+x1x23f(x_1, x_2) = x_1^2 x_2 + x_1 x_2^3에 대하여 편도함수들과 기울기 벡터를 구하고, 점 x=[21]\boldsymbol{x} = \begin{bmatrix} 2 \\ 1 \end{bmatrix}에서의 기울기를 계산하라.

  • 1단계 (x1x_1 편미분): x2x_2를 상수 취급한다. ∂f∂x1=∂∂x1(x12)⋅x2+∂∂x1(x1)⋅x23=2x1x2+1⋅x23=2x1x2+x23\frac{\partial f}{\partial x_1} = \frac{\partial}{\partial x_1}(x_1^2) \cdot x_2 + \frac{\partial}{\partial x_1}(x_1) \cdot x_2^3 = 2x_1 x_2 + 1 \cdot x_2^3 = 2x_1 x_2 + x_2^3
  • 2단계 (x2x_2 편미분): x1x_1을 상수 취급한다. ∂f∂x2=x12⋅∂∂x2(x2)+x1⋅∂∂x2(x23)=x12⋅1+x1⋅(3x22)=x12+3x1x22\frac{\partial f}{\partial x_2} = x_1^2 \cdot \frac{\partial}{\partial x_2}(x_2) + x_1 \cdot \frac{\partial}{\partial x_2}(x_2^3) = x_1^2 \cdot 1 + x_1 \cdot (3x_2^2) = x_1^2 + 3x_1 x_2^2
  • 3단계 (기울기 행벡터 조립): dfdx=[∂f∂x1∂f∂x2]=[2x1x2+x23x12+3x1x22]∈R1×2\frac{df}{d\boldsymbol{x}} = \begin{bmatrix} \frac{\partial f}{\partial x_1} & \frac{\partial f}{\partial x_2} \end{bmatrix} = \begin{bmatrix} 2x_1 x_2 + x_2^3 & x_1^2 + 3x_1 x_2^2 \end{bmatrix} \in \mathbb{R}^{1 \times 2}
  • 4단계 (점 (2,1)(2, 1) 대입):
    • ∂f∂x1(2,1)=2(2)(1)+13=4+1=5\frac{\partial f}{\partial x_1}(2, 1) = 2(2)(1) + 1^3 = 4 + 1 = 5
    • ∂f∂x2(2,1)=22+3(2)(12)=4+6=10\frac{\partial f}{\partial x_2}(2, 1) = 2^2 + 3(2)(1^2) = 4 + 6 = 10
    • 따라서 ∇xf(2,1)=[510]∈R1×2\nabla_{\boldsymbol{x}} f(2, 1) = \begin{bmatrix} 5 & 10 \end{bmatrix} \in \mathbb{R}^{1 \times 2}

[예제 2-2] 다변수 연쇄법칙 (교재 예제 5.8)

f(x1,x2)=x12+2x2f(x_1, x_2) = x_1^2 + 2x_2이고 x1(t)=sin⁡tx_1(t) = \sin t, x2(t)=cos⁡tx_2(t) = \cos t일 때, dfdt\frac{df}{dt}를 연쇄법칙으로 구하고 직접 대입법과 비교하라.

  • 1단계 (각각의 도함수 계산):
    • ∂f∂x1=2x1=2sin⁡t\frac{\partial f}{\partial x_1} = 2x_1 = 2\sin t
    • ∂f∂x2=2\frac{\partial f}{\partial x_2} = 2
    • dx1dt=cos⁡t\frac{dx_1}{dt} = \cos t, dx2dt=−sin⁡t\frac{dx_2}{dt} = -\sin t
  • 2단계 (연쇄법칙 적용): dfdt=∂f∂x1dx1dt+∂f∂x2dx2dt=(2sin⁡t)(cos⁡t)+(2)(−sin⁡t)=2sin⁡tcos⁡t−2sin⁡t=sin⁡(2t)−2sin⁡t\frac{df}{dt} = \frac{\partial f}{\partial x_1}\frac{dx_1}{dt} + \frac{\partial f}{\partial x_2}\frac{dx_2}{dt} = (2\sin t)(\cos t) + (2)(-\sin t) = 2\sin t \cos t - 2\sin t = \sin(2t) - 2\sin t
  • 3단계 (직접 대입법으로 검산): f(t)=(sin⁡t)2+2cos⁡t=sin⁡2t+2cos⁡tf(t) = (\sin t)^2 + 2\cos t = \sin^2 t + 2\cos t. 미분하면: dfdt=2sin⁡tcos⁡t+2(−sin⁡t)=2sin⁡tcos⁡t−2sin⁡t\frac{df}{dt} = 2\sin t \cos t + 2(-\sin t) = 2\sin t \cos t - 2\sin t 두 결과가 완전히 일치한다!

헷갈리는 점 / 자주 하는 실수

  • 다른 변수를 상수로 취급하지 못하는 실수: x1x_1으로 미분할 때 x2x_2를 보면서 ‘곱의 미분법을 써야 하나?’ 망설이는 경우가 있다. x1x_1 이외의 모든 기호는 숫자 3이나 5처럼 완전한 상수다.
  • 행벡터와 열벡터의 차원 불일치: 교재 관례에 따라 ∇f\nabla f는 1×n1 \times n 행벡터다. 이를 경사하강법 갱신식 xk+1=xk−γ∇f⊤\boldsymbol{x}_{k+1} = \boldsymbol{x}_k - \gamma \nabla f^\top에 넣을 때는 전치하여 n×1n \times 1 열벡터로 만들어 주어야 x\boldsymbol{x}와 차원이 맞는다.

5.3 벡터값 함수의 기울기(Gradients of Vector-Valued Functions, 교재 149~154쪽)

왜 필요한가 (직관)

입력도 벡터이고 출력도 벡터인 함수 f:Rn→Rm\boldsymbol{f}: \mathbb{R}^n \to \mathbb{R}^m는 머신러닝의 도처에 존재한다. 신경망의 한 계층(layer)은 입력 벡터 x∈Rn\boldsymbol{x} \in \mathbb{R}^n을 받아 은닉 상태 벡터 h∈Rm\boldsymbol{h} \in \mathbb{R}^m를 출력한다. 이때 nn개의 입력 변수 각각이 mm개의 출력 변수 각각에 미치는 모든 편미분 영향력을 빠짐없이 기록하려면 직사각형 형태의 행렬이 필요하다. 이 행렬이 바로 야코비안 행렬(Jacobian Matrix)이다.

정의와 성질

1. 야코비안 행렬(Jacobian)의 정의

함수 f:Rn→Rm\boldsymbol{f}: \mathbb{R}^n \to \mathbb{R}^m의 야코비안 행렬 J=dfdx∈Rm×nJ = \frac{d\boldsymbol{f}}{d\boldsymbol{x}} \in \mathbb{R}^{m \times n}은 모든 1계 편도함수를 모아 놓은 행렬이다:

J=df(x)dx=[∂f1∂x1∂f1∂x2⋯∂f1∂xn∂f2∂x1∂f2∂x2⋯∂f2∂xn⋮⋮⋱⋮∂fm∂x1∂fm∂x2⋯∂fm∂xn]∈Rm×n\begin{aligned} J &= \frac{d\boldsymbol{f}(\boldsymbol{x})}{d\boldsymbol{x}} \\ &= \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \frac{\partial f_1}{\partial x_2} & \cdots & \frac{\partial f_1}{\partial x_n} \\ \frac{\partial f_2}{\partial x_1} & \frac{\partial f_2}{\partial x_2} & \cdots & \frac{\partial f_2}{\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial f_m}{\partial x_1} & \frac{\partial f_m}{\partial x_2} & \cdots & \frac{\partial f_m}{\partial x_n} \end{bmatrix} \in \mathbb{R}^{m \times n} \end{aligned}
  • 행(Row)의 의미: ii번째 행은 출력의 ii번째 성분 fif_i에 대한 기울기 행벡터 ∇xfi∈R1×n\nabla_{\boldsymbol{x}} f_i \in \mathbb{R}^{1 \times n}이다. J=[∇xf1∇xf2⋮∇xfm]J = \begin{bmatrix} \nabla_{\boldsymbol{x}} f_1 \\ \nabla_{\boldsymbol{x}} f_2 \\ \vdots \\ \nabla_{\boldsymbol{x}} f_m \end{bmatrix}
  • 열(Column)의 의미: jj번째 열은 입력 변수 xjx_j로 전체 함수 벡터 f\boldsymbol{f}를 편미분한 열벡터 ∂f∂xj∈Rm×1\frac{\partial \boldsymbol{f}}{\partial x_j} \in \mathbb{R}^{m \times 1}이다.
  • 차원 규칙: (출력의 차원 mm) ×\times (입력의 차원 nn).

2. 다변수 연쇄법칙의 행렬곱 표현

두 벡터값 함수의 합성 x∈Rn→fy∈Rm→gz∈Rk\boldsymbol{x} \in \mathbb{R}^n \xrightarrow{\boldsymbol{f}} \boldsymbol{y} \in \mathbb{R}^m \xrightarrow{\boldsymbol{g}} \boldsymbol{z} \in \mathbb{R}^k에 대하여, 최종 출력 z\boldsymbol{z}의 입력 x\boldsymbol{x}에 대한 야코비안은 각 단계 야코비안의 단순 행렬곱이다:

dzdx=dgdydfdx∈Rk×n\frac{d\boldsymbol{z}}{d\boldsymbol{x}} = \frac{d\boldsymbol{g}}{d\boldsymbol{y}} \frac{d\boldsymbol{f}}{d\boldsymbol{x}} \in \mathbb{R}^{k \times n}
  • 차원 확인: dzdx⏟k×n=dgdy⏟k×m×dfdx⏟m×n\underbrace{\frac{d\boldsymbol{z}}{d\boldsymbol{x}}}_{k \times n} = \underbrace{\frac{d\boldsymbol{g}}{d\boldsymbol{y}}}_{k \times m} \times \underbrace{\frac{d\boldsymbol{f}}{d\boldsymbol{x}}}_{m \times n} 가운데 차원 mm이 자연스럽게 소거되면서 k×nk \times n이 완성된다. 분자 중심 표기법을 채택했기 때문에 가능한 우아한 결과다.

손으로 풀어 보는 예제

[예제 3-1] 아핀 변환(Affine Transformation)의 야코비안

f(x)=Ax+b\boldsymbol{f}(\boldsymbol{x}) = A\boldsymbol{x} + \boldsymbol{b} (단, A∈Rm×n,b∈RmA \in \mathbb{R}^{m \times n}, \boldsymbol{b} \in \mathbb{R}^m)의 야코비안이 AA임을 성분별로 증명하라.

  • 1단계 (성분별 표현): 출력 벡터의 ii번째 성분은 fi(x)=∑j=1nAijxj+bif_i(\boldsymbol{x}) = \sum_{j=1}^n A_{ij} x_j + b_i이다.
  • 2단계 (편미분 계산): 이를 입력 변수 xkx_k로 편미분하면: ∂fi∂xk=∂∂xk(Ai1x1+⋯+Aikxk+⋯+Ainxn+bi)=Aik\begin{aligned} \frac{\partial f_i}{\partial x_k} &= \frac{\partial}{\partial x_k} \bigl( A_{i1}x_1 + \dots + A_{ik}x_k \\ &\quad + \dots + A_{in}x_n + b_i \bigr) = A_{ik} \end{aligned}
  • 3단계 (행렬 구성): 야코비안의 (i,k)(i, k) 성분이 정확히 행렬 AA의 (i,k)(i, k) 성분 AikA_{ik}와 같다! 따라서: d(Ax+b)dx=A∈Rm×n\frac{d(A\boldsymbol{x} + \boldsymbol{b})}{d\boldsymbol{x}} = A \in \mathbb{R}^{m \times n} 일변수 함수 ax+bax+b를 미분하면 aa가 남듯이, 벡터 함수 Ax+bA\boldsymbol{x}+\boldsymbol{b}를 미분하면 변환 행렬 AA 자체가 남는다.

[예제 3-2] 극좌표 변환과 야코비안 행렬식

2차원 평면에서 극좌표 (r,θ)(r, \theta)를 직교좌표 (x,y)(x, y)로 변환하는 함수 f(r,θ)=[rcos⁡θrsin⁡θ]\boldsymbol{f}(r, \theta) = \begin{bmatrix} r \cos \theta \\ r \sin \theta \end{bmatrix}의 야코비안을 구하고, 그 행렬식(determinant)을 계산하라.

  • 1단계 (편도함수 계산):
    • f1(r,θ)=rcos⁡θ  ⟹  ∂f1∂r=cos⁡θ,∂f1∂θ=−rsin⁡θf_1(r, \theta) = r\cos\theta \implies \frac{\partial f_1}{\partial r} = \cos\theta, \quad \frac{\partial f_1}{\partial \theta} = -r\sin\theta
    • f2(r,θ)=rsin⁡θ  ⟹  ∂f2∂r=sin⁡θ,∂f2∂θ=rcos⁡θf_2(r, \theta) = r\sin\theta \implies \frac{\partial f_2}{\partial r} = \sin\theta, \quad \frac{\partial f_2}{\partial \theta} = r\cos\theta
  • 2단계 (야코비안 조립): J=[∂f1∂r∂f1∂θ∂f2∂r∂f2∂θ]=[cos⁡θ−rsin⁡θsin⁡θrcos⁡θ]∈R2×2J = \begin{bmatrix} \frac{\partial f_1}{\partial r} & \frac{\partial f_1}{\partial \theta} \\ \frac{\partial f_2}{\partial r} & \frac{\partial f_2}{\partial \theta} \end{bmatrix} = \begin{bmatrix} \cos\theta & -r\sin\theta \\ \sin\theta & r\cos\theta \end{bmatrix} \in \mathbb{R}^{2 \times 2}
  • 3단계 (행렬식 계산): det⁡(J)=(cos⁡θ)(rcos⁡θ)−(−rsin⁡θ)(sin⁡θ)=rcos⁡2θ+rsin⁡2θ=r(cos⁡2θ+sin⁡2θ)=r\det(J) = (\cos\theta)(r\cos\theta) - (-r\sin\theta)(\sin\theta) = r\cos^2\theta + r\sin^2\theta = r(\cos^2\theta + \sin^2\theta) = r 이 det⁡(J)=r\det(J) = r은 미적분학에서 2중적분 치환 시 미소 면적 요소가 dxdy=rdrdθdx dy = r dr d\theta가 되는 이유이며, 6장 확률분포의 변수 변환(Change of Variables) 공식에서 핵심적인 역할을 한다.

[예제 3-3] 합성함수의 야코비안 연쇄법칙 계산

x=[x1x2]→fy=[x1x2x1+x2]→gz=y12+3y2\boldsymbol{x} = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \xrightarrow{\boldsymbol{f}} \boldsymbol{y} = \begin{bmatrix} x_1 x_2 \\ x_1 + x_2 \end{bmatrix} \xrightarrow{g} z = y_1^2 + 3y_2 일 때, 점 x=[12]\boldsymbol{x} = \begin{bmatrix} 1 \\ 2 \end{bmatrix}에서 dzdx\frac{dz}{d\boldsymbol{x}}를 연쇄법칙으로 구하라.

  • 1단계 (중간값 계산): x=[12]\boldsymbol{x} = \begin{bmatrix} 1 \\ 2 \end{bmatrix} 대입   ⟹  y1=1×2=2,y2=1+2=3\implies y_1 = 1 \times 2 = 2, \quad y_2 = 1 + 2 = 3.
  • 2단계 (JfJ_{\boldsymbol{f}} 계산): Jf=[∂(x1x2)∂x1∂(x1x2)∂x2∂(x1+x2)∂x1∂(x1+x2)∂x2]=[x2x111]  ⟹  Jf(1,2)=[2111]∈R2×2J_{\boldsymbol{f}} = \begin{bmatrix} \frac{\partial(x_1 x_2)}{\partial x_1} & \frac{\partial(x_1 x_2)}{\partial x_2} \\ \frac{\partial(x_1 + x_2)}{\partial x_1} & \frac{\partial(x_1 + x_2)}{\partial x_2} \end{bmatrix} = \begin{bmatrix} x_2 & x_1 \\ 1 & 1 \end{bmatrix} \implies J_{\boldsymbol{f}}(1, 2) = \begin{bmatrix} 2 & 1 \\ 1 & 1 \end{bmatrix} \in \mathbb{R}^{2 \times 2}
  • 3단계 (JgJ_g 계산): zz는 스칼라이므로 JgJ_g는 1×21 \times 2 행벡터다: Jg=[∂z∂y1∂z∂y2]=[2y13]  ⟹  Jg(2,3)=[2(2)3]=[43]∈R1×2J_g = \begin{bmatrix} \frac{\partial z}{\partial y_1} & \frac{\partial z}{\partial y_2} \end{bmatrix} = \begin{bmatrix} 2y_1 & 3 \end{bmatrix} \implies J_g(2, 3) = \begin{bmatrix} 2(2) & 3 \end{bmatrix} = \begin{bmatrix} 4 & 3 \end{bmatrix} \in \mathbb{R}^{1 \times 2}
  • 4단계 (연쇄법칙 행렬곱): dzdx=Jg⋅Jf=[43][2111]=[4(2)+3(1)4(1)+3(1)]=[8+34+3]=[117]∈R1×2\frac{dz}{d\boldsymbol{x}} = J_g \cdot J_{\boldsymbol{f}} = \begin{bmatrix} 4 & 3 \end{bmatrix} \begin{bmatrix} 2 & 1 \\ 1 & 1 \end{bmatrix} = \begin{bmatrix} 4(2) + 3(1) & 4(1) + 3(1) \end{bmatrix} = \begin{bmatrix} 8 + 3 & 4 + 3 \end{bmatrix} = \begin{bmatrix} 11 & 7 \end{bmatrix} \in \mathbb{R}^{1 \times 2}
  • 5단계 (직접 대입 검산): z=(x1x2)2+3(x1+x2)=x12x22+3x1+3x2z = (x_1 x_2)^2 + 3(x_1 + x_2) = x_1^2 x_2^2 + 3x_1 + 3x_2. ∂z∂x1=2x1x22+3  ⟹  2(1)(4)+3=11\frac{\partial z}{\partial x_1} = 2x_1 x_2^2 + 3 \implies 2(1)(4) + 3 = 11. ∂z∂x2=2x12x2+3  ⟹  2(1)(2)+3=7\frac{\partial z}{\partial x_2} = 2x_1^2 x_2 + 3 \implies 2(1)(2) + 3 = 7. [117]\begin{bmatrix} 11 & 7 \end{bmatrix}로 정확히 일치한다!

헷갈리는 점 / 자주 하는 실수

  • 야코비안의 차원 반대 표기: 야코비안 행렬의 행 수는 ‘출력의 개수(mm)’, 열 수는 ‘입력의 개수(nn)‘이다. 이를 n×mn \times m으로 잘못 쓰면 연쇄법칙 행렬곱의 안쪽 차원이 맞지 않아 계산이 완전히 불가능해진다.

5.4 행렬의 기울기(Gradients of Matrices, 교재 155~157쪽)

왜 필요한가 (직관)

신경망의 가중치 WW나 다변량 가우시안의 공분산 행렬 Σ\Sigma는 벡터가 아니라 2차원 격자 구조를 가진 행렬이다. 손실 함수 LL을 최소화하기 위해서는 “행렬의 각 성분 WijW_{ij}를 어떻게 바꾸어야 하는가?“를 계산해야 한다. 나아가 행렬 입력이 벡터 출력을 내거나, 행렬이 행렬로 변환되는 복잡한 함수를 다룰 때의 미분 체계를 이해해야 한다.

정의와 성질

1. 행렬을 벡터로 미분: 3차원 텐서 야코비안

행렬 A∈Rm×nA \in \mathbb{R}^{m \times n}의 각 원소가 벡터 x∈Rp\boldsymbol{x} \in \mathbb{R}^p의 함수일 때, dAdx\frac{dA}{d\boldsymbol{x}}는 3차원 배열(3rd-order tensor)이 된다:

dAdx∈Rm×n×p,(dAdx)ijk=∂Aij∂xk\frac{dA}{d\boldsymbol{x}} \in \mathbb{R}^{m \times n \times p}, \quad \left(\frac{dA}{d\boldsymbol{x}}\right)_{ijk} = \frac{\partial A_{ij}}{\partial x_k}

교재 그림 5.7처럼, 각 입력 성분 xkx_k에 대한 편미분 편평면 ∂A∂xk∈Rm×n\frac{\partial A}{\partial x_k} \in \mathbb{R}^{m \times n}이 pp장 겹쳐져 있는 직육면체 모양의 텐서로 시각화할 수 있다.

2. 스칼라를 행렬로 미분

머신러닝에서 가장 흔히 마주치는 상황은 스칼라 손실 f:Rm×n→Rf: \mathbb{R}^{m \times n} \to \mathbb{R}을 행렬 X∈Rm×nX \in \mathbb{R}^{m \times n}로 미분하는 것이다.

∂f∂X∈Rm×n,(∂f∂X)ij=∂f∂Xij\frac{\partial f}{\partial X} \in \mathbb{R}^{m \times n}, \quad \left(\frac{\partial f}{\partial X}\right)_{ij} = \frac{\partial f}{\partial X_{ij}}

즉, 원래 행렬 XX와 동일한 모양(m×nm \times n)의 격자 안에 각 성분에 대한 편미분 값을 채워 넣는다.

3. 벡터화(Vectorization, vec\text{vec}) 기법

텐서 연산은 일반적인 2차원 행렬 대수에 비해 직관적이지 못하다. 이를 해결하는 가장 표준적인 수학적 방법은 m×nm \times n 행렬 AA의 열들을 차례로 세로로 길게 이어붙여 mn×1mn \times 1 크기의 거대한 열벡터 vec(A)\text{vec}(A)로 만드는 것이다.

  • 행렬 A=[a11a12a21a22]A = \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} 이면 vec(A)=[a11a21a12a22]∈R4×1\text{vec}(A) = \begin{bmatrix} a_{11} \\ a_{21} \\ a_{12} \\ a_{22} \end{bmatrix} \in \mathbb{R}^{4 \times 1}.
  • 벡터화를 적용하면 모든 행렬 미분 문제를 5.3절의 표준 벡터 야코비안 문제(Rmn→Rkl\mathbb{R}^{mn} \to \mathbb{R}^{kl})로 환원하여 연쇄법칙을 적용할 수 있다.

손으로 풀어 보는 예제

[예제 4-1] 스칼라 함수에 대한 행렬 미분 성분 계산

A=[1234]A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, X=[x11x12x21x22]X = \begin{bmatrix} x_{11} & x_{12} \\ x_{21} & x_{22} \end{bmatrix}일 때, f(X)=tr(AX)f(X) = \text{tr}(AX)의 도함수 ∂f∂X\frac{\partial f}{\partial X}를 성분별로 직접 구하라.

  • 1단계 (행렬곱 AXAX 계산): AX=[1234][x11x12x21x22]=[1x11+2x211x12+2x223x11+4x213x12+4x22]AX = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \begin{bmatrix} x_{11} & x_{12} \\ x_{21} & x_{22} \end{bmatrix} = \begin{bmatrix} 1x_{11} + 2x_{21} & 1x_{12} + 2x_{22} \\ 3x_{11} + 4x_{21} & 3x_{12} + 4x_{22} \end{bmatrix}
  • 2단계 (대각합 tr(AX)\text{tr}(AX) 계산): 대각 성분들의 합을 구한다: f(X)=tr(AX)=(x11+2x21)+(3x12+4x22)=x11+3x12+2x21+4x22f(X) = \text{tr}(AX) = (x_{11} + 2x_{21}) + (3x_{12} + 4x_{22}) = x_{11} + 3x_{12} + 2x_{21} + 4x_{22}
  • 3단계 (각 성분별 편미분):
    • ∂f∂x11=1\frac{\partial f}{\partial x_{11}} = 1
    • ∂f∂x12=3\frac{\partial f}{\partial x_{12}} = 3
    • ∂f∂x21=2\frac{\partial f}{\partial x_{21}} = 2
    • ∂f∂x22=4\frac{\partial f}{\partial x_{22}} = 4
  • 4단계 (행렬 조립): ∂f∂X=[∂f∂x11∂f∂x12∂f∂x21∂f∂x22]=[1324]\frac{\partial f}{\partial X} = \begin{bmatrix} \frac{\partial f}{\partial x_{11}} & \frac{\partial f}{\partial x_{12}} \\ \frac{\partial f}{\partial x_{21}} & \frac{\partial f}{\partial x_{22}} \end{bmatrix} = \begin{bmatrix} 1 & 3 \\ 2 & 4 \end{bmatrix} 이 결과는 A=[1234]A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}의 전치행렬인 A⊤=[1324]A^\top = \begin{bmatrix} 1 & 3 \\ 2 & 4 \end{bmatrix}와 정확히 같다! 따라서 ∂tr(AX)∂X=A⊤\frac{\partial \text{tr}(AX)}{\partial X} = A^\top가 성립함을 손계산으로 직접 확인하였다.

헷갈리는 점 / 자주 하는 실수

  • 전치(⊤^\top)의 출현: tr(AX)\text{tr}(AX)를 XX로 미분하면 AA가 아니라 A⊤A^\top가 나온다. 행렬 대각합의 성분 인덱스 결합 구조 때문에 전치가 필연적으로 발생하므로 공식을 암기할 때 전치 부착 여부를 반드시 체크해야 한다.

5.5 기울기 계산을 위한 유용한 항등식(Useful Identities for Computing Gradients, 교재 158쪽)

왜 필요한가 (직관)

복잡한 머신러닝 논문의 수식(예: 선형 회귀의 정규방정식, 가우시안 우도 극대화, 칼만 필터 게인 유도)을 전개할 때 매번 원소 단위(xijx_{ij})로 풀어서 합기호(∑\sum)를 전개하는 것은 지나치게 비효율적이고 실수하기 쉽다. 선형대수학의 검증된 행렬 미분 항등식(Matrix Calculus Identities)을 활용하면 복잡한 다변수 목적함수의 최적화 해를 단 서너 줄 만에 깔끔하게 유도할 수 있다.

정의와 성질: 핵심 10대 항등식 및 차원(Shape) 완전 분석

교재 식 (5.99)(5.108)의 항등식(16번, 10번)과, 교재의 일반형(대각합·행렬식 식)을 f(X)=Xf(X)=X 같은 경우로 특수화한 자주 쓰는 공식(7~9번, 교재 밖 보충)을 차원 규칙과 함께 정리한다:

번호항등식 (MML 교재 형태)조건 및 차원 (Shape 확인)비고 / 머신러닝 활용처
1∂(a⊤x)∂x=a⊤\frac{\partial (\boldsymbol{a}^\top \boldsymbol{x})}{\partial \boldsymbol{x}} = \boldsymbol{a}^\topa,x∈Rn\boldsymbol{a}, \boldsymbol{x} \in \mathbb{R}^n, 결과 R1×n\mathbb{R}^{1 \times n}선형 모델 예측식 미분
2∂(x⊤a)∂x=a⊤\frac{\partial (\boldsymbol{x}^\top \boldsymbol{a})}{\partial \boldsymbol{x}} = \boldsymbol{a}^\topa,x∈Rn\boldsymbol{a}, \boldsymbol{x} \in \mathbb{R}^n, 결과 R1×n\mathbb{R}^{1 \times n}x⊤a=a⊤x\boldsymbol{x}^\top \boldsymbol{a} = \boldsymbol{a}^\top \boldsymbol{x} (스칼라 대칭)
3∂(x⊤Bx)∂x=x⊤(B+B⊤)\frac{\partial (\boldsymbol{x}^\top B \boldsymbol{x})}{\partial \boldsymbol{x}} = \boldsymbol{x}^\top (B + B^\top)x∈Rn,B∈Rn×n\boldsymbol{x} \in \mathbb{R}^n, B \in \mathbb{R}^{n \times n}, 결과 R1×n\mathbb{R}^{1 \times n}2차 형식 미분. BB가 대칭이면 2x⊤B2\boldsymbol{x}^\top B
4∂∂s(x−As)⊤W(x−As)=−2(x−As)⊤WA\frac{\partial}{\partial \boldsymbol{s}} (\boldsymbol{x} - A\boldsymbol{s})^\top W (\boldsymbol{x} - A\boldsymbol{s}) = -2(\boldsymbol{x} - A\boldsymbol{s})^\top W AW=W⊤W = W^\top, 결과 R1×k\mathbb{R}^{1 \times k}가중 최소제곱법(WLS) 손실함수 미분
5∂(a⊤Xb)∂X=ab⊤\frac{\partial (\boldsymbol{a}^\top X \boldsymbol{b})}{\partial X} = \boldsymbol{a} \boldsymbol{b}^\topa∈Rm,b∈Rn,X∈Rm×n\boldsymbol{a} \in \mathbb{R}^m, \boldsymbol{b} \in \mathbb{R}^n, X \in \mathbb{R}^{m \times n}, 결과 Rm×n\mathbb{R}^{m \times n}쌍선형 형식(Bilinear form) 미분
6∂(a⊤X−1b)∂X=−(X−1)⊤ab⊤(X−1)⊤\frac{\partial (\boldsymbol{a}^\top X^{-1} \boldsymbol{b})}{\partial X} = -(X^{-1})^\top \boldsymbol{a} \boldsymbol{b}^\top (X^{-1})^\topX∈Rm×mX \in \mathbb{R}^{m \times m} 가역행렬마할라노비스 거리 및 가우시안 공분산 미분
7∂tr(X)∂X=I\frac{\partial \text{tr}(X)}{\partial X} = IX∈Rn×nX \in \mathbb{R}^{n \times n}, 결과 Rn×n\mathbb{R}^{n \times n}대각합의 기본 미분
8∂tr(AXB)∂X=A⊤B⊤\frac{\partial \text{tr}(AXB)}{\partial X} = A^\top B^\top크기 정합하는 행렬들, 결과 XX와 동일 크기행렬 샌드위치 대각합 미분
9∂det⁡(X)∂X=det⁡(X)(X−1)⊤\frac{\partial \det(X)}{\partial X} = \det(X) (X^{-1})^\topJacobi 공식. XX 가역행렬가우시안 정규화 상수 미분
10∂X−1∂t=−X−1∂X∂tX−1\frac{\partial X^{-1}}{\partial t} = -X^{-1} \frac{\partial X}{\partial t} X^{-1}X(t)X(t) 가역행렬 경로역행렬의 도함수 (식 5.102)

[차원 정합성 자가 검증 팁] 항등식 4번을 보자:

  • x∈RD,s∈RK,A∈RD×K,W∈RD×D\boldsymbol{x} \in \mathbb{R}^D, \boldsymbol{s} \in \mathbb{R}^K, A \in \mathbb{R}^{D \times K}, W \in \mathbb{R}^{D \times D}.
  • 미분 대상 스칼라를 K×1K \times 1 열벡터 s\boldsymbol{s}로 미분하므로 MML 분자 표기법에 의해 결과는 1×K1 \times K 행벡터가 나와야 한다.
  • 우변의 차원: (x−As)⊤⏟1×D×W⏟D×D×A⏟D×K=1×K\underbrace{(\boldsymbol{x} - A\boldsymbol{s})^\top}_{1 \times D} \times \underbrace{W}_{D \times D} \times \underbrace{A}_{D \times K} = 1 \times K. 차원이 정확히 일치한다! 시험장에서 수식이 헷갈릴 때는 이처럼 양변의 shape를 맞춰보면 전치 실수를 대부분 잡아낼 수 있다.

손으로 풀어 보는 예제

[예제 5-1] 2차 형식의 기울기 검산

행렬 B=[2135]B = \begin{bmatrix} 2 & 1 \\ 3 & 5 \end{bmatrix} (비대칭 행렬)에 대하여 f(x)=x⊤Bxf(\boldsymbol{x}) = \boldsymbol{x}^\top B \boldsymbol{x}의 기울기를 항등식과 성분 전개 두 가지 방식으로 각각 구하라.

  • 방식 1 (항등식 3번 공식 적용): B⊤=[2315]B^\top = \begin{bmatrix} 2 & 3 \\ 1 & 5 \end{bmatrix}이므로, B+B⊤=[2+21+33+15+5]=[44410]B + B^\top = \begin{bmatrix} 2+2 & 1+3 \\ 3+1 & 5+5 \end{bmatrix} = \begin{bmatrix} 4 & 4 \\ 4 & 10 \end{bmatrix} 공식 dfdx=x⊤(B+B⊤)\frac{df}{d\boldsymbol{x}} = \boldsymbol{x}^\top (B + B^\top)을 적용하면: dfdx=[x1x2][44410]=[4x1+4x24x1+10x2]∈R1×2\frac{df}{d\boldsymbol{x}} = \begin{bmatrix} x_1 & x_2 \end{bmatrix} \begin{bmatrix} 4 & 4 \\ 4 & 10 \end{bmatrix} = \begin{bmatrix} 4x_1 + 4x_2 & 4x_1 + 10x_2 \end{bmatrix} \in \mathbb{R}^{1 \times 2}
  • 방식 2 (성분 전개법): f(x)=[x1x2][2x1+x23x1+5x2]=x1(2x1+x2)+x2(3x1+5x2)=2x12+4x1x2+5x22f(\boldsymbol{x}) = \begin{bmatrix} x_1 & x_2 \end{bmatrix} \begin{bmatrix} 2x_1 + x_2 \\ 3x_1 + 5x_2 \end{bmatrix} = x_1(2x_1 + x_2) + x_2(3x_1 + 5x_2) = 2x_1^2 + 4x_1 x_2 + 5x_2^2 각 변수로 편미분:
    • ∂f∂x1=4x1+4x2\frac{\partial f}{\partial x_1} = 4x_1 + 4x_2
    • ∂f∂x2=4x1+10x2\frac{\partial f}{\partial x_2} = 4x_1 + 10x_2 기울기 행벡터 조립: dfdx=[4x1+4x24x1+10x2]\frac{df}{d\boldsymbol{x}} = \begin{bmatrix} 4x_1 + 4x_2 & 4x_1 + 10x_2 \end{bmatrix} 두 방식의 결과가 완전히 일치한다!

헷갈리는 점 / 자주 하는 실수

  • 행렬의 대칭성 확인 소홀: x⊤Bx\boldsymbol{x}^\top B \boldsymbol{x}를 미분할 때 BB가 대칭이라는 보장이 없는데 무턱대고 2x⊤B2\boldsymbol{x}^\top B라고 쓰면 감점된다. 반드시 x⊤(B+B⊤)\boldsymbol{x}^\top (B + B^\top)로 적거나, “BB가 대칭행렬이므로 B+B⊤=2BB+B^\top = 2B“라는 조건을 명시해야 한다.

5.6 역전파와 자동 미분(Backpropagation and Automatic Differentiation, 교재 159~164쪽)

왜 필요한가 (직관)

신경망 학습의 본질은 수억 개의 가중치 매개변수에 대해 손실 함수 LL의 기울기를 구하는 것이다.

  • 수치 미분(Numerical differentiation): f(x+h)−f(x)h\frac{f(x+h)-f(x)}{h}로 구하려면 매개변수가 1억 개일 때 네트워크 순전파를 1억 번 실행해야 하므로 실시간 학습이 완전히 불가능하다 (O(D)O(D) 연산량).
  • 기호 미분(Symbolic differentiation): 연쇄법칙 수식을 수학적으로 전부 전개하면 공통 부분식이 중복 생성되어 수식의 길이가 지수적으로 폭발(Expression swell)한다.
  • 자동 미분(Automatic differentiation)과 역전파(Backpropagation): 계산 그래프 상에서 중간 계산값들을 한 번 메모리에 저장해 두고, 연쇄법칙의 결합법칙(associativity)을 역방향으로 묶음으로써 역방향 패스 한 번(순전파의 상수배 정도 비용)으로 모든 매개변수의 정확한 기울기를 계산해 낸다.

정의와 성질

1. 5.6.1 심층 신경망(Deep Network)에서의 연쇄법칙

KK개의 층을 가진 인공신경망의 순전파는 다단계 함수 합성이다:

y=(fK∘fK−1∘⋯∘f1)(x)\boldsymbol{y} = (\boldsymbol{f}_K \circ \boldsymbol{f}_{K-1} \circ \cdots \circ \boldsymbol{f}_1)(\boldsymbol{x})

각 층의 연산은 선형 변환 후 활성화 함수 σ\sigma 적용이다:

f0:=x,fi:=σi(Ai−1fi−1+bi−1),i=1,…,K\begin{gathered} \boldsymbol{f}_0 := \boldsymbol{x}, \\ \boldsymbol{f}_i := \sigma_i(A_{i-1}\boldsymbol{f}_{i-1} + \boldsymbol{b}_{i-1}), \\ i = 1, \dots, K \end{gathered}

제곱 오차 손실 L=∥y−fK∥2L = \|\boldsymbol{y} - \boldsymbol{f}_K\|^2에 대해 ii번째 층의 매개변수 θi={Ai,bi}\theta_i = \{A_i, \boldsymbol{b}_i\}에 대한 편미분은 연쇄법칙에 의해:

∂L∂θi=∂L∂fK∂fK∂fK−1⋯∂fi+2∂fi+1⏟이미 계산된 오차 전달 항∂fi+1∂θi\frac{\partial L}{\partial \theta_i} = \underbrace{\frac{\partial L}{\partial \boldsymbol{f}_K} \frac{\partial \boldsymbol{f}_K}{\partial \boldsymbol{f}_{K-1}} \cdots \frac{\partial \boldsymbol{f}_{i+2}}{\partial \boldsymbol{f}_{i+1}}}_{\text{이미 계산된 오차 전달 항}} \frac{\partial \boldsymbol{f}_{i+1}}{\partial \theta_i}

중괄호로 묶은 앞부분(출력 쪽에서부터 fi+1\boldsymbol{f}_{i+1}까지의 곱)은 한 층 뒤의 매개변수 θi+1\theta_{i+1}에 대한 기울기를 구할 때 이미 거의 다 계산했다. θi+1\theta_{i+1}의 기울기에는 ∂L∂fK⋯∂fi+3∂fi+2\frac{\partial L}{\partial \boldsymbol{f}_K}\cdots\frac{\partial \boldsymbol{f}_{i+3}}{\partial \boldsymbol{f}_{i+2}}가 들어 있으므로, 여기에 ∂fi+2∂fi+1\frac{\partial \boldsymbol{f}_{i+2}}{\partial \boldsymbol{f}_{i+1}} 하나만 더 곱하면 중괄호 부분이 된다. 그래서 출력 쪽에서 입력 쪽으로 가면서 이 곱을 저장해 두고 한 번씩만 늘려 가면, 층마다 처음부터 다시 곱할 필요가 없다. 이것이 역전파다.

2. 5.6.2 자동 미분: Forward Mode vs Reverse Mode의 대조

연쇄법칙 dydx=JKJK−1⋯J2J1\frac{dy}{dx} = J_K J_{K-1} \cdots J_2 J_1에서 행렬곱은 결합법칙(Associative property)이 성립하므로 괄호를 어디에 묶느냐에 따라 계산 비용이 크게 달라진다.

flowchart LR
    subgraph ForwardMode["순방향 모드 (Forward Mode): 우측 우선 결합"]
        direction LR
        FM1["J1"] --> FM2["J2 * J1"] --> FM3["J3 * (J2 * J1)"]
    end
    subgraph ReverseMode["역방향 모드 (Reverse Mode / 역전파): 좌측 우선 결합"]
        direction RL
        RM3["(JK * JK-1) * ..."] <-- RM2["JK * JK-1"] <-- RM1["JK"]
    end
  • 순방향 모드(Forward Mode): dydx=(JK(…(J2(J1))))\frac{dy}{dx} = \Big( J_K \Big( \dots \big( J_2 (J_1) \big) \Big) \Big) 데이터가 흐르는 방향(입력 →\to 출력)과 동일하게 기울기를 누적한다.
    • 장점: 중간 상태를 메모리에 보관할 필요가 없다.
    • 적합한 경우: 입력의 차원 NN이 매우 작고 출력의 차원 MM이 매우 큰 경우 (N≪MN \ll M).
  • 역방향 모드(Reverse Mode / Backpropagation): dydx=((((JK)JK−1)…)J1)\frac{dy}{dx} = \Big( \Big( \big( (J_K) J_{K-1} \big) \dots \Big) J_1 \Big) 손실값 출력에서 입력 방향으로 거꾸로 기울기를 역전파한다.
    • 적합한 경우: 출력은 스칼라 손실(M=1M=1)이고 파라미터/입력이 수없이 많은 경우 (N≫MN \gg M).
    • 압도적인 계산 효율의 비밀: 맨 처음 시작하는 JK=∂L∂fKJ_K = \frac{\partial L}{\partial \boldsymbol{f}_K}가 1×D1 \times D 행벡터다! 따라서 이후의 모든 곱셈은 (행벡터 1×D1 \times D) ×\times (야코비안 행렬 D×DD \times D) = (행벡터 1×D1 \times D) 형태의 가벼운 벡터-행렬 곱셈이 된다. 행렬-행렬 곱셈(층마다 O(D3)O(D^3)) 대신 벡터-행렬 곱셈(층마다 O(D2)O(D^2))만 하면 되어 훨씬 싸다.

손으로 풀어 보는 예제

[예제 6-1] 2층 인공신경망의 손계산 역전파

  • 네트워크 구조:
    • 입력 x=[10.5]∈R2\boldsymbol{x} = \begin{bmatrix} 1 \\ 0.5 \end{bmatrix} \in \mathbb{R}^2
    • 1층: 가중치 W=[12−11]W = \begin{bmatrix} 1 & 2 \\ -1 & 1 \end{bmatrix}, 편향 b=[00]\boldsymbol{b} = \begin{bmatrix} 0 \\ 0 \end{bmatrix}, 활성화 σ(z)=z\sigma(z) = z (선형)
    • 2층: 가중치 v=[2−1]∈R2\boldsymbol{v} = \begin{bmatrix} 2 \\ -1 \end{bmatrix} \in \mathbb{R}^2, 출력 y^=v⊤h\hat{y} = \boldsymbol{v}^\top \boldsymbol{h} (스칼라)
    • 참값 y=3y = 3, 손실 함수 L=12(y^−y)2L = \frac{1}{2}(\hat{y} - y)^2
  • 1단계 (순전파 Forward Pass):
    • 1층 은닉 상태 h=Wx+b=[12−11][10.5]=[1(1)+2(0.5)−1(1)+1(0.5)]=[2−0.5]\boldsymbol{h} = W\boldsymbol{x} + \boldsymbol{b} = \begin{bmatrix} 1 & 2 \\ -1 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 0.5 \end{bmatrix} = \begin{bmatrix} 1(1) + 2(0.5) \\ -1(1) + 1(0.5) \end{bmatrix} = \begin{bmatrix} 2 \\ -0.5 \end{bmatrix}
    • 2층 예측값 y^=v⊤h=[2−1][2−0.5]=2(2)+(−1)(−0.5)=4+0.5=4.5\hat{y} = \boldsymbol{v}^\top \boldsymbol{h} = \begin{bmatrix} 2 & -1 \end{bmatrix} \begin{bmatrix} 2 \\ -0.5 \end{bmatrix} = 2(2) + (-1)(-0.5) = 4 + 0.5 = 4.5
    • 손실값 L=12(4.5−3)2=12(1.5)2=1.125L = \frac{1}{2}(4.5 - 3)^2 = \frac{1}{2}(1.5)^2 = 1.125
  • 2단계 (역전파 Backward Pass):
    • 출력 오차: δy=∂L∂y^=(y^−y)=4.5−3=1.5\delta_y = \frac{\partial L}{\partial \hat{y}} = (\hat{y} - y) = 4.5 - 3 = 1.5 (스칼라)
    • 2층 가중치 기울기: ∂L∂v=δy⋅h⊤=1.5×[2−0.5]=[3.0−0.75]∈R1×2\frac{\partial L}{\partial \boldsymbol{v}} = \delta_y \cdot \boldsymbol{h}^\top = 1.5 \times \begin{bmatrix} 2 & -0.5 \end{bmatrix} = \begin{bmatrix} 3.0 & -0.75 \end{bmatrix} \in \mathbb{R}^{1 \times 2}
    • 은닉층 오차 역전파: δh=∂L∂h=δy⋅v⊤=1.5×[2−1]=[3.0−1.5]∈R1×2\delta_{\boldsymbol{h}} = \frac{\partial L}{\partial \boldsymbol{h}} = \delta_y \cdot \boldsymbol{v}^\top = 1.5 \times \begin{bmatrix} 2 & -1 \end{bmatrix} = \begin{bmatrix} 3.0 & -1.5 \end{bmatrix} \in \mathbb{R}^{1 \times 2}
    • 1층 가중치 기울기: ∂L∂W=δh⊤x⊤=[3.0−1.5][10.5]=[3.0(1)3.0(0.5)−1.5(1)−1.5(0.5)]=[3.01.5−1.5−0.75]∈R2×2\frac{\partial L}{\partial W} = \delta_{\boldsymbol{h}}^\top \boldsymbol{x}^\top = \begin{bmatrix} 3.0 \\ -1.5 \end{bmatrix} \begin{bmatrix} 1 & 0.5 \end{bmatrix} = \begin{bmatrix} 3.0(1) & 3.0(0.5) \\ -1.5(1) & -1.5(0.5) \end{bmatrix} = \begin{bmatrix} 3.0 & 1.5 \\ -1.5 & -0.75 \end{bmatrix} \in \mathbb{R}^{2 \times 2} 단 세 단계의 행렬 연산으로 모든 파라미터(v,W\boldsymbol{v}, W)의 기울기가 정확히 유도되었다.

헷갈리는 점 / 자주 하는 실수

  • 순전파 활성화 값의 메모리 보존 필요성: 역전파에서 가중치 기울기를 구할 때 순전파 단계에서 계산되었던 은닉 활성화 값 h\boldsymbol{h}가 반드시 곱해진다. 따라서 순전파 시 중간 텐서들을 메모리에 들고 있어야 하며, 이것이 딥러닝 학습 시 GPU 메모리가 많이 소모되는 근본적인 이유다.

5.7 고계 도함수(Higher-Order Derivatives, 교재 164~165쪽)

왜 필요한가 (직관)

1계 도함수인 기울기(gradient)는 “어느 방향으로 가야 함숫값이 내려가는가?“만 알려줄 뿐, “그 골짜기가 완만한가, 가파른가?“하는 곡률(Curvature)은 전혀 알려주지 못한다. 만약 곡률을 안다면, 경사가 완만한 곳에서는 큰 보폭으로 성큼성큼 걷고, 곡률이 심해 요동치는 곳에서는 조심스럽게 보폭을 줄일 수 있다(7장 뉴턴 방법). 또한 어떤 지점에서 기울기가 0이 되었을 때, 이곳이 진짜 바닥(극소)인지, 봉우리(극대)인지, 아니면 말안장처럼 한쪽은 올라가고 한쪽은 내려가는 함정(안장점, Saddle point)인지 감별하기 위해 2계 편도함수가 필수적이다.

정의와 성질

1. 헤시안 행렬(Hessian Matrix)의 정의

2번 미분 가능한 다변수 스칼라 함수 f:Rn→Rf: \mathbb{R}^n \to \mathbb{R}에 대하여, 모든 2계 편도함수를 모은 n×nn \times n 정방행렬을 헤시안 행렬(Hessian Matrix)이라고 부른다:

H=∇x2f=[∂2f∂x12∂2f∂x1∂x2⋯∂2f∂x1∂xn∂2f∂x2∂x1∂2f∂x22⋯∂2f∂x2∂xn⋮⋮⋱⋮∂2f∂xn∂x1∂2f∂xn∂x2⋯∂2f∂xn2]∈Rn×n\begin{aligned} H &= \nabla_{\boldsymbol{x}}^2 f \\ &= \begin{bmatrix} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1 \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_1 \partial x_n} \\ \frac{\partial^2 f}{\partial x_2 \partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \cdots & \frac{\partial^2 f}{\partial x_2 \partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_n \partial x_1} & \frac{\partial^2 f}{\partial x_n \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_n^2} \end{bmatrix} \in \mathbb{R}^{n \times n} \end{aligned}

2. 슈와르츠 정리(Schwarz’s Theorem / Clairaut’s Theorem)

함수 ff가 2계 연속 미분 가능(twice continuously differentiable)하다면, 편미분을 수행하는 순서는 결과에 영향을 주지 않는다:

∂2f∂xi∂xj=∂2f∂xj∂xi\frac{\partial^2 f}{\partial x_i \partial x_j} = \frac{\partial^2 f}{\partial x_j \partial x_i}

따라서 헤시안 행렬은 항상 대칭행렬(Symmetric Matrix, H=H⊤H = H^\top)이다!

3. 2계 충분조건과 임계점 판정법

기울기가 0인 점(∇f(x∗)=0\nabla f(\boldsymbol{x}^*) = \mathbf{0}, 임계점/정상점)에서 헤시안 H(x∗)H(\boldsymbol{x}^*)의 고유값(eigenvalue) λi\lambda_i들의 부호로 극값을 판정한다:

  1. 모든 고유값 λi>0\lambda_i > 0 (HH가 양의 정부호, Positive Definite):
    • 모든 방향으로 위로 볼록한 골짜기 형태이다   ⟹  \implies 엄격한 국소 극소점(Strict Local Minimum).
  2. 모든 고유값 λi<0\lambda_i < 0 (HH가 음의 정부호, Negative Definite):
    • 모든 방향으로 아래로 굽은 봉우리 형태이다   ⟹  \implies 엄격한 국소 극대점(Strict Local Maximum).
  3. 양의 고유값과 음의 고유값이 공존 (HH가 부정부호, Indefinite):
    • 어떤 방향으로는 극소지만 다른 방향으로는 극대이다   ⟹  \implies 안장점(Saddle Point).

손으로 풀어 보는 예제

[예제 7-1] 임계점 탐색과 헤시안 고유값 판정

함수 f(x1,x2)=x13−3x1+x22f(x_1, x_2) = x_1^3 - 3x_1 + x_2^2의 모든 임계점을 찾고, 헤시안 행렬을 통해 극소, 극대, 안장점 여부를 판정하라.

  • 1단계 (기울기가 0인 임계점 연립방정식):
    • ∂f∂x1=3x12−3=0  ⟹  3(x12−1)=0  ⟹  x1=1 또는 x1=−1\frac{\partial f}{\partial x_1} = 3x_1^2 - 3 = 0 \implies 3(x_1^2 - 1) = 0 \implies x_1 = 1 \text{ 또는 } x_1 = -1
    • ∂f∂x2=2x2=0  ⟹  x2=0\frac{\partial f}{\partial x_2} = 2x_2 = 0 \implies x_2 = 0 따라서 임계점은 두 개다: P1(1,0)P_1(1, 0)과 P2(−1,0)P_2(-1, 0).
  • 2단계 (일반 헤시안 행렬 도출):
    • ∂2f∂x12=6x1\frac{\partial^2 f}{\partial x_1^2} = 6x_1
    • ∂2f∂x1∂x2=∂2f∂x2∂x1=0\frac{\partial^2 f}{\partial x_1 \partial x_2} = \frac{\partial^2 f}{\partial x_2 \partial x_1} = 0
    • ∂2f∂x22=2\frac{\partial^2 f}{\partial x_2^2} = 2 H(x1,x2)=[6x1002]H(x_1, x_2) = \begin{bmatrix} 6x_1 & 0 \\ 0 & 2 \end{bmatrix}
  • 3단계 (점 P1(1,0)P_1(1, 0) 판정): H(1,0)=[6002]H(1, 0) = \begin{bmatrix} 6 & 0 \\ 0 & 2 \end{bmatrix} 대각행렬이므로 고유값은 λ1=6>0,λ2=2>0\lambda_1 = 6 > 0, \lambda_2 = 2 > 0이다. 양의 정부호이므로 P1(1,0)P_1(1, 0)은 엄격한 국소 극소점(Local Minimum)이다.
  • 4단계 (점 P2(−1,0)P_2(-1, 0) 판정): H(−1,0)=[−6002]H(-1, 0) = \begin{bmatrix} -6 & 0 \\ 0 & 2 \end{bmatrix} 고유값은 λ1=−6<0,λ2=2>0\lambda_1 = -6 < 0, \lambda_2 = 2 > 0이다. 부호가 엇갈리므로 P2(−1,0)P_2(-1, 0)은 안장점(Saddle Point)이다!

헷갈리는 점 / 자주 하는 실수

  • 기울기가 0이라고 무조건 극값이라 단정하는 실수: 고차원 공간(딥러닝 손실 표면)에서는 국소 극소점보다 안장점의 빈도가 훨씬 높다. 1계 미분만으로는 안장점을 걸러낼 수 없음을 명심해야 한다.

5.8 선형화와 다변수 테일러 급수(Linearization and Multivariate Taylor Series, 교재 165~170쪽)

왜 필요한가 (직관)

현실의 시스템은 대부분 지독하게 비선형적(non-linear)이다. 하지만 어떤 고정된 작동점 x0\boldsymbol{x}_0 근처에서 아주 작은 범위만 관찰한다면, 곡면은 평평한 평면(1차 근사)이나 타원 포물면(2차 근사)처럼 보인다. 복잡한 비선형 목적함수를 국소 2차 곡면으로 모델링하여 최적의 이동 방향과 보폭을 한 번에 계산하는 것이 2차 최적화의 핵심 원리다.

정의와 성질

1. 선형화(Linearization)

점 x0\boldsymbol{x}_0 근처에서 다변수 함수 f(x)f(\boldsymbol{x})의 1차 테일러 근사는 다음과 같다:

f(x)≈f(x0)+∇xf(x0)(x−x0)f(\boldsymbol{x}) \approx f(\boldsymbol{x}_0) + \nabla_{\boldsymbol{x}} f(\boldsymbol{x}_0) (\boldsymbol{x} - \boldsymbol{x}_0)
  • ∇xf(x0)∈R1×D\nabla_{\boldsymbol{x}} f(\boldsymbol{x}_0) \in \mathbb{R}^{1 \times D} (행벡터)
  • (x−x0)∈RD×1(\boldsymbol{x} - \boldsymbol{x}_0) \in \mathbb{R}^{D \times 1} (열벡터)
  • 두 벡터의 곱은 스칼라가 되며, 이는 기하학적으로 점 (x0,f(x0))(\boldsymbol{x}_0, f(\boldsymbol{x}_0))에서의 접평면(tangent plane) 방정식이다.

2. 다변수 2차 테일러 급수(Multivariate 2nd-order Taylor Series)

곡률까지 반영하는 2차 근사는 헤시안 행렬을 포함한다:

f(x)≈f(x0)+∇xf(x0)(x−x0)+12(x−x0)⊤H(x0)(x−x0)\begin{aligned} f(\boldsymbol{x}) &\approx f(\boldsymbol{x}_0) + \nabla_{\boldsymbol{x}} f(\boldsymbol{x}_0) (\boldsymbol{x} - \boldsymbol{x}_0) \\ &\quad + \frac{1}{2} (\boldsymbol{x} - \boldsymbol{x}_0)^\top H(\boldsymbol{x}_0) (\boldsymbol{x} - \boldsymbol{x}_0) \end{aligned}

변위 벡터를 δ:=x−x0\boldsymbol{\delta} := \boldsymbol{x} - \boldsymbol{x}_0로 두면:

f(x0+δ)≈f(x0)+∇f(x0)δ+12δ⊤H(x0)δ\begin{aligned} f(\boldsymbol{x}_0 + \boldsymbol{\delta}) &\approx f(\boldsymbol{x}_0) + \nabla f(\boldsymbol{x}_0) \boldsymbol{\delta} \\ &\quad + \frac{1}{2} \boldsymbol{\delta}^\top H(\boldsymbol{x}_0) \boldsymbol{\delta} \end{aligned}
  • 상수 항: f(x0)f(\boldsymbol{x}_0) (0차)
  • 선형 항: ∇f(x0)δ=∑i=1D∂f∂xiδi\nabla f(\boldsymbol{x}_0) \boldsymbol{\delta} = \sum_{i=1}^D \frac{\partial f}{\partial x_i} \delta_i (1차)
  • 2차 곡률 항: 12δ⊤Hδ=12∑i=1D∑j=1DHijδiδj\frac{1}{2} \boldsymbol{\delta}^\top H \boldsymbol{\delta} = \frac{1}{2} \sum_{i=1}^D \sum_{j=1}^D H_{ij} \delta_i \delta_j (2차 형식)

손으로 풀어 보는 예제

[예제 8-1] 다변수 함수의 테일러 전개 (교재 예제 5.15)

함수 f(x,y)=x2+2xy+y3f(x, y) = x^2 + 2xy + y^3을 점 (x0,y0)=(1,2)(x_0, y_0) = (1, 2) 근처에서 2차 테일러 다항식으로 전개하라.

  • 1단계 (중심점에서의 함수값 계산): f(1,2)=12+2(1)(2)+23=1+4+8=13f(1, 2) = 1^2 + 2(1)(2) + 2^3 = 1 + 4 + 8 = 13
  • 2단계 (1계 도함수 및 중심점 평가):
    • ∂f∂x=2x+2y  ⟹  ∂f∂x(1,2)=2(1)+2(2)=6\frac{\partial f}{\partial x} = 2x + 2y \implies \frac{\partial f}{\partial x}(1, 2) = 2(1) + 2(2) = 6
    • ∂f∂y=2x+3y2  ⟹  ∂f∂y(1,2)=2(1)+3(4)=14\frac{\partial f}{\partial y} = 2x + 3y^2 \implies \frac{\partial f}{\partial y}(1, 2) = 2(1) + 3(4) = 14
    • 기울기 행벡터: ∇f(1,2)=[614]\nabla f(1, 2) = \begin{bmatrix} 6 & 14 \end{bmatrix}
  • 3단계 (2계 도함수 및 헤시안 평가):
    • ∂2f∂x2=2\frac{\partial^2 f}{\partial x^2} = 2
    • ∂2f∂x∂y=2\frac{\partial^2 f}{\partial x \partial y} = 2
    • ∂2f∂y2=6y  ⟹  ∂2f∂y2(1,2)=6(2)=12\frac{\partial^2 f}{\partial y^2} = 6y \implies \frac{\partial^2 f}{\partial y^2}(1, 2) = 6(2) = 12
    • 헤시안 행렬: H(1,2)=[22212]H(1, 2) = \begin{bmatrix} 2 & 2 \\ 2 & 12 \end{bmatrix}
  • 4단계 (테일러 다항식 조립): 변위를 δx=x−1,δy=y−2\delta_x = x - 1, \delta_y = y - 2라 두면, T2(x,y)=13+[614][x−1y−2]+12[x−1y−2][22212][x−1y−2]T_2(x, y) = 13 + \begin{bmatrix} 6 & 14 \end{bmatrix} \begin{bmatrix} x - 1 \\ y - 2 \end{bmatrix} + \frac{1}{2} \begin{bmatrix} x - 1 & y - 2 \end{bmatrix} \begin{bmatrix} 2 & 2 \\ 2 & 12 \end{bmatrix} \begin{bmatrix} x - 1 \\ y - 2 \end{bmatrix} 전개하면: T2(x,y)=13+6(x−1)+14(y−2)+(x−1)2+2(x−1)(y−2)+6(y−2)2T_2(x, y) = 13 + 6(x-1) + 14(y-2) + (x-1)^2 + 2(x-1)(y-2) + 6(y-2)^2 원래 함수가 3차식이므로, 여기에 3차 항 13!∂3f∂y3(y−2)3=(y−2)3\frac{1}{3!} \frac{\partial^3 f}{\partial y^3}(y-2)^3 = (y-2)^3만 더해주면 원래 함수와 정확히 동일해진다.

헷갈리는 점 / 자주 하는 실수

  • 2차 항 앞의 12\frac{1}{2} 계수 누락: 1차 항에는 계수가 없지만 2차 항 앞에는 반드시 테일러 정리의 12!=12\frac{1}{2!} = \frac{1}{2}이 곱해져야 한다.

5.9 추가 읽을거리(Further Reading, 교재 170~171쪽)

  1. The Matrix Cookbook (Petersen and Pedersen, 2012): 머신러닝과 통계학에서 쓰이는 모든 행렬 미분 공식, 켤레 전치, 크로네커 곱 항등식이 망라된 사실상의 표준 레퍼런스다. 복잡한 미분 항등식을 확인할 때 필수적이다.
  2. Automatic Differentiation in Machine Learning: A Survey (Baydin et al., 2018): 순방향/역방향 모드 자동 미분의 수학적 원리와 PyTorch, JAX의 내부 연산 그래프 구현 메커니즘을 심도 있게 다룬다.

핵심 유도 모음 (백지 유도)

[유도 1] 2차 형식 f(x)=x⊤Axf(\boldsymbol{x}) = \boldsymbol{x}^\top A \boldsymbol{x}의 그래디언트 유도

  • 목표: ∂(x⊤Ax)∂x=x⊤(A+A⊤)\frac{\partial (\boldsymbol{x}^\top A \boldsymbol{x})}{\partial \boldsymbol{x}} = \boldsymbol{x}^\top (A + A^\top) 임을 유도한다.
  1. 스칼라 합 형태로 전개: x⊤Ax=∑i=1n∑j=1nxiAijxj\boldsymbol{x}^\top A \boldsymbol{x} = \sum_{i=1}^n \sum_{j=1}^n x_i A_{ij} x_j (이유: 행렬-벡터 곱의 정의)
  2. 임의의 kk번째 성분 xkx_k로 편미분: 변수 xkx_k는 인덱스 i=ki=k일 때와 j=kj=k일 때 두 번 등장한다: ∂∂xk(∑i=1n∑j=1nxiAijxj)=∂∂xk(xkAkkxk+∑j≠kxkAkjxj+∑i≠kxiAikxk+∑i≠k∑j≠kxiAijxj)\begin{aligned} &\frac{\partial}{\partial x_k} \left( \sum_{i=1}^n \sum_{j=1}^n x_i A_{ij} x_j \right) \\ &= \frac{\partial}{\partial x_k} \Bigl( x_k A_{kk} x_k + \sum_{j \neq k} x_k A_{kj} x_j \\ &\quad + \sum_{i \neq k} x_i A_{ik} x_k + \sum_{i \neq k} \sum_{j \neq k} x_i A_{ij} x_j \Bigr) \end{aligned} (이유: xkx_k가 포함된 항들을 분리)
  3. 각 항을 미분:
    • xk2Akkx_k^2 A_{kk} 미분   ⟹  2Akkxk\implies 2 A_{kk} x_k
    • ∑j≠kxkAkjxj\sum_{j \neq k} x_k A_{kj} x_j 미분   ⟹  ∑j≠kAkjxj\implies \sum_{j \neq k} A_{kj} x_j
    • ∑i≠kxiAikxk\sum_{i \neq k} x_i A_{ik} x_k 미분   ⟹  ∑i≠kxiAik=∑i≠kAikxi\implies \sum_{i \neq k} x_i A_{ik} = \sum_{i \neq k} A_{ik} x_i
    • 나머지 항 미분   ⟹  0\implies 0
  4. 항을 합치기: ∂f∂xk=∑j=1nAkjxj+∑i=1nAikxi=∑j=1nAkjxj+∑j=1n(A⊤)kjxj=∑j=1n(A+A⊤)kjxj\frac{\partial f}{\partial x_k} = \sum_{j=1}^n A_{kj} x_j + \sum_{i=1}^n A_{ik} x_i = \sum_{j=1}^n A_{kj} x_j + \sum_{j=1}^n (A^\top)_{kj} x_j = \sum_{j=1}^n (A + A^\top)_{kj} x_j (이유: Aik=(A⊤)kiA_{ik} = (A^\top)_{ki} 이고 인덱스 문자를 jj로 통일)
  5. 행벡터로 결합: dfdx=x⊤(A+A⊤)(증명 완료)\frac{df}{d\boldsymbol{x}} = \boldsymbol{x}^\top (A + A^\top) \quad \text{(증명 완료)} (이유: 성분별 결과가 정확히 행벡터 x⊤\boldsymbol{x}^\top와 행렬 A+A⊤A+A^\top의 곱의 kk번째 원소임)

[유도 2] 선형 회귀 최소제곱 오차 기울기 및 정규방정식(Normal Equation) 유도

  • 목표: L(θ)=∥y−Φθ∥2L(\boldsymbol{\theta}) = \|\boldsymbol{y} - \Phi \boldsymbol{\theta}\|^2에 대하여 ∇θL=0\nabla_{\boldsymbol{\theta}} L = \mathbf{0}을 풀어 최적해 θ∗=(Φ⊤Φ)−1Φ⊤y\boldsymbol{\theta}^* = (\Phi^\top \Phi)^{-1} \Phi^\top \boldsymbol{y}를 도출한다.
  1. 노름 제곱을 행렬 곱으로 전개: L(θ)=(y−Φθ)⊤(y−Φθ)=y⊤y−y⊤Φθ−θ⊤Φ⊤y+θ⊤Φ⊤ΦθL(\boldsymbol{\theta}) = (\boldsymbol{y} - \Phi \boldsymbol{\theta})^\top (\boldsymbol{y} - \Phi \boldsymbol{\theta}) = \boldsymbol{y}^\top \boldsymbol{y} - \boldsymbol{y}^\top \Phi \boldsymbol{\theta} - \boldsymbol{\theta}^\top \Phi^\top \boldsymbol{y} + \boldsymbol{\theta}^\top \Phi^\top \Phi \boldsymbol{\theta} (이유: 벡터의 2-노름 제곱 정의 ∥v∥2=v⊤v\|\boldsymbol{v}\|^2 = \boldsymbol{v}^\top \boldsymbol{v} 및 전치 분배법칙)
  2. 스칼라 대칭성을 이용해 정리: y⊤Φθ\boldsymbol{y}^\top \Phi \boldsymbol{\theta}는 스칼라이므로 자신의 전치와 같다: (y⊤Φθ)⊤=θ⊤Φ⊤y(\boldsymbol{y}^\top \Phi \boldsymbol{\theta})^\top = \boldsymbol{\theta}^\top \Phi^\top \boldsymbol{y}. L(θ)=y⊤y−2y⊤Φθ+θ⊤(Φ⊤Φ)θL(\boldsymbol{\theta}) = \boldsymbol{y}^\top \boldsymbol{y} - 2 \boldsymbol{y}^\top \Phi \boldsymbol{\theta} + \boldsymbol{\theta}^\top (\Phi^\top \Phi) \boldsymbol{\theta} (이유: 동류항 결합)
  3. θ\boldsymbol{\theta}에 대해 미분:
    • ∂∂θ(y⊤y)=0\frac{\partial}{\partial \boldsymbol{\theta}} (\boldsymbol{y}^\top \boldsymbol{y}) = \mathbf{0} (이유: θ\boldsymbol{\theta}와 무관한 상수)
    • ∂∂θ(−2y⊤Φθ)=−2y⊤Φ\frac{\partial}{\partial \boldsymbol{\theta}} (-2 \boldsymbol{y}^\top \Phi \boldsymbol{\theta}) = -2 \boldsymbol{y}^\top \Phi (이유: 5.5절 항등식 1번 ∂(a⊤θ)∂θ=a⊤\frac{\partial (\boldsymbol{a}^\top \boldsymbol{\theta})}{\partial \boldsymbol{\theta}} = \boldsymbol{a}^\top)
    • ∂∂θ(θ⊤Φ⊤Φθ)=2θ⊤(Φ⊤Φ)\frac{\partial}{\partial \boldsymbol{\theta}} (\boldsymbol{\theta}^\top \Phi^\top \Phi \boldsymbol{\theta}) = 2 \boldsymbol{\theta}^\top (\Phi^\top \Phi) (이유: B=Φ⊤ΦB = \Phi^\top \Phi는 대칭행렬이므로 항등식 3번에 의해 2θ⊤B2\boldsymbol{\theta}^\top B) dLdθ=−2y⊤Φ+2θ⊤Φ⊤Φ∈R1×D\frac{dL}{d\boldsymbol{\theta}} = -2 \boldsymbol{y}^\top \Phi + 2 \boldsymbol{\theta}^\top \Phi^\top \Phi \in \mathbb{R}^{1 \times D}
  4. 기울기를 0\mathbf{0}으로 두고 전치 취하기: −2y⊤Φ+2θ⊤Φ⊤Φ=0  ⟹  θ⊤Φ⊤Φ=y⊤Φ-2 \boldsymbol{y}^\top \Phi + 2 \boldsymbol{\theta}^\top \Phi^\top \Phi = \mathbf{0} \implies \boldsymbol{\theta}^\top \Phi^\top \Phi = \boldsymbol{y}^\top \Phi 양변에 전치(⊤^\top)를 취하면: Φ⊤Φθ=Φ⊤y(정규방정식 도출)\Phi^\top \Phi \boldsymbol{\theta} = \Phi^\top \boldsymbol{y} \quad \text{(정규방정식 도출)} (이유: (AB)⊤=B⊤A⊤(AB)^\top = B^\top A^\top 및 (Φ⊤Φ)⊤=Φ⊤Φ(\Phi^\top \Phi)^\top = \Phi^\top \Phi)
  5. 역행렬 곱하여 최적해 도출: θ∗=(Φ⊤Φ)−1Φ⊤y(증명 완료)\boldsymbol{\theta}^* = (\Phi^\top \Phi)^{-1} \Phi^\top \boldsymbol{y} \quad \text{(증명 완료)} (이유: Φ⊤Φ\Phi^\top \Phi가 가역행렬이라고 가정)

[유도 3] 역행렬의 미분 공식 dX−1dt=−X−1dXdtX−1\frac{d X^{-1}}{dt} = -X^{-1} \frac{dX}{dt} X^{-1} 유도

  • 목표: 가역행렬 X(t)X(t)에 대하여 역행렬의 도함수를 유도한다.
  1. 역행렬의 항등식에서 출발: X(t)X(t)−1=IX(t) X(t)^{-1} = I (이유: 역행렬의 정의)
  2. 양변을 tt에 대해 곱의 미분법 적용: ddt(X(t)X(t)−1)=ddt(I)\frac{d}{dt} \left( X(t) X(t)^{-1} \right) = \frac{d}{dt} (I) dXdtX−1+XdX−1dt=O\frac{dX}{dt} X^{-1} + X \frac{dX^{-1}}{dt} = O (이유: 행렬곱의 미분법 및 단위행렬 II의 도함수는 영행렬 OO)
  3. 구하고자 하는 dX−1dt\frac{dX^{-1}}{dt} 항을 좌변에 남기기: XdX−1dt=−dXdtX−1X \frac{dX^{-1}}{dt} = -\frac{dX}{dt} X^{-1} (이유: 이항)
  4. 양변의 왼쪽에 X−1X^{-1}을 곱하기: X−1XdX−1dt=−X−1dXdtX−1X^{-1} X \frac{dX^{-1}}{dt} = -X^{-1} \frac{dX}{dt} X^{-1} IdX−1dt=−X−1dXdtX−1I \frac{dX^{-1}}{dt} = -X^{-1} \frac{dX}{dt} X^{-1} dX−1dt=−X−1dXdtX−1(증명 완료)\frac{dX^{-1}}{dt} = -X^{-1} \frac{dX}{dt} X^{-1} \quad \text{(증명 완료)} (이유: X−1X=IX^{-1}X = I)

[유도 4] 행렬식 미분 Jacobi 공식 ∂det⁡(X)∂X=det⁡(X)(X−1)⊤\frac{\partial \det(X)}{\partial X} = \det(X) (X^{-1})^\top 유도

  • 목표: 가역 정방행렬 XX에 대하여 det⁡(X)\det(X)의 행렬 미분을 유도한다.
  1. 라플라스 여인수 전개(Laplace expansion): det⁡(X)\det(X)를 임의의 ii번째 행에 대해 전개하면: det⁡(X)=∑j=1nXijCij\det(X) = \sum_{j=1}^n X_{ij} C_{ij} (이유: 행렬식의 여인수 전개 공식. 여기서 Cij=(−1)i+jMijC_{ij} = (-1)^{i+j} M_{ij}는 (i,j)(i, j) 여인수(cofactor)이며, CijC_{ij}는 XijX_{ij} 원소 자체를 포함하지 않음)
  2. 특정 원소 XijX_{ij}로 편미분: ∂det⁡(X)∂Xij=Cij\frac{\partial \det(X)}{\partial X_{ij}} = C_{ij} (이유: det⁡(X)\det(X)는 XijX_{ij}에 대해 1차 선형식이므로 계수인 여인수 CijC_{ij}만 남음)
  3. 여인수 행렬과 역행렬의 관계 이용 (Cramer’s Rule): 수반 행렬(adjugate matrix) adj(X)\text{adj}(X)는 여인수 행렬의 전치로 정의되며, X−1=1det⁡(X)adj(X)X^{-1} = \frac{1}{\det(X)} \text{adj}(X) 가 성립한다: adj(X)ij=Cji  ⟹  Cij=adj(X)ji=(adj(X)⊤)ij\text{adj}(X)_{ij} = C_{ji} \implies C_{ij} = \text{adj}(X)_{ji} = (\text{adj}(X)^\top)_{ij} 따라서: X−1=1det⁡(X)adj(X)  ⟹  adj(X)=det⁡(X)X−1  ⟹  adj(X)⊤=det⁡(X)(X−1)⊤X^{-1} = \frac{1}{\det(X)} \text{adj}(X) \implies \text{adj}(X) = \det(X) X^{-1} \implies \text{adj}(X)^\top = \det(X) (X^{-1})^\top
  4. 행렬 형태로 조립: ∂det⁡(X)∂X=det⁡(X)(X−1)⊤(증명 완료)\frac{\partial \det(X)}{\partial X} = \det(X) (X^{-1})^\top \quad \text{(증명 완료)} (이유: 각 성분 편미분이 det⁡(X)(X−1)⊤\det(X)(X^{-1})^\top의 성분과 일치)

[유도 5] 2층 인공신경망의 역전파 델타 규칙(Delta Rule) 유도

  • 목표: z(1)=W(1)x+b(1)\boldsymbol{z}^{(1)} = W^{(1)}\boldsymbol{x} + \boldsymbol{b}^{(1)}, a(1)=σ(z(1))\boldsymbol{a}^{(1)} = \sigma(\boldsymbol{z}^{(1)}), z(2)=W(2)a(1)+b(2)\boldsymbol{z}^{(2)} = W^{(2)}\boldsymbol{a}^{(1)} + \boldsymbol{b}^{(2)}, y^=z(2)\hat{\boldsymbol{y}} = \boldsymbol{z}^{(2)}, L=12∥y−y^∥2L = \frac{1}{2}\|\boldsymbol{y} - \hat{\boldsymbol{y}}\|^2 일 때 가중치 기울기를 유도한다.
  1. 출력층 오차 정의: δ(2):=∂L∂z(2)=(y^−y)⊤∈R1×Dout\boldsymbol{\delta}^{(2)} := \frac{\partial L}{\partial \boldsymbol{z}^{(2)}} = (\hat{\boldsymbol{y}} - \boldsymbol{y})^\top \in \mathbb{R}^{1 \times D_{out}} (이유: L=12∑(y^k−yk)2L = \frac{1}{2}\sum (\hat{y}_k - y_k)^2 미분)
  2. 2층 가중치 W(2)W^{(2)}에 대한 기울기: 연쇄법칙에 의해: ∂L∂Wij(2)=∂L∂zi(2)∂zi(2)∂Wij(2)=δi(2)aj(1)\frac{\partial L}{\partial W^{(2)}_{ij}} = \frac{\partial L}{\partial z^{(2)}_i} \frac{\partial z^{(2)}_i}{\partial W^{(2)}_{ij}} = \delta^{(2)}_i a^{(1)}_j 행렬 형태로 묶으면: ∂L∂W(2)=(δ(2))⊤(a(1))⊤∈RDout×Dhid\frac{\partial L}{\partial W^{(2)}} = (\boldsymbol{\delta}^{(2)})^\top (\boldsymbol{a}^{(1)})^\top \in \mathbb{R}^{D_{out} \times D_{hid}} (이유: 외적(outer product) 형태 결합)
  3. 1층 은닉층 오차 δ(1)\boldsymbol{\delta}^{(1)} 역전파: δ(1):=∂L∂z(1)=∂L∂z(2)∂z(2)∂a(1)∂a(1)∂z(1)\boldsymbol{\delta}^{(1)} := \frac{\partial L}{\partial \boldsymbol{z}^{(1)}} = \frac{\partial L}{\partial \boldsymbol{z}^{(2)}} \frac{\partial \boldsymbol{z}^{(2)}}{\partial \boldsymbol{a}^{(1)}} \frac{\partial \boldsymbol{a}^{(1)}}{\partial \boldsymbol{z}^{(1)}}
    • ∂z(2)∂a(1)=W(2)\frac{\partial \boldsymbol{z}^{(2)}}{\partial \boldsymbol{a}^{(1)}} = W^{(2)}
    • ∂a(1)∂z(1)=diag(σ′(z(1)))\frac{\partial \boldsymbol{a}^{(1)}}{\partial \boldsymbol{z}^{(1)}} = \text{diag}(\sigma'(\boldsymbol{z}^{(1)})) 따라서: δ(1)=(δ(2)W(2))⊙(σ′(z(1)))⊤∈R1×Dhid\boldsymbol{\delta}^{(1)} = \left( \boldsymbol{\delta}^{(2)} W^{(2)} \right) \odot (\sigma'(\boldsymbol{z}^{(1)}))^\top \in \mathbb{R}^{1 \times D_{hid}} (이유: 대각행렬과의 곱은 아다마르 곱(원소별 곱 ⊙\odot)과 동일)
  4. 1층 가중치 W(1)W^{(1)}에 대한 기울기: ∂L∂W(1)=(δ(1))⊤x⊤∈RDhid×Din(증명 완료)\frac{\partial L}{\partial W^{(1)}} = (\boldsymbol{\delta}^{(1)})^\top \boldsymbol{x}^\top \in \mathbb{R}^{D_{hid} \times D_{in}} \quad \text{(증명 완료)} (이유: 2단계와 동일한 외적 원리)

말로 설명하기 (개념 서술형·구술 대비)

서술형 문항이나 구술 질문에 대비해 말로도 설명해 본다.

Q. 기울기(gradient)와 야코비안의 차이는? “스칼라 함수 f:Rn→Rf:\mathbb R^n\to\mathbb R의 편미분을 모은 것이 기울기이고, 교재는 이것을 1×n1\times n 행벡터로 씁니다. 벡터 함수 f:Rn→Rmf:\mathbb R^n\to\mathbb R^m의 편미분을 모은 m×nm\times n 행렬이 야코비안입니다. ii행은 ii번째 출력의 기울기입니다. 기울기는 출력이 하나인 야코비안이라고 볼 수 있습니다.”

Q. 다변수 연쇄법칙을 설명해 보세요. “합성함수의 야코비안은 각 단계 야코비안의 행렬곱입니다. x→y→zx\to y\to z이면 dzdx=dzdydydx\frac{dz}{dx}=\frac{dz}{dy}\frac{dy}{dx}이고, 크기가 (k×m)(m×n)=k×n(k\times m)(m\times n)=k\times n으로 맞아떨어집니다. 변수가 여러 경로로 영향을 주면 경로별 기여를 모두 더하는데, 이것이 행렬곱 안의 합으로 들어가 있습니다.”

Q. 역전파가 왜 효율적인가요? “신경망의 기울기는 야코비안을 여러 개 곱한 것입니다. 출력이 스칼라 손실이면 맨 끝 야코비안이 행벡터라, 출력 쪽부터 곱해 나가면 매 단계가 벡터-행렬 곱이 됩니다. 그래서 순전파의 상수배 정도 계산으로 모든 매개변수의 기울기를 한 번에 얻습니다. 순전파 때 중간값을 저장해 두고 재사용하는 것이 핵심이고, 그 대가로 메모리를 씁니다.”

Q. x⊤Axx^\top Ax를 미분하면? 왜 대칭 조건을 확인해야 하나요? “ddxx⊤Ax=x⊤(A+A⊤)\frac{d}{dx}x^\top Ax=x^\top(A+A^\top)입니다. AA가 대칭일 때만 2x⊤A2x^\top A로 줄어듭니다. 성분으로 펼치면 xkx_k가 행 쪽과 열 쪽에서 두 번 등장해 AA와 A⊤A^\top가 함께 나옵니다. 선형회귀의 θ⊤Φ⊤Φθ\theta^\top\Phi^\top\Phi\theta는 Φ⊤Φ\Phi^\top\Phi가 대칭이라 2θ⊤Φ⊤Φ2\theta^\top\Phi^\top\Phi가 됩니다.”

Q. 헤시안은 무엇이고 어디에 쓰나요? “2계 편미분을 모은 n×nn\times n 행렬이고, 2번 연속 미분 가능하면 대칭입니다. 기울기가 0인 점에서 헤시안이 양의 정부호면 극소, 음의 정부호면 극대, 고유값 부호가 섞이면 안장점입니다. 2차 테일러 근사에 들어가고, 7장의 볼록성 판정과 뉴턴 방법에서 곡률 정보로 씁니다.”

Q. 다변수 테일러 전개를 써 보세요. “f(x0+δ)≈f(x0)+∇f(x0)δ+12δ⊤H(x0)δf(x_0+\delta)\approx f(x_0)+\nabla f(x_0)\delta+\frac12\delta^\top H(x_0)\delta입니다. 1차까지가 접평면(선형화)이고, 2차 항이 곡률을 반영합니다. 2차 항 앞의 12\frac12를 빠뜨리지 않아야 합니다.”


연습문제

확인 문제 (10문제, 상세 풀이 및 파이썬 검산 완료)

[문제 1] (편미분과 기울기)

함수 f(x1,x2,x3)=x12x2−2x2x33+4x1x3f(x_1, x_2, x_3) = x_1^2 x_2 - 2 x_2 x_3^3 + 4 x_1 x_3에 대하여 점 x=[12−1]\boldsymbol{x} = \begin{bmatrix} 1 \\ 2 \\ -1 \end{bmatrix}에서의 기울기 벡터 ∇xf\nabla_{\boldsymbol{x}} f를 MML 관례(행벡터)에 따라 구하라.

  • [풀이]:
    1. 성분별 편미분을 계산한다:
      • ∂f∂x1=2x1x2+4x3\frac{\partial f}{\partial x_1} = 2x_1 x_2 + 4x_3
      • ∂f∂x2=x12−2x33\frac{\partial f}{\partial x_2} = x_1^2 - 2x_3^3
      • ∂f∂x3=−6x2x32+4x1\frac{\partial f}{\partial x_3} = -6x_2 x_3^2 + 4x_1
    2. 점 (1,2,−1)(1, 2, -1)을 대입한다:
      • ∂f∂x1=2(1)(2)+4(−1)=4−4=0\frac{\partial f}{\partial x_1} = 2(1)(2) + 4(-1) = 4 - 4 = 0
      • ∂f∂x2=12−2(−1)3=1−2(−1)=1+2=3\frac{\partial f}{\partial x_2} = 1^2 - 2(-1)^3 = 1 - 2(-1) = 1 + 2 = 3
      • ∂f∂x3=−6(2)(−1)2+4(1)=−12(1)+4=−8\frac{\partial f}{\partial x_3} = -6(2)(-1)^2 + 4(1) = -12(1) + 4 = -8
    3. 행벡터 조립: ∇xf=[03−8]∈R1×3\nabla_{\boldsymbol{x}} f = \begin{bmatrix} 0 & 3 & -8 \end{bmatrix} \in \mathbb{R}^{1 \times 3}

[문제 2] (야코비안 행렬 계산)

벡터 함수 f:R2→R3\boldsymbol{f}: \mathbb{R}^2 \to \mathbb{R}^3가 f(x1,x2)=[x12+x23x1x2sin⁡(x1)]\boldsymbol{f}(x_1, x_2) = \begin{bmatrix} x_1^2 + x_2 \\ 3x_1 x_2 \\ \sin(x_1) \end{bmatrix}로 정의될 때, 점 x=[01]\boldsymbol{x} = \begin{bmatrix} 0 \\ 1 \end{bmatrix}에서의 야코비안 행렬 JJ를 구하라.

  • [풀이]:
    1. J∈R3×2J \in \mathbb{R}^{3 \times 2}이다 (출력 3개, 입력 2개).
    2. 각 성분의 편미분 계산:
      • 행 1: [∂(x12+x2)∂x1∂(x12+x2)∂x2]=[2x11]\begin{bmatrix} \frac{\partial(x_1^2 + x_2)}{\partial x_1} & \frac{\partial(x_1^2 + x_2)}{\partial x_2} \end{bmatrix} = \begin{bmatrix} 2x_1 & 1 \end{bmatrix}
      • 행 2: [∂(3x1x2)∂x1∂(3x1x2)∂x2]=[3x23x1]\begin{bmatrix} \frac{\partial(3x_1 x_2)}{\partial x_1} & \frac{\partial(3x_1 x_2)}{\partial x_2} \end{bmatrix} = \begin{bmatrix} 3x_2 & 3x_1 \end{bmatrix}
      • 행 3: [∂(sin⁡x1)∂x1∂(sin⁡x1)∂x2]=[cos⁡x10]\begin{bmatrix} \frac{\partial(\sin x_1)}{\partial x_1} & \frac{\partial(\sin x_1)}{\partial x_2} \end{bmatrix} = \begin{bmatrix} \cos x_1 & 0 \end{bmatrix}
    3. 점 (0,1)(0, 1) 대입: J(0,1)=[2(0)13(1)3(0)cos⁡(0)0]=[013010]J(0, 1) = \begin{bmatrix} 2(0) & 1 \\ 3(1) & 3(0) \\ \cos(0) & 0 \end{bmatrix} = \begin{bmatrix} 0 & 1 \\ 3 & 0 \\ 1 & 0 \end{bmatrix}

[문제 3] (선형 변환의 야코비안)

A=[2−13045]∈R2×3A = \begin{bmatrix} 2 & -1 & 3 \\ 0 & 4 & 5 \end{bmatrix} \in \mathbb{R}^{2 \times 3}, b=[1−2]∈R2\boldsymbol{b} = \begin{bmatrix} 1 \\ -2 \end{bmatrix} \in \mathbb{R}^2에 대하여 f(x)=Ax+b\boldsymbol{f}(\boldsymbol{x}) = A\boldsymbol{x} + \boldsymbol{b}의 야코비안 행렬 dfdx\frac{d\boldsymbol{f}}{d\boldsymbol{x}}를 구하라.

  • [풀이]: 5.3절의 정리에 의해 아핀 변환 f(x)=Ax+b\boldsymbol{f}(\boldsymbol{x}) = A\boldsymbol{x} + \boldsymbol{b}의 야코비안은 입력 x\boldsymbol{x}의 값과 무관하게 항상 행렬 AA 자체이다. 따라서: dfdx=A=[2−13045]∈R2×3\frac{d\boldsymbol{f}}{d\boldsymbol{x}} = A = \begin{bmatrix} 2 & -1 & 3 \\ 0 & 4 & 5 \end{bmatrix} \in \mathbb{R}^{2 \times 3}

[문제 4] (2차 형식 기울기)

대칭행렬 A=[3221]A = \begin{bmatrix} 3 & 2 \\ 2 & 1 \end{bmatrix}와 벡터 x=[x1x2]\boldsymbol{x} = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix}에 대하여 f(x)=x⊤Axf(\boldsymbol{x}) = \boldsymbol{x}^\top A \boldsymbol{x}의 기울기를 구하라.

  • [풀이]:
    1. AA가 대칭행렬(A=A⊤A = A^\top)이므로 항등식에 의해 dfdx=2x⊤A\frac{df}{d\boldsymbol{x}} = 2\boldsymbol{x}^\top A이다.
    2. 행렬곱 계산: dfdx=2[x1x2][3221]=2[3x1+2x22x1+x2]=[6x1+4x24x1+2x2]\frac{df}{d\boldsymbol{x}} = 2 \begin{bmatrix} x_1 & x_2 \end{bmatrix} \begin{bmatrix} 3 & 2 \\ 2 & 1 \end{bmatrix} = 2 \begin{bmatrix} 3x_1 + 2x_2 & 2x_1 + x_2 \end{bmatrix} = \begin{bmatrix} 6x_1 + 4x_2 & 4x_1 + 2x_2 \end{bmatrix}
    3. 성분 전개 검산: f=3x12+4x1x2+x22  ⟹  ∂f∂x1=6x1+4x2,∂f∂x2=4x1+2x2f = 3x_1^2 + 4x_1 x_2 + x_2^2 \implies \frac{\partial f}{\partial x_1} = 6x_1 + 4x_2, \frac{\partial f}{\partial x_2} = 4x_1 + 2x_2. 완전히 일치한다.

[문제 5] (행렬 대각합 미분)

f(X)=tr(AXB)f(X) = \text{tr}(A X B) (단, A=[1021],B=[3102]A = \begin{bmatrix} 1 & 0 \\ 2 & 1 \end{bmatrix}, B = \begin{bmatrix} 3 & 1 \\ 0 & 2 \end{bmatrix})일 때, ∂f∂X\frac{\partial f}{\partial X}를 계산하라.

  • [풀이]:
    1. 5.5절 항등식 8번에 의해 ∂tr(AXB)∂X=A⊤B⊤=(BA)⊤\frac{\partial \text{tr}(AXB)}{\partial X} = A^\top B^\top = (BA)^\top이다.
    2. A⊤=[1201]A^\top = \begin{bmatrix} 1 & 2 \\ 0 & 1 \end{bmatrix}, B⊤=[3012]B^\top = \begin{bmatrix} 3 & 0 \\ 1 & 2 \end{bmatrix}.
    3. 행렬곱 계산: ∂f∂X=[1201][3012]=[1(3)+2(1)1(0)+2(2)0(3)+1(1)0(0)+1(2)]=[5412]\frac{\partial f}{\partial X} = \begin{bmatrix} 1 & 2 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} 3 & 0 \\ 1 & 2 \end{bmatrix} = \begin{bmatrix} 1(3) + 2(1) & 1(0) + 2(2) \\ 0(3) + 1(1) & 0(0) + 1(2) \end{bmatrix} = \begin{bmatrix} 5 & 4 \\ 1 & 2 \end{bmatrix}

[문제 6] (헤시안 행렬 및 슈와르츠 정리)

함수 f(x,y)=x2y3+2xeyf(x, y) = x^2 y^3 + 2x e^y의 헤시안 행렬 HH를 구하고, 혼합 편미분 ∂2f∂x∂y=∂2f∂y∂x\frac{\partial^2 f}{\partial x \partial y} = \frac{\partial^2 f}{\partial y \partial x}가 성립함을 보여라.

  • [풀이]:
    1. 1계 편도함수:
      • ∂f∂x=2xy3+2ey\frac{\partial f}{\partial x} = 2x y^3 + 2e^y
      • ∂f∂y=3x2y2+2xey\frac{\partial f}{\partial y} = 3x^2 y^2 + 2x e^y
    2. 2계 편도함수:
      • ∂2f∂x2=2y3\frac{\partial^2 f}{\partial x^2} = 2y^3
      • ∂2f∂y∂x=∂∂y(2xy3+2ey)=6xy2+2ey\frac{\partial^2 f}{\partial y \partial x} = \frac{\partial}{\partial y}(2x y^3 + 2e^y) = 6x y^2 + 2e^y
      • ∂2f∂x∂y=∂∂x(3x2y2+2xey)=6xy2+2ey\frac{\partial^2 f}{\partial x \partial y} = \frac{\partial}{\partial x}(3x^2 y^2 + 2x e^y) = 6x y^2 + 2e^y
      • ∂2f∂y2=6x2y+2xey\frac{\partial^2 f}{\partial y^2} = 6x^2 y + 2x e^y
    3. 혼합 편미분이 6xy2+2ey6xy^2 + 2e^y로 동일하므로 슈와르츠 정리가 성립한다.
    4. 헤시안 행렬: H=[2y36xy2+2ey6xy2+2ey6x2y+2xey]H = \begin{bmatrix} 2y^3 & 6xy^2 + 2e^y \\ 6xy^2 + 2e^y & 6x^2 y + 2x e^y \end{bmatrix}

[문제 7] (테일러 1차 선형 근사)

함수 f(x1,x2)=x12+x22f(x_1, x_2) = \sqrt{x_1^2 + x_2^2}를 점 x0=[34]\boldsymbol{x}_0 = \begin{bmatrix} 3 \\ 4 \end{bmatrix} 근처에서 1차 선형 근사식을 구하고, 이를 이용해 f(3.06,3.92)f(3.06, 3.92)의 근사값을 구하라.

  • [풀이]:
    1. 기준점 함수값: f(3,4)=32+42=25=5f(3, 4) = \sqrt{3^2 + 4^2} = \sqrt{25} = 5.
    2. 기울기 계산:
      • ∂f∂x1=2x12x12+x22=x1x12+x22  ⟹  ∂f∂x1(3,4)=35=0.6\frac{\partial f}{\partial x_1} = \frac{2x_1}{2\sqrt{x_1^2 + x_2^2}} = \frac{x_1}{\sqrt{x_1^2 + x_2^2}} \implies \frac{\partial f}{\partial x_1}(3, 4) = \frac{3}{5} = 0.6
      • ∂f∂x2=x2x12+x22  ⟹  ∂f∂x2(3,4)=45=0.8\frac{\partial f}{\partial x_2} = \frac{x_2}{\sqrt{x_1^2 + x_2^2}} \implies \frac{\partial f}{\partial x_2}(3, 4) = \frac{4}{5} = 0.8
      • ∇f(3,4)=[0.60.8]\nabla f(3, 4) = \begin{bmatrix} 0.6 & 0.8 \end{bmatrix}
    3. 1차 근사식 조립: f(x)≈5+0.6(x1−3)+0.8(x2−4)f(\boldsymbol{x}) \approx 5 + 0.6(x_1 - 3) + 0.8(x_2 - 4)
    4. 변위 대입: x1−3=0.06x_1 - 3 = 0.06, x2−4=−0.08x_2 - 4 = -0.08. f(3.06,3.92)≈5+0.6(0.06)+0.8(−0.08)=5+0.036−0.064=5−0.028=4.972f(3.06, 3.92) \approx 5 + 0.6(0.06) + 0.8(-0.08) = 5 + 0.036 - 0.064 = 5 - 0.028 = 4.972 (참고: 실제 참값은 3.062+3.922=9.3636+15.3664=24.73≈4.9729\sqrt{3.06^2 + 3.92^2} = \sqrt{9.3636 + 15.3664} = \sqrt{24.73} \approx 4.9729로 오차가 0.02%0.02\% 미만임)

[문제 8] (체인룰을 이용한 합성함수 미분)

f(z)=ln⁡(1+z)f(z) = \ln(1 + z), z=x⊤xz = \boldsymbol{x}^\top \boldsymbol{x} (단, x∈RD\boldsymbol{x} \in \mathbb{R}^D)일 때, dfdx\frac{df}{d\boldsymbol{x}}를 구하라.

  • [풀이]:
    1. ff는 zz의 스칼라 함수: dfdz=11+z∈R\frac{df}{dz} = \frac{1}{1 + z} \in \mathbb{R}.
    2. zz는 x\boldsymbol{x}의 2차형식 (z=x⊤Ixz = \boldsymbol{x}^\top I \boldsymbol{x}): dzdx=2x⊤∈R1×D\frac{dz}{d\boldsymbol{x}} = 2\boldsymbol{x}^\top \in \mathbb{R}^{1 \times D}.
    3. 연쇄법칙 적용: dfdx=dfdzdzdx=11+z(2x⊤)=2x⊤1+x⊤x∈R1×D\frac{df}{d\boldsymbol{x}} = \frac{df}{dz} \frac{dz}{d\boldsymbol{x}} = \frac{1}{1 + z} (2\boldsymbol{x}^\top) = \frac{2\boldsymbol{x}^\top}{1 + \boldsymbol{x}^\top \boldsymbol{x}} \in \mathbb{R}^{1 \times D}

[문제 9] (자동 미분 연산량 비교)

입력 차원이 D=1000D = 1000이고 출력이 스칼라(11)인 신경망 모델이 있다. 가중치 파라미터가 100만 개일 때, 전체 기울기를 계산하는 데 필요한 비용을 수치 미분과 역전파(Reverse-mode autodiff) 관점에서 비교 설명하라.

  • [풀이]:
    • 수치 미분(유한차분법): 100만 개의 각 파라미터를 hh만큼 미세 변화시킨 후 순전파를 다시 실행해야 하므로, 총 1,000,001번의 네트워크 순전파가 필요하다. 계산 복잡도 O(P)O(P) (여기서 PP는 파라미터 수).
    • 역전파(Reverse-mode autodiff): 순전파 1번으로 중간 활성화 값을 캐싱한 뒤, 출력단에서부터 뒤로 1×d1 \times d 행벡터를 역전파하는 단 1번의 역방향 패스로 모든 100만 개 파라미터의 정확한 기울기를 한꺼번에 얻는다. 연산량은 순전파의 약 2~3배에 불과하며, 파라미터 수와 상관없이 역방향 패스는 한 번이다.

[문제 10] (로그 행렬식의 기울기)

대칭 양의 정부호 행렬 X∈Rn×nX \in \mathbb{R}^{n \times n}에 대하여 f(X)=ln⁡det⁡(X)f(X) = \ln \det(X)의 기울기 ∂f∂X\frac{\partial f}{\partial X}를 구하라.

  • [풀이]:
    1. 연쇄법칙 적용: u=det⁡(X)u = \det(X)라 두면 f=ln⁡uf = \ln u. ∂f∂Xij=1u∂u∂Xij=1det⁡(X)∂det⁡(X)∂Xij\frac{\partial f}{\partial X_{ij}} = \frac{1}{u} \frac{\partial u}{\partial X_{ij}} = \frac{1}{\det(X)} \frac{\partial \det(X)}{\partial X_{ij}}
    2. 5.5절 항등식 9번 (Jacobi 공식)에 의해 ∂det⁡(X)∂X=det⁡(X)(X−1)⊤\frac{\partial \det(X)}{\partial X} = \det(X)(X^{-1})^\top.
    3. 대입: ∂ln⁡det⁡(X)∂X=1det⁡(X)⋅det⁡(X)(X−1)⊤=(X−1)⊤\frac{\partial \ln \det(X)}{\partial X} = \frac{1}{\det(X)} \cdot \det(X) (X^{-1})^\top = (X^{-1})^\top
    4. XX가 대칭행렬이므로 X−1X^{-1} 역시 대칭행렬이다 ((X−1)⊤=X−1(X^{-1})^\top = X^{-1}). 따라서: ∂ln⁡det⁡(X)∂X=X−1\frac{\partial \ln \det(X)}{\partial X} = X^{-1} 이 결과는 11장 GMM의 가우시안 공분산 행렬 MLE 추정에서 핵심적으로 쓰인다.

교재 연습문제 안내 (Exercises 5.1 ~ 5.9 상세 해설 및 풀이 방향)

Exercise 5.1

  • 문제 요약: f(x)=log⁡(x4)sin⁡(x3)f(x) = \log(x^4) \sin(x^3)의 도함수 f′(x)f'(x)를 계산하라.
  • 풀이: x4x^4는 x≠0x\ne0이면 항상 양수라서 ff는 음수 xx에서도 정의된다. 그래서 로그 성질을 쓸 때 절댓값을 붙여 log⁡(x4)=4log⁡∣x∣\log(x^4) = 4\log|x|로 정리한다(x>0x>0만 생각하면 4log⁡x4\log x와 같다). 곱의 미분법을 적용: f′(x)=ddx[4log⁡∣x∣]⋅sin⁡(x3)+4log⁡∣x∣⋅ddx[sin⁡(x3)]f'(x) = \frac{d}{dx}[4\log |x|] \cdot \sin(x^3) + 4\log |x| \cdot \frac{d}{dx}[\sin(x^3)]
    • ddx[4log⁡∣x∣]=4x\frac{d}{dx}[4\log |x|] = \frac{4}{x} (x<0x<0이어도 ddxlog⁡(−x)=−1−x=1x\frac{d}{dx}\log(-x)=\frac{-1}{-x}=\frac1x이라 같은 꼴)
    • ddx[sin⁡(x3)]=cos⁡(x3)⋅3x2=3x2cos⁡(x3)\frac{d}{dx}[\sin(x^3)] = \cos(x^3) \cdot 3x^2 = 3x^2 \cos(x^3) 결합하면: f′(x)=4sin⁡(x3)x+12x2log⁡∣x∣cos⁡(x3)f'(x) = \frac{4\sin(x^3)}{x} + 12x^2 \log|x| \cos(x^3)

Exercise 5.2

  • 문제 요약: 로지스틱 시그모이드 f(x)=11+exp⁡(−x)f(x) = \frac{1}{1 + \exp(-x)}의 도함수를 구하라.
  • 풀이: 본문 5.1절 [예제 1-2]에서 상세 유도 완료. f′(x)=f(x)(1−f(x))f'(x) = f(x)(1 - f(x))

Exercise 5.3

  • 문제 요약: f(x)=exp⁡(−12σ2(x−μ)2)f(x) = \exp\left(-\frac{1}{2\sigma^2}(x - \mu)^2\right) (단, μ,σ∈R\mu, \sigma \in \mathbb{R})의 도함수 f′(x)f'(x)를 구하라.
  • 풀이: 연쇄법칙 적용: u(x)=−12σ2(x−μ)2u(x) = -\frac{1}{2\sigma^2}(x - \mu)^2로 두면 f(x)=exp⁡(u)f(x) = \exp(u). u′(x)=−12σ2⋅2(x−μ)=−x−μσ2u'(x) = -\frac{1}{2\sigma^2} \cdot 2(x - \mu) = -\frac{x - \mu}{\sigma^2}. 따라서: f′(x)=exp⁡(u)⋅u′(x)=−x−μσ2exp⁡(−12σ2(x−μ)2)=−x−μσ2f(x)f'(x) = \exp(u) \cdot u'(x) = -\frac{x - \mu}{\sigma^2} \exp\left(-\frac{1}{2\sigma^2}(x - \mu)^2\right) = -\frac{x - \mu}{\sigma^2} f(x)

Exercise 5.4

  • 문제 요약: x0=0x_0 = 0에서 f(x)=sin⁡(x)+cos⁡(x)f(x) = \sin(x) + \cos(x)의 0차부터 5차까지의 테일러 다항식 Tn(x)T_n(x)를 구하라.
  • 풀이: x0=0x_0 = 0에서 도함수 값 주기성 확인:
    • f(0)=sin⁡0+cos⁡0=1f(0) = \sin 0 + \cos 0 = 1
    • f′(0)=cos⁡0−sin⁡0=1f'(0) = \cos 0 - \sin 0 = 1
    • f′′(0)=−sin⁡0−cos⁡0=−1f''(0) = -\sin 0 - \cos 0 = -1
    • f′′′(0)=−cos⁡0+sin⁡0=−1f'''(0) = -\cos 0 + \sin 0 = -1
    • f(4)(0)=sin⁡0+cos⁡0=1f^{(4)}(0) = \sin 0 + \cos 0 = 1
    • f(5)(0)=cos⁡0−sin⁡0=1f^{(5)}(0) = \cos 0 - \sin 0 = 1 따라서 테일러 다항식들은:
    • T0(x)=1T_0(x) = 1
    • T1(x)=1+xT_1(x) = 1 + x
    • T2(x)=1+x−12x2T_2(x) = 1 + x - \frac{1}{2} x^2
    • T3(x)=1+x−12x2−16x3T_3(x) = 1 + x - \frac{1}{2} x^2 - \frac{1}{6} x^3
    • T4(x)=1+x−12x2−16x3+124x4T_4(x) = 1 + x - \frac{1}{2} x^2 - \frac{1}{6} x^3 + \frac{1}{24} x^4
    • T5(x)=1+x−12x2−16x3+124x4+1120x5T_5(x) = 1 + x - \frac{1}{2} x^2 - \frac{1}{6} x^3 + \frac{1}{24} x^4 + \frac{1}{120} x^5

Exercise 5.5

  • 문제 요약: 다음 함수들에 대해 (a) 편도함수 차원을 구하고 (b) 야코비안을 계산하라.
    1. f1(x)=sin⁡(x1)cos⁡(x2),x∈R2f_1(\boldsymbol{x}) = \sin(x_1)\cos(x_2), \boldsymbol{x} \in \mathbb{R}^2
    2. f2(x,y)=x⊤y,x,y∈Rnf_2(\boldsymbol{x}, \boldsymbol{y}) = \boldsymbol{x}^\top \boldsymbol{y}, \boldsymbol{x}, \boldsymbol{y} \in \mathbb{R}^n
    3. f3(x)=xx⊤,x∈Rnf_3(\boldsymbol{x}) = \boldsymbol{x}\boldsymbol{x}^\top, \boldsymbol{x} \in \mathbb{R}^n
  • 풀이:
    1. f1f_1: 출력이 스칼라이므로 차원은 1×21 \times 2 행벡터. J1=[cos⁡(x1)cos⁡(x2)−sin⁡(x1)sin⁡(x2)]∈R1×2J_1 = \begin{bmatrix} \cos(x_1)\cos(x_2) & -\sin(x_1)\sin(x_2) \end{bmatrix} \in \mathbb{R}^{1 \times 2}
    2. f2f_2: x\boldsymbol{x}에 대한 미분 차원은 1×n1 \times n, 야코비안은 y⊤\boldsymbol{y}^\top. 만약 결합벡터 [xy]∈R2n\begin{bmatrix} \boldsymbol{x} \\ \boldsymbol{y} \end{bmatrix} \in \mathbb{R}^{2n}로 본다면 차원은 1×2n1 \times 2n이며, 야코비안은 [y⊤x⊤]\begin{bmatrix} \boldsymbol{y}^\top & \boldsymbol{x}^\top \end{bmatrix}이다.
    3. f3f_3: 출력이 n×nn \times n 행렬이고 입력이 n×1n \times 1 벡터이므로 차원은 n×n×nn \times n \times n 3차원 텐서이다. 성분별로는 ∂(xixj)∂xk=δikxj+xiδjk\frac{\partial (x_i x_j)}{\partial x_k} = \delta_{ik} x_j + x_i \delta_{jk} (여기서 δ\delta는 크로네커 델타). 벡터화 관점(vec(f3)∈Rn2\text{vec}(f_3) \in \mathbb{R}^{n^2})에서는 n2×nn^2 \times n 야코비안 행렬이 된다.

Exercise 5.6

  • 문제 요약:
    1. f(t)=sin⁡(log⁡(t⊤t)),t∈RDf(\boldsymbol{t}) = \sin(\log(\boldsymbol{t}^\top \boldsymbol{t})), \boldsymbol{t} \in \mathbb{R}^D를 t\boldsymbol{t}로 미분하라.
    2. g(X)=tr(AXB),A∈RD×E,X∈RE×F,B∈RF×Dg(X) = \text{tr}(AXB), A \in \mathbb{R}^{D \times E}, X \in \mathbb{R}^{E \times F}, B \in \mathbb{R}^{F \times D}를 XX로 미분하라.
  • 풀이:
    1. 연쇄법칙: u=t⊤t  ⟹  dudt=2t⊤∈R1×Du = \boldsymbol{t}^\top \boldsymbol{t} \implies \frac{du}{d\boldsymbol{t}} = 2\boldsymbol{t}^\top \in \mathbb{R}^{1 \times D}. v=log⁡(u)  ⟹  dvdu=1uv = \log(u) \implies \frac{dv}{du} = \frac{1}{u}. f=sin⁡(v)  ⟹  dfdv=cos⁡(v)f = \sin(v) \implies \frac{df}{dv} = \cos(v). dfdt=cos⁡(v)⋅1u⋅2t⊤=2cos⁡(log⁡(t⊤t))t⊤tt⊤∈R1×D\frac{df}{d\boldsymbol{t}} = \cos(v) \cdot \frac{1}{u} \cdot 2\boldsymbol{t}^\top = \frac{2\cos(\log(\boldsymbol{t}^\top \boldsymbol{t}))}{\boldsymbol{t}^\top \boldsymbol{t}} \boldsymbol{t}^\top \in \mathbb{R}^{1 \times D}
    2. 5.5절 항등식 8번 적용: ∂g∂X=A⊤B⊤∈RE×F\frac{\partial g}{\partial X} = A^\top B^\top \in \mathbb{R}^{E \times F} 차원 확인: A⊤∈RE×DA^\top \in \mathbb{R}^{E \times D}, B⊤∈RD×F  ⟹  A⊤B⊤∈RE×FB^\top \in \mathbb{R}^{D \times F} \implies A^\top B^\top \in \mathbb{R}^{E \times F}로 XX의 차원과 정확히 일치한다.

Exercise 5.7

  • 문제 요약: 연쇄법칙을 사용하여 다음 함수의 미분을 구하고 모든 중간 편미분의 차원을 명시하라. (a) f(z)=log⁡(1+z),z=x⊤x,x∈RDf(z) = \log(1 + z), z = \boldsymbol{x}^\top \boldsymbol{x}, \boldsymbol{x} \in \mathbb{R}^D (b) f(z)=sin⁡(z),z=Ax+b,A∈RE×D,x∈RD,b∈RE\boldsymbol{f}(\boldsymbol{z}) = \sin(\boldsymbol{z}), \boldsymbol{z} = A\boldsymbol{x} + \boldsymbol{b}, A \in \mathbb{R}^{E \times D}, \boldsymbol{x} \in \mathbb{R}^D, \boldsymbol{b} \in \mathbb{R}^{E}
  • 풀이: (a) 중간 차원: ∂f∂z=11+z∈R1×1\frac{\partial f}{\partial z} = \frac{1}{1+z} \in \mathbb{R}^{1 \times 1}, ∂z∂x=2x⊤∈R1×D\frac{\partial z}{\partial \boldsymbol{x}} = 2\boldsymbol{x}^\top \in \mathbb{R}^{1 \times D}. dfdx=∂f∂z∂z∂x=2x⊤1+x⊤x∈R1×D\frac{df}{d\boldsymbol{x}} = \frac{\partial f}{\partial z} \frac{\partial z}{\partial \boldsymbol{x}} = \frac{2\boldsymbol{x}^\top}{1 + \boldsymbol{x}^\top \boldsymbol{x}} \in \mathbb{R}^{1 \times D} (b) sin⁡(z)\sin(\boldsymbol{z})는 원소별 적용이다. 중간 차원: ∂f∂z=diag(cos⁡(z))∈RE×E\frac{\partial \boldsymbol{f}}{\partial \boldsymbol{z}} = \text{diag}(\cos(\boldsymbol{z})) \in \mathbb{R}^{E \times E}, ∂z∂x=A∈RE×D\frac{\partial \boldsymbol{z}}{\partial \boldsymbol{x}} = A \in \mathbb{R}^{E \times D}. dfdx=∂f∂z∂z∂x=diag(cos⁡(Ax+b))A∈RE×D\frac{d\boldsymbol{f}}{d\boldsymbol{x}} = \frac{\partial \boldsymbol{f}}{\partial \boldsymbol{z}} \frac{\partial \boldsymbol{z}}{\partial \boldsymbol{x}} = \text{diag}(\cos(A\boldsymbol{x} + \boldsymbol{b})) A \in \mathbb{R}^{E \times D}

Exercise 5.8

  • 문제 요약: 다음 함수들의 도함수 dfdx\frac{df}{d\boldsymbol{x}}를 구하라. (a) f(z)=exp⁡(−12z),z=y⊤S−1y,y=x−μf(z) = \exp(-\frac{1}{2}z), z = \boldsymbol{y}^\top S^{-1} \boldsymbol{y}, \boldsymbol{y} = \boldsymbol{x} - \boldsymbol{\mu} (x,μ∈RD\boldsymbol{x},\boldsymbol{\mu}\in\mathbb{R}^D, S∈RD×DS\in\mathbb{R}^{D\times D}. 교재는 SS가 대칭이라고 하지 않았다) (b) f(x)=tr(xx⊤+σ2I)f(\boldsymbol{x}) = \text{tr}(\boldsymbol{x}\boldsymbol{x}^\top + \sigma^2 I) (c) f=tanh⁡(z)∈RM,z=Ax+b,A∈RM×N\boldsymbol{f} = \tanh(\boldsymbol{z}) \in \mathbb{R}^M, \boldsymbol{z} = A\boldsymbol{x} + \boldsymbol{b}, A \in \mathbb{R}^{M \times N}
  • 풀이: (a) dfdz=−12exp⁡(−12z)∈R1×1\frac{df}{dz} = -\frac{1}{2}\exp(-\frac{1}{2}z) \in \mathbb{R}^{1 \times 1}. dzdy=y⊤(S−1+S−⊤)∈R1×D\frac{dz}{d\boldsymbol{y}} = \boldsymbol{y}^\top (S^{-1} + S^{-\top}) \in \mathbb{R}^{1 \times D} (식 5.107: ∂∂yy⊤By=y⊤(B+B⊤)\frac{\partial}{\partial \boldsymbol{y}}\boldsymbol{y}^\top B\boldsymbol{y} = \boldsymbol{y}^\top(B+B^\top)에 B=S−1B=S^{-1}을 넣음). dydx=ID∈RD×D\frac{d\boldsymbol{y}}{d\boldsymbol{x}} = I_D \in \mathbb{R}^{D \times D}. dfdx=dfdzdzdydydx=−12f (x−μ)⊤(S−1+S−⊤)∈R1×D\frac{df}{d\boldsymbol{x}} = \frac{df}{dz}\frac{dz}{d\boldsymbol{y}}\frac{d\boldsymbol{y}}{d\boldsymbol{x}} = -\frac{1}{2} f\,(\boldsymbol{x}-\boldsymbol{\mu})^\top (S^{-1}+S^{-\top}) \in \mathbb{R}^{1 \times D} 여기서 f=exp⁡(−12(x−μ)⊤S−1(x−μ))f = \exp\left(-\frac{1}{2}(\boldsymbol{x}-\boldsymbol{\mu})^\top S^{-1}(\boldsymbol{x}-\boldsymbol{\mu})\right)는 원래 함수값이다(exp⁡(−12z)\exp(-\frac12z)를 미분하면 자기 자신의 −12-\frac12배). SS가 대칭이면(공분산 행렬처럼) S−⊤=S−1S^{-\top}=S^{-1}이라 괄호가 2S−12S^{-1}이 되고, 앞의 12\frac12과 약분되어 −f (x−μ)⊤S−1-f\,(\boldsymbol{x}-\boldsymbol{\mu})^\top S^{-1}로 줄어든다. (b) 대각합의 성질: tr(xx⊤)=x⊤x=∑xi2\text{tr}(\boldsymbol{x}\boldsymbol{x}^\top) = \boldsymbol{x}^\top \boldsymbol{x} = \sum x_i^2, tr(σ2I)=Dσ2\text{tr}(\sigma^2 I) = D\sigma^2. 따라서 f(x)=x⊤x+Dσ2f(\boldsymbol{x}) = \boldsymbol{x}^\top \boldsymbol{x} + D\sigma^2. dfdx=2x⊤∈R1×D\frac{df}{d\boldsymbol{x}} = 2\boldsymbol{x}^\top \in \mathbb{R}^{1 \times D} (c) ∂f∂z=diag(1−tanh⁡2(z))∈RM×M\frac{\partial \boldsymbol{f}}{\partial \boldsymbol{z}} = \text{diag}(1 - \tanh^2(\boldsymbol{z})) \in \mathbb{R}^{M \times M}, ∂z∂x=A∈RM×N\frac{\partial \boldsymbol{z}}{\partial \boldsymbol{x}} = A \in \mathbb{R}^{M \times N}. dfdx=diag(1−tanh⁡2(Ax+b))A∈RM×N\frac{d\boldsymbol{f}}{d\boldsymbol{x}} = \text{diag}(1 - \tanh^2(A\boldsymbol{x} + \boldsymbol{b})) A \in \mathbb{R}^{M \times N}

Exercise 5.9

  • 문제 요약: g(x,z,ν):=log⁡p(x,z)−log⁡q(z,ν)g(\boldsymbol{x}, \boldsymbol{z}, \boldsymbol{\nu}) := \log p(\boldsymbol{x}, \boldsymbol{z}) - \log q(\boldsymbol{z}, \boldsymbol{\nu}), z:=t(ϵ,ν)\boldsymbol{z} := \boldsymbol{t}(\boldsymbol{\epsilon}, \boldsymbol{\nu}) 일 때 연쇄법칙으로 dgdν\frac{d g}{d\boldsymbol{\nu}}를 구하라.
  • 풀이: 변수 ν\boldsymbol{\nu}는 두 경로로 gg에 영향을 준다:
    1. z=t(ϵ,ν)\boldsymbol{z} = \boldsymbol{t}(\boldsymbol{\epsilon}, \boldsymbol{\nu})를 거치는 간접 경로
    2. log⁡q(z,ν)\log q(\boldsymbol{z}, \boldsymbol{\nu})의 두 번째 인수로 직접 들어가는 직접 경로 전미분 연쇄법칙을 적용하면: dgdν=∂g∂z∂z∂ν+∂g∂ν\frac{d g}{d\boldsymbol{\nu}} = \frac{\partial g}{\partial \boldsymbol{z}} \frac{\partial \boldsymbol{z}}{\partial \boldsymbol{\nu}} + \frac{\partial g}{\partial \boldsymbol{\nu}}
    • ∂g∂z=∂log⁡p(x,z)∂z−∂log⁡q(z,ν)∂z∈R1×E\frac{\partial g}{\partial \boldsymbol{z}} = \frac{\partial \log p(\boldsymbol{x}, \boldsymbol{z})}{\partial \boldsymbol{z}} - \frac{\partial \log q(\boldsymbol{z}, \boldsymbol{\nu})}{\partial \boldsymbol{z}} \in \mathbb{R}^{1 \times E}
    • ∂z∂ν=∂t(ϵ,ν)∂ν∈RE×F\frac{\partial \boldsymbol{z}}{\partial \boldsymbol{\nu}} = \frac{\partial \boldsymbol{t}(\boldsymbol{\epsilon}, \boldsymbol{\nu})}{\partial \boldsymbol{\nu}} \in \mathbb{R}^{E \times F}
    • ∂g∂ν=−∂log⁡q(z,ν)∂ν∈R1×F\frac{\partial g}{\partial \boldsymbol{\nu}} = -\frac{\partial \log q(\boldsymbol{z}, \boldsymbol{\nu})}{\partial \boldsymbol{\nu}} \in \mathbb{R}^{1 \times F} 결합하면: dgdν=(∂log⁡p(x,z)∂z−∂log⁡q(z,ν)∂z)∂t(ϵ,ν)∂ν−∂log⁡q(z,ν)∂ν∈R1×F\frac{d g}{d\boldsymbol{\nu}} = \left( \frac{\partial \log p(\boldsymbol{x}, \boldsymbol{z})}{\partial \boldsymbol{z}} - \frac{\partial \log q(\boldsymbol{z}, \boldsymbol{\nu})}{\partial \boldsymbol{z}} \right) \frac{\partial \boldsymbol{t}(\boldsymbol{\epsilon}, \boldsymbol{\nu})}{\partial \boldsymbol{\nu}} - \frac{\partial \log q(\boldsymbol{z}, \boldsymbol{\nu})}{\partial \boldsymbol{\nu}} \in \mathbb{R}^{1 \times F} (이 수식은 VAE(변분 오토인코더)의 핵심인 재매개변수화 트릭(Reparameterization Trick)의 그래디언트 유도 공식 그 자체다!)

시험 직전 10분 요약

1. 미분 대상별 차원(Shape) 판정표 (분자 중심 표기법 기준)

함수 형태 ff입력 형태 x\boldsymbol{x}도함수 기호도함수의 차원 (Shape)명칭
스칼라 R\mathbb{R}스칼라 R\mathbb{R}dfdx\frac{df}{dx}1×11 \times 1 스칼라통상 도함수
스칼라 R\mathbb{R}열벡터 Rn\mathbb{R}^ndfdx\frac{df}{d\boldsymbol{x}}1×n1 \times n 행벡터기울기 (Gradient)
열벡터 Rm\mathbb{R}^m열벡터 Rn\mathbb{R}^ndfdx\frac{d\boldsymbol{f}}{d\boldsymbol{x}}m×nm \times n 행렬야코비안 (Jacobian)
행렬 Rm×n\mathbb{R}^{m \times n}열벡터 Rp\mathbb{R}^pdAdx\frac{dA}{d\boldsymbol{x}}m×n×pm \times n \times p 텐서텐서 야코비안
스칼라 R\mathbb{R}행렬 Rm×n\mathbb{R}^{m \times n}∂f∂X\frac{\partial f}{\partial X}m×nm \times n 행렬행렬 편미분

2. 외워 둘 행렬 미분 항등식

  1. 선형 형태: ∂(a⊤x)∂x=a⊤∈R1×n,∂(Ax)∂x=A∈Rm×n\frac{\partial (\boldsymbol{a}^\top \boldsymbol{x})}{\partial \boldsymbol{x}} = \boldsymbol{a}^\top \in \mathbb{R}^{1 \times n}, \quad \frac{\partial (A\boldsymbol{x})}{\partial \boldsymbol{x}} = A \in \mathbb{R}^{m \times n}
  2. 2차 형식: ∂(x⊤Bx)∂x=x⊤(B+B⊤)  ⟹  대칭 B일 때 2x⊤B\frac{\partial (\boldsymbol{x}^\top B \boldsymbol{x})}{\partial \boldsymbol{x}} = \boldsymbol{x}^\top (B + B^\top) \implies \text{대칭 } B \text{일 때 } 2\boldsymbol{x}^\top B
  3. 가중 오차 제곱합: ∂∂s(x−As)⊤W(x−As)=−2(x−As)⊤WA(W=W⊤)\frac{\partial}{\partial \boldsymbol{s}} (\boldsymbol{x} - A\boldsymbol{s})^\top W (\boldsymbol{x} - A\boldsymbol{s}) = -2(\boldsymbol{x} - A\boldsymbol{s})^\top W A \quad (W = W^\top)
  4. 대각합(Trace): ∂tr(X)∂X=I,∂tr(AXB)∂X=A⊤B⊤\frac{\partial \text{tr}(X)}{\partial X} = I, \quad \frac{\partial \text{tr}(AXB)}{\partial X} = A^\top B^\top
  5. 행렬식(Determinant): ∂det⁡(X)∂X=det⁡(X)(X−1)⊤,∂ln⁡det⁡(X)∂X=(X−1)⊤  ⟹  X 대칭이면 X−1\frac{\partial \det(X)}{\partial X} = \det(X)(X^{-1})^\top, \quad \frac{\partial \ln\det(X)}{\partial X} = (X^{-1})^\top \implies X \text{ 대칭이면 } X^{-1}
  6. 역행렬: ∂X−1∂t=−X−1∂X∂tX−1,∂(a⊤X−1b)∂X=−(X−1)⊤ab⊤(X−1)⊤\frac{\partial X^{-1}}{\partial t} = -X^{-1} \frac{\partial X}{\partial t} X^{-1}, \quad \frac{\partial (\boldsymbol{a}^\top X^{-1} \boldsymbol{b})}{\partial X} = -(X^{-1})^\top \boldsymbol{a} \boldsymbol{b}^\top (X^{-1})^\top

3. 시험장 체크리스트

  • 기울기를 쓸 때 행벡터(1×n1 \times n)로 적었는가?
  • 야코비안의 크기를 (출력 차원 mm) ×\times (입력 차원 nn)으로 정확히 맞추었는가?
  • 2차 형식 미분에서 행렬의 대칭성 조건(B=B⊤B = B^\top)을 확인했는가?
  • 헤시안 판정 시 고유값의 부호를 정확히 확인했는가? (모두 양수 →\to 극소, 부호 혼재 →\to 안장점)
  • 테일러 2차 전개 시 헤시안 앞의 12\frac{1}{2} 계수를 빠뜨리지 않았는가?