행렬미분 스터디 2주차 내용 정리

Dyung·2025년 7월 12일

Optimization

목록 보기
2/4

2.4 Revisiting multivariable calculus, Part 2: Vector-valued functions

주제

  • 다변수 미적분 복습 2: 벡터 값 함수
    (Revisiting multivariable calculus, Part 2: Vector-valued functions)

핵심 내용

  • 벡터 값을 내는 함수의 미분(야코비안, Jacobian) 개념을 정리하고, 선형 연산자 관점에서 해석한다
    (Review the differentiation of vector-valued functions—Jacobian matrices—and reinterpret them as linear operators.)

세부 내용

  • 야코비안(Jacobian) 정의
    • f:RnRmf: \mathbb{R}^n \to \mathbb{R}^m형태의 함수에서, 미분 결과는 m×nm \times n크기의 야코비안 행렬(Jacobian matrix)이 됨.
    • 각 원소는 Jij=fixjJ_{ij} = \frac{\partial f_i}{\partial x_j}(i번째 출력, j번째 입력).
  • 선형 근사(Linear approximation)
    • 임의의 입력 변화 dxdx에 대해 출력 변화 df=Jdxdf = J dx로 근사.
  • 예시
    -f(x)=Axf(x) = Ax(A: 상수 행렬)일 때, f(x)=Af'(x) = A, 즉 A 자체가 야코비안.
  • 미분 규칙
    • 합의 미분(Sum rule): (g+h)=g+h(g+h)' = g' + h'
    • 곱의 미분(Product rule): (gh)=gh+gh(gh)' = g'h + gh'(행렬/벡터의 경우 곱셈 순서 주의)
  • 실제 계산
    • 벡터 함수의 미분은 야코비안 행렬로 표현되고, 입력 변화에 대한 출력의 1차 근사로 사용됨.

2.5 The Chain Rule

주제

  • 연쇄법칙(Chain Rule)과 그 일반화
    (The Chain Rule and its generalization)

핵심 내용

  • 함수의 합성에 대한 미분 규칙을 다변수 및 행렬 함수에 확장한다
    (Generalize the chain rule for compositions of functions to multivariable and matrix functions.)

세부 내용

  • 연쇄법칙(Chain rule) 공식
    - f(x)=g(h(x))f(x) = g(h(x))일 때,
    f(x)=g(h(x))h(x)f'(x) = g'(h(x)) \cdot h'(x)(야코비안 행렬의 곱)
    - 곱셈 순서에 주의: 출력에서 입력 방향(왼쪽에서 오른쪽)으로 곱함.
  • 행렬 크기와 곱셈
    • g:m×pg': m \times p, h:p×nh': p \times n이면, f:m×nf': m \times n
  • 연쇄법칙의 계산 비용
    • 곱셈 순서(왼→오, 오→왼)에 따라 계산 효율이 크게 달라짐.
    • 입력이 많고 출력이 적을 때(reverse mode, 역전파/backpropagation)가 효율적.
    • 출력이 많고 입력이 적을 때(forward mode)가 효율적.
  • 예시
    - f(x)=a(b(c(x)))f(x) = a(b(c(x)))일 때,
    f(x)=a(b(c(x)))b(c(x))c(x)f'(x) = a'(b(c(x))) \cdot b'(c(x)) \cdot c'(x)
  • 실제 응용
    • 신경망, 최적화 등에서 연쇄법칙은 역전파(backpropagation)와 자동 미분(automatic differentiation)의 핵심.

2.6 Beyond Multi-Variable Derivatives

주제

  • 다변수 미분을 넘어: 일반 벡터 공간에서의 미분
    (Beyond multi-variable derivatives: Differentiation in general vector spaces)

핵심 내용

  • 입력과 출력이 행렬, 함수 등 더 일반적인 벡터 공간에 속하는 함수의 미분 개념을 확장한다
    (Extend the concept of derivatives to functions between general vector spaces, such as matrices or functions.)

세부 내용

  • 행렬 함수의 미분 예시
    - f(A)=A3f(A) = A^3의 미분:
    df=dAA2+AdAA+A2dAdf = dA \cdot A^2 + A \cdot dA \cdot A + A^2 \cdot dA
    - f(A)=A1f(A) = A^{-1}의 미분:
    df=A1dAA1df = -A^{-1} dA A^{-1}
  • 미분 결과의 형태
    • 입력과 출력이 모두 행렬이면 미분 결과는 4차원 배열(텐서) 또는 벡터화(vectorization)된 행렬이 될 수 있음.
  • 선형 연산자 관점
    • 미분 결과를 일반적인 선형 연산자로 해석하고, 필요에 따라 야코비안 행렬 등으로 표현 가능.
  • 확장성
    • 이러한 일반화는 텐서, 함수 공간 등 다양한 수학적 구조로 확장 가능.

