DAY20 - 벡터, 행렬의 미분
함수에서는 스칼라를 입력받아 스칼라를 출력하는 함수 뿐만 아니라, 벡터 또는 행렬을 입력 받아서 벡터 또는 행렬을 출력하는 함수들도 존재할 수 있습니다.
이럴 때도 최적화를 위해서는 미분을 할 수 있어야하는데, 벡터와 행렬의 미분은 다음과 같은 공식들을 따릅니다.
그리고 이 때 미분을 통해 만들어진 벡터를 "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 $$