EDUCATION/DSS Online 6기

DAY20 - 벡터, 행렬의 미분

Kululu_ 2021. 2. 9. 15:19

함수에서는 스칼라를 입력받아 스칼라를 출력하는 함수 뿐만 아니라, 벡터 또는 행렬을 입력 받아서 벡터 또는 행렬을 출력하는 함수들도 존재할 수 있습니다.

 

이럴 때도 최적화를 위해서는 미분을 할 수 있어야하는데, 벡터와 행렬의 미분은 다음과 같은 공식들을 따릅니다.

그리고 이 때 미분을 통해 만들어진 벡터를 "gradient vector"라고 하고 $ \nabla f $로 표기합니다.

 

1. 스칼라를 벡터로 미분

$$ x = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_N \end{bmatrix},\quad f(x) \in R $$

$$ \nabla f = \frac{\partial f}{\partial x} = \begin{bmatrix} \frac{\partial f}{\partial x_1} \\ \vdots \\ \frac{\partial f}{\partial x_N} \end{bmatrix} $$

 

ex)

$$ f\left(\begin{bmatrix} x \\ y \\ z \end{bmatrix}\right) = x + y + z$$

$$ \nabla f = \begin{bmatrix} \frac{\partial f}{\partial x} \\ \frac{\partial f}{\partial y} \\ \frac{\partial f}{\partial z} \end{bmatrix} = \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} $$

 

 

 

2. 벡터를 스칼라로 미분

$$ f(x) = \begin{bmatrix} f_1(x) \\ f_2(x) \\ \vdots \\ f_N(x) \end{bmatrix} $$

$$ \nabla f = \frac{\partial f}{\partial x} = \begin{bmatrix} \frac{\partial f_1}{\partial x} & \frac{\partial f_2}{\partial x} & \dots & \frac{\partial f_N}{\partial x} \end{bmatrix} $$

 

보통 벡터는 열벡터로 나타내는 것이 기본이지만 벡터를 스칼라로 미분할 때는 행벡터로 주로 표현합니다.

 

3. 벡터를 벡터로 미분

$$ f(x) = \begin{bmatrix} f_1(x) \\ f_2(x) \\ \vdots \\ f_N(x) \end{bmatrix},\ x \in R^M $$

$$ \frac{\partial f}{\partial x} = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \frac{\partial f_2}{\partial x_1} & \dots & \frac{\partial f_N}{\partial x_1} \\ \frac{\partial f_1}{\partial x_2} & \frac{\partial f_2}{x_2} & \dots & \frac{\partial f_N}{\partial x_2} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial f_1}{\partial x_M} & \frac{\partial f_2}{\partial x_M} & \dots & \frac{\partial f_N}{\partial x_M} \end{bmatrix} $$

 

이와 같이 벡터를 벡터로 미분하게 되면 가능한 모든 조합에 대해 도함수가 존재하여 행렬이 나오게 되는데, 이 행렬은 "자코비안 행렬"이라고 합니다. 

자코비안 행렬은 벡터를 벡터로 미분한 결과 행렬을 전치시킨 형태 입니다.

$$ J = \begin{bmatrix}
\dfrac{\partial f_1}{\partial x_1} & \cdots & \dfrac{\partial f_1}{\partial x_M}\\
\vdots & \ddots & \vdots\\
\dfrac{\partial f_N}{\partial x_1} & \cdots & \dfrac{\partial f_N}{\partial x_M} 
\end{bmatrix} $$

 

 

 

4. 스칼라를 행렬로 미분

$$f(X),\ X \in R^{M,N}$$

$$ \frac{\partial f}{\partial X} = \begin{bmatrix} \dfrac{\partial f}{\partial x_{1,1}} & \dfrac{\partial f}{\partial x_{1,2}} & \cdots & \dfrac{\partial f}{\partial x_{1,N}}\\ \dfrac{\partial f}{\partial x_{2,1}} & \dfrac{\partial f}{\partial x_{2,2}} & \cdots & \dfrac{\partial f}{\partial x_{2,N}}\\ \vdots & \vdots & \ddots & \vdots\\ \dfrac{\partial f}{\partial x_{M,1}} & \dfrac{\partial f}{\partial x_{M,2}} & \cdots & \dfrac{\partial f}{\partial x_{M,N}}\\ \end{bmatrix} $$

 

 

데이터 분석에서 많이 등장하는 벡터 또는 행렬의 미분은 일종의 법칙과도 같이 사용되고 있습니다.

 

1. 선형모형 미분

 

$$ f(x) = w^Tx,\ x  \in R^N $$

$$ \frac{\partial f}{\partial x} = \nabla f = w $$

 

2. 이차형식 미분

 

$$ f(x) = x^TAx,\ x \in R^N $$

$$ \frac{\partial f}{\partial x} = \nabla f = (A + A^T)x $$

 

3. 행렬벡터 곱 미분

 

$$ f(x) = Ax, \ x \in R^N $$

$$ \frac{\partial f}{\partial x} = \nabla f = A^T $$

 

4. 행렬 곱의 대각성분 미분

$$ f(X) = tr(WX),\ X \in R^{N\times N},\ W \in R^{N\times N} $$

$$ \frac{\partial f}{\partial X} = W^T $$

 

5. 행렬식의 로그 미분

$$ f(X) = \log det(X) = \log |X| $$

$$ \frac{\partial f}{\partial X} = (X^{-1})^T $$