주요 영어 표현

  • Jacobian matrix
  • Chain rule
  • Linear operator
  • Reverse mode (backpropagation)
  • Forward mode
  • Vectorization
  • General vector space

스터디 내용 정리

"미분 가능하다"의 정의가 무엇인가?

f(x+delta x)-f(x) = f'(x)[delta x] + o(||delta x||)를 만족하는 derivative f'(x), o(||delta x||)가 존재한다.

다시말해, delta x->0 일 때
df = f(x+dx)-f(x)=f'(x)[dx]

df : |R ^m 의 vector
f'(x) = linear transformation
dx : |R^n 의 vector

Jacobian matrix : mn의 크기
df = J dot product dx (행렬과 벡터의 곱셈=선형변환)

J_1 = f_1의 gradient^T
J_n = f_1의 gradient^T

방향 도함수(directional derivative)와 편함수

f:RnRmf: \mathbb{R}^n \to \mathbb{R}^m의 N-방향 벡터에 대한 도함수는

lim h->0 f(x+h)-f(x)/h

f:RnRmf: \mathbb{R}^n \to \mathbb{R}^m이 x=a에서 미분이 가능하면, 임의의 vRnv\in \mathbb{R^n}에 대해 v-방향도함수가 존재하고, f의 x=a에서 야코비안 행렬을 Jf(a)J_f(a)라 하면,

OvF(a)=Jf(a)vO_vF(a)=J_f(a)v

f:미분가능f:미분가능 은 모든 점에서 편미분값이 존재한다는 조건의 필요충분 조건이 아니다.

f가 x=a 에서 편미분값이 존재하고, 편도함수가 연속함수이면 f는 x=a에서 미분가능하다. (=일급함수를 지칭함.)

$f(x)=Ax 의 Jacobian은?

f(x)=Af'(x)=A

생각해보면, 어떤 함수를 미분하는 것은 자기 자신을 가장 닮은 선형 근사를 찾는 것이다. 따라서, 직관적으로 생각했을 때 f(x)의 야코비안은 A인 것이다.

위의 그림은 아래의 코드를 사용해
야코비안 개념을 이해하기 쉽도록 시각화 한 것이다.

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 원래 곡면 정의
x = y = np.linspace(0, 2, 30)
X, Y = np.meshgrid(x, y)
Z = X**2 + Y**2

# 접평면 정의 (야코비안 기반)
x0, y0 = 1, 1
z0 = x0**2 + y0**2  # z=2
dfdx, dfdy = 2*x0, 2*y0  # 2, 2

# 평면 근사
Z_tangent = z0 + dfdx*(X - x0) + dfdy*(Y - y0)

# 플롯
fig = plt.figure(figsize=(10,7))
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, alpha=0.6, cmap='viridis', label='곡면')
ax.plot_surface(X, Y, Z_tangent, alpha=0.4, color='red', label='접평면')
ax.scatter(x0, y0, z0, color='black', s=50)

ax.set_title("곡면과 접평면: 야코비안 기반 선형 근사")
plt.show()
개념설명
야코비안다변수 함수의 기울기 정보 모은 행렬 (벡터 미분)
선형 근사어떤 점에서의 야코비안을 통해 함수의 값을 1차 함수로 근사
시각적 의미곡면의 접평면으로 근사하는 것
응용뉴턴 방법, 최적화, 로봇 제어, 3D 변환 등

결국, 국소 모델링에 중요한 야코비안 행렬은 역전파, 수치 최적화(경사 하강법)에 중요한 것이다.

행렬의 곱셈법칙 그리고 연쇄법칙의 계산 비용

계산의 크기가 달라지기 때문에 (AB)C 의 계산 순서를 가진다. input(feature)의 차원이 output(e.g. class type)의 차원보다 압도적으로 크기 때문에 reverse 모드로 계산하여야 연산량을 줄일 수 있게 된다.

참고는 Auto Differential 개념

쉽게 말해, 괄호(floating operation)를 어디에다가 두느냐에 따라 연산량이 달라지게 된다는 것이다.

Matrix function

  • 행렬 to 행렬 f(A)=A^2
  • 행렬 to 벡터 f(A)=A
  • 행렬 to 실수 f(A)=|A|
    f(A)= xr(A)
    f(A)=x^TAx
              

이때의 f' = ?

profile
AI / NLP / NLU

0개의 댓글