[머신러닝을 위한 기초수학] - 야코비안과 체인룰

Yerin Kim·2023년 4월 18일
0
post-thumbnail

야코비안(Jacobian)은 다변수 함수의 미분에 대한 개념으로, 벡터 함수의 미분을 나타낸다.
일차 함수의 도함수는 해당 함수의 기울기를 나타내듯이,
다변수 함수의 미분은 해당 함수의 입력 벡터에 대한 변화율을 나타낸다.

추가로,
야코비안 행렬은 다변수 함수의 모든 변수에 대한 편미분 값을 모아서 행렬로 만든 것이다.
편미분은 다변수 함수에서 한 변수를 다른 변수들은 상수로 취급하여 미분하는 것이다.
즉, 다변수 함수의 한 변수에 대한 미분을 구하는 것!

예를 들어, 다음과 같은 벡터 함수 f(x,y)가 있다고 가정해보자!

f(x,y) = (x^2, xy)

이 함수를 x와 y에 대해 미분하면 다음과 같은 야코비안 행렬이 생성된다.

J(f) = [[2x, 0], [y, x]]

또 다른 예 >>> J(f)의 크기는 n x n이다.

f(x,y) = (x^2y, xy^3)
J(f) = [ ∂f1/∂x  ∂f1/∂y ]
       [ ∂f2/∂x  ∂f2/∂y ]

J(f) = [ 2xy    x^2  ]
       [ y^3   3xy^2 ]

J(f)의 각 항목을 구한다.

∂f1/∂x = 2xy
∂f1/∂y = x^2
∂f2/∂x = y^3
∂f2/∂y = 3xy^2

모든 xi와 xj에 대해 ∂f(xi, x2, ..., xn)/∂xj 값을 계산한다!

따라서, f(x,y) = (x^2y, xy^3)의 야코비안 행렬은 다음과 같다.

J(f) = [ 2xy    x^2   ]
       [ y^3   3xy^2 ]

또 다른 예

f(x,y,z) = (x^2y, 3xyz, y^2z^3)
J(f) = [ ∂f1/∂x  ∂f1/∂y  ∂f1/∂z ]
       [ ∂f2/∂x  ∂f2/∂y  ∂f2/∂z ]
       [ ∂f3/∂x  ∂f3/∂y  ∂f3/∂z ]

J(f) = [  2xy     x^2       0    ]
       [  3yz      3xz     3xy   ]
       [  0   2yz^3   3y^2z^2    ]

J(f)의 각 항목을 구한다!

∂f1/∂x = 2xy
∂f1/∂y = x^2
∂f1/∂z = 0

∂f2/∂x = 3yz
∂f2/∂y = 3xz
∂f2/∂z = 3xy

∂f3/∂x = 0
∂f3/∂y = 2yz^3
∂f3/∂z = 3y^2z^2

모든 xi와 xj에 대해 ∂f(xi, x2, ..., xn)/∂xj 값을 계산한다.

따라서, f(x,y,z) = (x^2y, 3xyz, y^2z^3)의 야코비안 행렬은 다음과 같다.

J(f) = [  2xy     x^2       0    ]
       [  3yz      3xz     3xy   ]
       [  0   2yz^3   3y^2z^2    ]

체인룰(chain rule)은 미분법에서 합성함수의 미분에 대한 법칙!
합성함수란, 함수 g와 f가 있을 때, f(g(x))와 같이 구성된 함수이다.

체인룰을 사용하면 합성함수의 미분을 더 쉽게 계산할 수 있다.

체인룰 >>> d(f(g(x)))/dx = (df/dg) * (dg/dx)

여기서 df/dg는 f를 g의 함수로 미분한 것이며, dg/dx는 g를 x의 함수로 미분한 것이다.

야코비안 행렬은 다변수 함수에서 각 입력 변수의 변화가 함수 출력에 어떤 영향을 미치는지를 나타내는 행렬이다.

예를 들어, 함수 f(x,y)의 야코비안 행렬은 다음과 같이 나타낼 수 있다.

∂f/∂x = [ ∂f/∂x ∂f/∂y ]
∂f/∂y = [ ∂f/∂y ∂f/∂y ]

이 행렬에서 (1,1) 위치의 원소 ∂f/∂x는 x가 변할 때 f가 얼마나 변화하는지를 나타내며,
(2,1) 위치의 원소 ∂f/∂y는 y가 변할 때 f가 얼마나 변화하는지를 나타낸다.

이러한 야코비안 행렬은 다양한 분야에서 활용되며,
최적화 알고리즘 및 비선형 연립방정식을 푸는 수치적 방법 등에서도 중요한 역할을 하고있다.

profile
내일의 나는, 오늘의 도전으로 만들어진다!

0개의 댓글