기록하며 공부하는 Vision AI
[Linear Algebra] Part 03. Matrix Calculus 본문
개념을 정리하기 위해 2019년도 Stanford University에서 진행한 CS229: Machine Learning - The Summer Edition 강의와 강의 노트를 참고하였고, 본 코스에 들어가기 전에 진행되는 Pre-requisties review 파트를 통해 공부하고 정리했습니다.
지난 글까지해서 선형대수의 기본적인 개념 및 notation, matrix muliplication, operation and properties에 대해 살펴보았습니다. 이번 글에서 matrix calculus에 대해 다루는 것을 끝으로 머신러닝에 필요한 기본적인 선형대수 개념에 대한 리뷰를 마치고, 다음 글부터는 probability theory에 대해 간략히 다룰 예정입니다.
그럼 우선 matrix calculus 파트에 대한 리뷰를 시작하겠습니다.
4. Matrix Calculus
- The Gradient
$ \quad m \times n$ 사이즈의 행렬 A를 input으로 받고 실수 스칼라 값을 output으로 갖는 함수 $f:\mathbb{R}^{m \times n} \rightarrow \mathbb{R}$ 가 있다고 가정해보겠습니다. 이때, 함수 $f$의 gradient는 다음과 같이 행렬의 partial derivatives(편미분) 형태로 표현이 됩니다.
$\nabla_Af(A) \in \mathbb{R}^{m \times n}=\begin{bmatrix}
\frac{\partial f(A)}{\partial A_{11}} & \frac{\partial f(A)}{\partial A_{12}} & \cdots & \frac{\partial f(A)}{\partial A_{1n}} \\
\frac{\partial f(A)}{\partial A_{21}} & \frac{\partial f(A)}{\partial A_{22}} & \cdots & \frac{\partial f(A)}{\partial A_{2n}} \\
\vdots & \vdots & \ddots & \vdots \\
\frac{\partial f(A)}{\partial A_{m1}} & \frac{\partial f(A)}{\partial A_{m2}} & \cdots & \frac{\partial f(A)}{\partial A_{mn}}
\end{bmatrix}$
$ \quad $ 간단히 표현하자면, 이와 같습니다.
${(\nabla_Af(A))}_{ij} = \frac{\partial f(A)}{\partial A_{ij}}$
$ \quad $ $\nabla_Af(A) $의 사이즈 또한 $A$의 사이즈와 같다는 것을 알 수 있고, 행렬 A가 벡터 $x \in \mathbb{R}^n$인 경우에도 gradient를 구할 수 있습니다. 이때, $f(x)$는 스칼라 값을 결과로 갖는 경우에만 가능하고 $f(x)=Ax$와 같이 벡터를 output으로 갖는 경우에는 gradient를 계산할 수 있습니다.
$\nabla_xf(x)= \begin{bmatrix}
\frac{\partial f(x)}{\partial x_{1}}\\
\frac{\partial f(x)}{\partial x_{2}}\\
\vdots \\
\frac{\partial f(x)}{\partial x_{n}}
\end{bmatrix}$
$ \quad $ Gradient는 편미분의 등가 속성을 직접적으로 따라갑니다.
- $\nabla_x(f(x)+g(x))=\nabla_x f(x)+\nabla_x g(x)$
- $t \in \mathbb{R}$ 에 대해, $\; \nabla_x(tf(x))=t \nabla_xf(x)$
$ \quad $ 표현에 대해서도 주의를 기울여야 합니다. 예를 들어, $\mathbb{R}^m \rightarrow \mathbb{R}$ 인 function $f(z) = z^Tz$가 있고, 이에 대해 $\nabla_zf(z) = 2z$ 입니다. 이때, 벡터 $Ax$에 대해 $\nabla f(Ax)$를 해석하는 방법은 두가지가 있을 것입니다. $ \quad (A \in \mathbb{R}^{m \times n}, \; b \in \mathbb{R}^m) $
- $ \nabla f(Ax)=2(Ax)=2Ax \in \mathbb{R}^m$
- $g(x)=f(Ax)$ 라고 할 때, $ \nabla f(Ax)=\nabla_xg(x) \in \mathbb{R}^n$
$ \quad $ 보시다시피, 이 두가지 해석은 다른 결과를 나타낸다는 것을 알 수 있습니다. 첫 번째 해석은 m차원의 벡터를 산출하지만, 두 번째 해석은 n차원의 벡터를 산출합니다. 이렇기 때문에 우리는 변수에 대해 구별하여 명시하여야 합니다. 첫 번째처럼 해석을 할 경우엔 $ \nabla_z f(Ax)$로 표시하고, 두 번째처럼 해석할 경우에는 $ \nabla_x f(Ax) 로 표시하며 해석하면 될 것입니다.
- The Hessian
$ \quad \mathbb{R}^n$의 벡터 $x$ 를 input으로 하는 function $ f: \mathbb{R}^n \rightarrow \mathbb{R} $ 가 있고, output으로 실수 스칼라 값을 가질 때, 벡터 x에 대한 Hessian matrix ($n \times n$ matrix)는 다음과 같습니다.
$H=\nabla_{x}^{2}f(x) \in \mathbb{R}^{n \times n}=\begin{bmatrix}
\frac{\partial^2 f(x)}{\partial x_1^2} & \frac{\partial^2 f(x)}{\partial x_1 \partial x_2} & \cdots & \frac{\partial^2 f(x)}{\partial x_1 \partial x_n} \\
\frac{\partial^2 f(x)}{\partial x_2 \partial x_1} & \frac{\partial^2 f(x)}{\partial x_2^2} & \cdots & \frac{\partial^2 f(x)}{\partial x_2 \partial x_n} \\
\vdots & \vdots & \ddots & \vdots \\
\frac{\partial^2 f(x)}{\partial x_n \partial x_1} & \frac{\partial^2 f(x)}{\partial x_n \partial x_2} & \cdots & \frac{\partial^2 f(x)}{\partial x_n^2}
\end{bmatrix}$
$ \quad $ 간단히 표현하자면, 이와 같습니다.
${(\nabla_x^2f(x))}_{ij} = \frac{\partial^2 f(x)}{\partial x_i \partial x_j}$
$ \quad $ 이 표현식에서만 봐도 알 수 있듯이, Hessian은 항상 symmetric 하다는 것을 알 수 있습니다.
$\frac{\partial^2 f(x)}{\partial x_i \partial x_j} = \frac{\partial^2 f(x)}{\partial x_j \partial x_i}$