원본 : [Matrix Calculus](https://souryadey.github.io/teaching/material/Matrix_Calculus.pdf)
가급적 원본을 꼭 보길 권함.
1. Notation
- Scalar는 lower case letter로 표기.
- Vector는 lower case bold letter로 표기한다.
- row vector (dimensions $1 \times n$)이거나
- column vector (dimensions $m \times 1$)
- 두가지가 있으나 기본적으로 column vector를 사용한다.
- Vector의 각각의 element는 subscript로 인덱스된 lower case letter(←scalar) $x_i$로 표기한다.
- Matrix는 upper cased letter로 표기한다. dimension은 $m \times n$으로 표기되며 $m$은 row의 수를, $n$은 열의 수를 나타낸다. Matrix의 각각의 element는 행과 열에 따라 index된 subscript가 붙은 lower case letter(←scalar) $x_{ij}$로 나타낸다.
- 주로 matrix까지만 이용할 예정이나, higher order tensor도 가끔 나올 수 있다. (matrix가 2nd order tensor임을 기억할 것).
Note 1
1. tensor의 개념을 기억하자.
- scalar는 0th order tensor,
- vector는 1st order tensor,
- matrix는 2nd order tensor임.
2. scalar나 vector는 matrix의 특별한 경우로 볼 수 있다.
- row vector는 $1 \times n$ matrix로 볼 수 있고, column vector는 $m \times 1$ matrix로 볼 수 있음.
- scalar는 $1 \times 1$ matrix로 간주할 수 있음.
vector와 scalar를 특정한 형태의 matrix인 점을 이용하면, matrix calculus는 각각의 calculus를 일반화한 것으로 간주할 수 있음. |
3. $f$의 $x$에 대한 derivative(도함수)는 $\dfrac{\partial f}{\partial x}$로 표기한다. 여기서 $f,x$는 scalar, vector, matrix 중 하나가 될 수 있다.
- Matrix calculus에서는 총 9개의 형태의 derivative가 있음.
- scalar, vector, matrix 3개이므로 $3 \times 3=9$임.
- 2절에서 matrix-matrix, 3절에서 나머지를 다룸.
일반적으로 사용되는 derivative들은 다음과 같음 (행은 분모에 열은 분자에 해당.)
4. Gradient of $f$ with respect to $x$ is $\nabla_x f=\left( \frac{\partial f}{\partial x}\right)^T$로 정의한다. 즉, gradient는 transpose of derivative임. ← gradient를 column vector로 표기하기 위한 조치임.
- The gradient at any point $x_0$ in the domain has a physical interpretation,
- its direction is the direction of maximum increase of the function $f$ at the point $x_0$, and
- its magnitude is the rate of increase in that direction.
- 일반적으로 $x$가 scalar일 때는 gradient를 다루지 않음.
Note 2 : Numerator Layout Convention
이 문서는 numerator layout convention (some times called the Jacobian formulation)을 따름.
layout convention은 미분을 수행한 derivative의 형태(dimension으로 생각하면 됨)가
- 분자(numerator) 기준(=미분이 되는 대상(피미분변수)을 기준), 또는
- 분모(denominator)의 기준(미분변수를 기준)
으로 결정되는지에 대한 규칙들 중 하나임.
numerator layout의 경우, 이름 그대로 피미분변수 기준으로 derivative의 dimension이 결정됨. |
- denominator layout convention ( sometimes called the Heissian formulation)도 많이 사용되기 때문에
여러 자료를 살펴볼 경우 어떤 layout으로 기재하고 있는지를 잘 살펴야 함. - 사용하는 layout convention을 일관되게 유지하는 것은 매우 중요함.
- 만일 denominator layout convention을 사용한 경우엔 이를 일관되게 사용해야 하며, 절대 이 둘을 혼재해서 사용하면 안 됨.
2. Basic Rules (=matrix by matrix)
앞서 Note1 에서 살펴본 것처럼 scalar와 vector가 matrix의 special case이므로,
matrix-matrix derivative를 general case로 삼아 scalar와 vector의 derivative를 구하는데 적용 가능함.
다음과 같이 $F(\cdot)$는 $m \times n$ matrix를 $p \times q$ matrix에 매핑시키는 함수라고 하자.
$$
F(\cdot): \underset{m\times n}{X}\rightarrow \underset{p \times q}{F(X)}
$$
$F(\cdot)$의 derivative $\dfrac{\partial F}{\partial X}$는 4th order tensor로 dimension이 $p\times q \times n \times m$이 된다.
이 4th order tensor는
- $n \times m$ (← denominator인 $X$의 transpose)의 차원의 outer matrix를 가지며,
- 해당 outer matrix의 각 element는 $p \times q$ 차원의 inner matrix (← numerator $F$와 똑같은 dimension임)이다.
다음은 outer matrix로 $n \times m$ (← denominator인 $X$의 transpose)의 차원임.
$$
\dfrac{\partial F}{\partial X}=\begin{bmatrix} \dfrac{\partial F}{\partial x_{1,1}} & \cdots & \dfrac{\partial F}{\partial x_{m,1}} \\ \vdots & \ddots & \vdots \\ \dfrac{\partial F}{\partial x_{1,n}} & \cdots & \dfrac{\partial F}{\partial x_{m,n}}\end{bmatrix} \tag{1a}
$$
where, the $(i,j)$th element is given as:
$$
\dfrac{\partial F}{\partial x_{i,j}}=\begin{bmatrix}\frac{\partial F_{1,1}}{\partial x_{i,j}} & \cdots & \frac{\partial F_{1,q}}{\partial x_{i,j}}\\ \vdots & \ddots & \vdots \\ \frac{\partial F_{p,1}}{\partial x_{i,j}} & \cdots & \frac{\partial F_{p,q}}{\partial x_{i,j}}\end{bmatrix}\tag{1b}
$$
- 위의 수식은 inner matrix로 $p \times q$ 차원으로 구성됨을 명심할 것.
앞서 matrix-matrix derivative에 대해 살펴본 부분(dimension을 주의해서 기억할 것)들로 부터 matrix의 derivative 에 대한 다음과 같은 몇가지 일반적 규칙을 얻을 수 있음. (아래의 규칙에서 $x,y$는 scalar
, vector
, matrix
가 될 수 있음.)
- Derivative $\dfrac{\partial y}{\partial x}$은
항상 outer matrix dimension을 denominator $x$의 transpose의 dimension으로 가짐. - Derivative $\dfrac{\partial y}{\partial x}$의 outer matrix의 각각의 element는 inner matrix이며,
해당 inner matrix는 numerator $y$의 dimension과 같음.
← dimension이 틀리면 안됨 (numerator layout convetoin 기준임) - Derivative는 일반적(항상은 아님)으로 chain rule을 따름.
i.e. $\dfrac{\partial f(g(x))}{\partial x}=\dfrac{\partial f(g(x))}{\partial g(x)}\dfrac{\partial g(x)}{\partial x}$ - Derivative는 일반적(항상은 아님)으로 product rule을 따름.
i.e. $\dfrac{\partial f(x) g(x)}{\partial x}=f(x)\dfrac{\partial g(x)}{\partial x}+g(x)\dfrac{\partial f(x)}{\partial x}$
3. Types of Derivatives
3.1 Scalar by Scalar
일반적인 derivative(도함수) 구하기와 차이가 없다.
Derivative가 scalar일 경우, $f^\prime(x)$로 표기되기도 함. i.e. $f(x)=x^n$이면 derivative $f^\prime(x)=nx^{n-1}$임.
3.2 Scalar by Vector : gradient가 여기에 해당하나 주의 필요..
$$f: \underset{m\times 1}{\textbf x} \rightarrow \underset{1\times 1}{f(\textbf x)}$$.
이 때 derivative는 $1 \times m$ 의 dimension을 가진 matrix, 즉 row vector임.
$$
\frac{\partial f(\textbf{x})}{\partial \textbf{x}}=\frac{\partial f}{\partial \textbf{x}} = \begin{bmatrix} \frac{\partial f}{\partial x_1} & \frac{\partial f}{\partial x_2} & \cdots & \frac{\partial f}{\partial x_m}\end{bmatrix} \tag{2}
$$
주의할 점은,
gradient $\nabla_{\textbf{x}}f$ 는 $\dfrac{\partial f}{\partial \textbf x}$의 transpose 라는 점임.
즉, gradient는 column vector임.
참고: Denominator layout convention
- Denominator layout convention에서는 scalar by vector derivative의 경우,
분모인 $\textbf{x}$를 기준으로 derivative의 dimension을 정하기 때문에,
$\textbf{x}$와 같은 dimension을 가지게 됨. - 주의할 건, Denominator layout convention에서도
gradient는 column vector임.
$$\frac{\partial f(\textbf{x})}{\partial \textbf{x}}=\frac{\partial f}{\partial \textbf{x}} = \begin{bmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2}\\ \vdots \\ \frac{\partial f}{\partial x_m}\end{bmatrix} \tag{2-1}$$
Note 3:
일부 문헌의 경우, 사용된 layout convention에 상관없이 단순하게 derivative를 그냥 gradient라고 부르는 경우도 있음.
(Some authors simply call this the gradient, irrespective of whether numerator or denominator layout is used.)
특히, 이같은 경우는 denominator layout에서 좀 더 자주 보이는 편임.
Denominator layout에서, $\frac{\partial f(\textbf{x})}{\partial \textbf{x}}, \frac{\partial f(X)}{\partial X}$들 (← 모두 scalar field를 미분)의 경우 각각 $\nabla_\textbf{x}f(\textbf{x}), \nabla_X f(X)$, 즉 gradient로 표기되기도 한다.
3.3 Vector by Scalar
$$\textbf f: \underset{1\times 1}{x} \rightarrow \underset{n\times 1}{\textbf f(x)}$$
이 때 derivative는 $n \times 1$ 의 dimension을 가진 matrix, 즉 column vector임.
$$
\dfrac{\partial \textbf{f}(x)}{\partial x} =\dfrac{\partial \textbf{f}}{\partial x} = \begin{bmatrix} \dfrac{\partial f_1}{\partial x} \\ \dfrac{\partial f_2}{\partial x} \\ \vdots \\ \dfrac{\partial f_n}{\partial x}\end{bmatrix} \tag{3}
$$
Denominator layout convention
- denominator가 scalar $x$인 경우 그냥 row vector로 나오게 됨.
- numerator의 경우, $\textbf{f}$의 dimention을 기준으로 하므로 numerator와 같은 dimension의 columne vector로 나오는 것과 차이가 있음.
$$\dfrac{\partial \textbf{f}}{\partial x} = \begin{bmatrix} \dfrac{\partial f_1}{\partial x} & \dfrac{\partial f_2}{\partial x} & \cdots & \dfrac{\partial f_n}{\partial x}\end{bmatrix} \tag{3-1}$$
3.4 Vector by Vector
$$\textbf{f}: \underset{m\times 1}{\textbf x} \rightarrow \underset{n\times 1}{\textbf f(\textbf x)}$$
이 때 derivative는 $n \times m$ 의 dimension을 가진 matrix이며 numerator layout convetion에서는 derivative가 Jacobian과 같다.
- derivative와 Jacobian이 같기 때문에 numerator layout의 경우 Jacobian formulation으로도 불림.
- Jacobian의 $(i,j)$th element는 $i$th output component($f_i$)를 $j$th input component($x_j$)로 scalar differentiation을 한 scalar임. (Its $(i, j)$th element is the scalar derivative of the $i$th output component w.r.t the $j$th input component)
$$
\dfrac{\partial \textbf{f}(\textbf{x})}{\partial \textbf{x}}=\dfrac{\partial \textbf{f}}{\partial \textbf{x}}=\begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_m} \\ \vdots&\ddots&\vdots\\ \frac{\partial f_n}{\partial x_1}&\cdots&\frac{\partial f_n}{\partial x_m}\end{bmatrix} \tag{4}
$$
참고: Denominator layout convention
- denominator인 column vector $\textbf{x}$의 형태를 기준으로 output의 columne이 결정됨.
- denominator layout convention에서는 derivate가 Jacobian의 transpose임.
$$
\dfrac{\partial \textbf{f}(\textbf{x})}{\partial \textbf{x}}=\dfrac{\partial \textbf{f}}{\partial \textbf{x}}=\begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_n}{\partial x_1} \\ \vdots&\ddots&\vdots\\ \frac{\partial f_1}{\partial x_m}&\cdots&\frac{\partial f_n}{\partial x_m}\end{bmatrix} \tag{4-1}
$$
3.4.1 Special case — Vectorized scalar function
$\underline{\textbf{f}}: \underset{m\times 1}{\textbf x} \rightarrow \underset{m\times 1}{\underline{\textbf{f}}(\textbf x)}$ 인 경우로 다음과 같이, vector $\textbf{x}$에 대해 하나의 scalar-scalar function이 element-wise로 적용된 경우임.
$$
\underline{\textbf{f}}\left( \begin{bmatrix}x_1 \\ x_2 \\ \vdots \\ x_m\end{bmatrix}\right)=\begin{bmatrix}f(x_1) \\ f(x_2) \\ \vdots \\ f(x_m)\end{bmatrix} \tag{5}
$$
위의 경우,
- derivative와 gradient가
- 모두 다음과 같은 $m \times m$ 의 diagonal matrix가 됨.
$$
\nabla_{\textbf{x}}\underline{\textbf{f}}=\dfrac{\partial \underline{\textbf{f}}}{\partial x}=\begin{bmatrix}f^\prime(x_1) & & & 0 \\ & f^\prime(x_2) & & \\ \\ & & \ddots & \\\\ 0& & & f^\prime(x_m) \end{bmatrix} \tag{6}
$$
여기서 $f^\prime(x_i)=\dfrac{\partial f(x_i)}{\partial x_i}$임.
Note : 다른 문헌들에서 vectorized scalar function의 derivative를 $m \times 1$ 형태의 vector로 다음과 같이 정의하기도 함. 이 문서에서는 식 6과 이를 구분하기 위해 다음과 같이 표기한다.
$$
\underline{f}^\prime(\textbf{x}) = \begin{bmatrix}f^\prime (x_1)\\\\ f^\prime(x_2)\\\\ \vdots \\f^\prime(x_m)\end{bmatrix} \tag{7}
$$
수식6과 7의 차이점을 살펴보자.
수식 6에 기재된 gradient와 $m$-dimensional vector $\textbf{a}$와의 곱은 다음과 같음.
$$
(\nabla_\textbf{x}\underline{\textbf{f}})\textbf{a}=\begin{bmatrix}f^\prime(x_1)a_1 \\ f^\prime(x_2)a_2 \\ \vdots\\ f^\prime(x_m)a_m \end{bmatrix} \tag{8}
$$
수식 7의 $\underline{f}^\prime(\textbf{x})$에서 수식 8과 같은 결과를 얻기 위해서는 두 vector간의 element-wise multiplication으로 정의되는 Hadamard product $\circ$가 필요함.
$$
\underline{\textbf{f}}^\prime(\textbf{x})\circ\textbf{a}=\begin{bmatrix}f^\prime(x_1)a_1 \\ f^\prime(x_2)a_2 \\ \vdots\\ f^\prime(x_m)a_m \end{bmatrix} \tag{9}
$$
3.4.2 Special Case — Hessian
3.2절에서 다룬
$f: \underset{m\times 1}{\textbf x} \rightarrow \underset{1\times 1}{f(\textbf x)}$ 에 대한 gradient는
vector-to-vector function 임.
즉, $\nabla_\textbf{x} f: \underset{m\times 1}{\textbf x} \rightarrow \underset{n\times 1}{\nabla_\textbf{x}f(\textbf x)}$임. 여기서 $$m=n$$임.
해당 gradient에 대한 derivative의 transpose를 Hessian이라고 부르며 이는 $f(\textbf{x})$에 대한 2차 미분에 해당한다.
$$
\begin{aligned}H &=\begin{bmatrix} \frac{\partial^2 f}{\partial x_1^2} & \cdots & \frac{\partial^2 f}{\partial x_1 \partial x_m} \\ \vdots&\ddots&\vdots\\ \frac{\partial^2 f}{\partial x_m\partial x_1}&\cdots&\frac{\partial^2 f}{\partial x_m^2}\end{bmatrix} \\ &=\left(\begin{bmatrix} \frac{\partial^2 f}{\partial x_1^2} & \cdots & \frac{\partial^2 f}{\partial x_m \partial x_1} \\ \vdots&\ddots&\vdots\\ \frac{\partial^2 f}{\partial x_1\partial x_m}&\cdots&\frac{\partial^2 f}{\partial x_m^2}\end{bmatrix}\right)^T \\ &=\left(\dfrac{\partial \nabla_\textbf{x}f}{\partial \textbf{x}}\right)^T\end{aligned}\tag{4}
$$
where
$$
\nabla_\textbf{x}f=\begin{bmatrix}f_1 \\ f_2 \\ \vdots \\ f_m \end{bmatrix}=\begin{bmatrix}\dfrac{\partial f}{\partial x_1} \\ \dfrac{\partial f}{\partial x_2} \\ \vdots \\\dfrac{\partial f}{\partial x_m} \end{bmatrix}, \dfrac{\partial \textbf{f}}{\partial \textbf{x}}=\begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_m} \\ \vdots&\ddots&\vdots\\ \frac{\partial f_n}{\partial x_1}&\cdots&\frac{\partial f_n}{\partial x_m}\end{bmatrix}
$$
- where에서의 Jacobian은 일반적인 $\textbf{f}: \underset{m\times 1}{\textbf x} \rightarrow \underset{n\times 1}{\textbf f(\textbf x)}$인 경우로 표기되었음을 주의.
- Hessian에서는 $m=n$이 된다.
위의 gradient의 derivative가 continuous한 경우, $\dfrac{\partial^2 f}{\partial x_i \partial x_j} = \dfrac{\partial^2 f}{\partial x_j \partial x_i}$가 성립하므로 Hessian은 symmetric matrix가 된다. (즉, transpose를 하나 안하나 똑같아짐.)
Schwarz's theorem에 따라,
2nd order derivative가 continuous인 경우
Hessian은 symmetric matrix인 점을 주의할 것.
3.5 Scalar by Matrix
$f: \underset{m\times n}{X} \rightarrow \underset{1\times 1}{f(X)}$ 인 경우로 derivative는 $n\times m$ matrix임.
$$
\dfrac{\partial f(X)}{\partial X}=\dfrac{\partial f}{\partial X}=\begin{bmatrix} \dfrac{\partial f}{\partial x_{1,1}} & \cdots &\dfrac{\partial f}{\partial x_{m,1}}\\ \vdots & \ddots & \vdots\\ \dfrac{\partial f}{\partial x_{1,n}} & \cdots &\dfrac{\partial f}{\partial x_{m,n}}\\ \end{bmatrix} \tag{11}
$$
Gradient $\nabla_X f(X)$는 input matrix $X$와 같은 dimension 즉 $m\times n$ matrix임.
참고: Denominator layout convention
- denominator인 $X$의 dimension이 바로 output의 dimension임.
$$ \dfrac{\partial f}{\partial X}=\begin{bmatrix} \dfrac{\partial f}{\partial x_{1,1}} & \cdots &\dfrac{\partial f}{\partial x_{1,n}}\\ \vdots & \ddots & \vdots\\ \dfrac{\partial f}{\partial x_{m,1}} & \cdots &\dfrac{\partial f}{\partial x_{m,n}}\\ \end{bmatrix} \tag{11-1} $$
3.6 Matrix by Scalar
$F: \underset{1\times 1}{x} \rightarrow \underset{p\times q}{F(x)}$ 인 경우로 derivative는 $p\times q$ matrix임.
$$
\dfrac{\partial F}{\partial x}=\begin{bmatrix}\frac{\partial F_{1,1}}{\partial x} & \cdots & \frac{\partial F_{1,q}}{\partial x}\\ \vdots & \ddots & \vdots \\ \frac{\partial F_{p,1}}{\partial x} & \cdots & \frac{\partial F_{p,q}}{\partial x}\end{bmatrix}\tag{12}
$$
3.7 Vector by Matrix
$F: \underset{m\times n}{X} \rightarrow \underset{p\times 1}{\textbf{f}(X)}$ 인 경우로 derivative는 3rd-order tensor임. 해당 tensor의 dimension은 $p\times n \times m$ 임. 이 tensor의 outer matrix는 3.5절의 수식 11과 같이 $n \times m$ dimension이며, 해당 outer matrix의 각 element는 $p$-dimensional column vector $\textbf{f}$를 각각의 scalar $x_{i,j}$에 대해 미분한 결과로 $p \times 1$의 matrix (or $p$-dimensional column vector)임.
$$
\dfrac{\partial \textbf f}{\partial X}=\begin{bmatrix} \dfrac{\partial \textbf f}{\partial x_{1,1}} & \cdots &\dfrac{\partial \textbf f}{\partial x_{m,1}}\\ \vdots & \ddots & \vdots\\ \dfrac{\partial \textbf f}{\partial x_{1,n}} & \cdots &\dfrac{\partial \textbf f}{\partial x_{m,n}}\\ \end{bmatrix} \tag{13}
$$
3.8 Matrix by Vector
$F: \underset{m\times 1}{\textbf{x}} \rightarrow \underset{p\times q}{F(\textbf x)}$ 인 경우로 derivative는 3rd-order tensor임.
해당 tensor의 dimension은 $p\times q \times m$ 로서, 이 tensor의 outer matrix는 3.2절의 수식 2과 같이 $1 \times m$ dimension, 즉 $m$dimensional row vector이며, 해당 outer matrix의 각 element는 $p \times q$ matrix $F$를 각각의 scalar $x_{i}$에 대해 미분한 결과로 $p \times q$의 matrix임.
$$
\dfrac{\partial F}{\partial \textbf{x}} = \begin{bmatrix} \dfrac{\partial F}{\partial x_1} & \dfrac{\partial F}{\partial x_2} & \cdots & \dfrac{\partial F}{\partial x_m}\end{bmatrix} \tag{14}
$$
4. Operations and Examples
4.1 Commutation (교환법칙)
commutation이 성립하지 않는 경우(e.q. matrix간의 곱)에는 연산의 순서가 derivative를 구하는 과정에서도 반드시 지켜져야 함.
하지만 commutation이 성립하는 경우(e.q. vector inner product, $\textbf{a}\cdot\textbf{b}=\textbf{b}\cdot\textbf{a}$)에는 derivative를 구하는 과정에서 순서가 바뀌어질 수 있다. 순서가 바뀌는 경우에 상관없이 우선적으로 생각해야 하는 것은 연산의 output(결과)의 dimension이 유지해야 한다는 것이다. 3장에서 살펴본 각 도함수의 dimension을 기억하고 해당 dimension에 맞게 나오도록 commutation이 가능한 경우, 연산의 순서를 바꾸어 처리해야 한다.
다음의 예(commutation이 가능하여 도함수 구할 때 연산의 순서를 바꿔야 하는 경우)를 살펴보자.
$$
\underset{n\times 1}{\textbf{f}(\textbf{x})}=(\underset{1 \times m}{\textbf{a}^T} \quad\underset{m \times 1}{\textbf{x}})\quad \underset{n \times 1}{\textbf{b}}
$$
위의 $\textbf{f}(\textbf{x})$에 대한 derivative $\dfrac{\partial\bf{f(x)}}{\partial \bf{x}}$는 dimension이 반드시 $n \times m$인 matrix여야 한다.
연산 순서를 그대로 유지하여 derivative를 다음과 같이 구했다고 하자.
$$
\dfrac{\partial \bf{f}}{\partial \bf x}=\textbf{a}^T\dfrac{\partial \textbf{x}}{\partial \textbf{x}}\textbf{b}=\textbf{a}^TI\textbf{b}=\textbf{a}^T\textbf{b}
$$
문제는 위의 결과 $\textbf{a}^T\textbf{b}$는 inner product로 결과가 scalar이다. 즉, 오답이다.(이 경우, commutation이 성립하여 연산의 순서가 바꾸어 처리해야 정답을 구할 수 있음)
이 문제에서 정답을 구하기 위해선 $(\textbf{a}^T\textbf{x})$가 scalar이기 때문에 $\textbf{b}$의 왼쪽에 위치하나 오른쪽에 위치하나 똑같다는 점을 주목해야한다.
$$
\dfrac{\partial \bf{f}}{\partial \bf x}=\dfrac{\partial \textbf{b}(\textbf{a}^T\textbf{x})}{\partial \bf x}=\textbf{b}\dfrac{\partial \textbf{x}}{\partial \textbf{x}}\textbf{a}^T=\textbf{b}I\textbf{a}^T=\textbf{b}\textbf{a}^T
$$
위와 같이 풀 경우 $n \times m$의 matrix가 정확히 나온다.
derivative의 dimension을 정확히 유지하는 것이 key이고, 익숙해지지 않으면 자주 틀리는 주 원인이 된다. |
4.2 Derivative of a transposed vector
Transposed vector의 자기자신에 대한 derivative는 identity matrix로 처리하면 된다. 주의할 것은 identity matrix로 처리하고 뒤에 있는 모든 것들에 대해 transpose를 해줘야 한다는 점이다. (우선 derivative가 있는 항에서 derivative를 $I$바꾸고 해당 $I$의 뒤에 있는 모든 것들에 transpose를 취하는 것임.)
다음의 함수의 $\textbf{w}$에 대한 derivative를 구하는 과정을 통해 위의 내용을 정확히 익히도록 하자.
$$
f(\textbf{w})=(y-\textbf{w}^T\textbf{x})^2=y^2-(\textbf{w}^T\textbf{x})y-y(\textbf{w}^T\textbf{x})+(\textbf{w}^T\textbf{x})(\textbf{w}^T\textbf{x})
$$
여기서 $y$와 $\textbf{x}$는 $\textbf{w}$에 대한 function이 아님. 우선 각 항(term)에 대해 derivative를 구하면 다음과 같음.
- $\dfrac{\partial y^2}{\partial \textbf{w}}=0^T$, i.e. a row vector of all 0s.
- $\dfrac{\partial (\textbf{w}^T\textbf{x})y}{\partial \textbf{w}} = \dfrac{\partial \textbf{w}^T}{\partial \textbf{w}}\textbf{x}y=(\textbf{x}y)^T=y^T\textbf{x}^T=y\textbf{x}^T$, scalar $y$의 경우 transpose해도 자기자신임.
- $\dfrac{\partial y(\textbf{w}^T\textbf{x})}{\partial \textbf{w}}= y\dfrac{\partial \textbf{w}^T}{\partial \textbf{w}}\textbf{x}=y\textbf{x}^T$
- $\dfrac{\partial (\textbf{w}^T\textbf{x})(\textbf{w}^T\textbf{x})}{\partial \textbf{w}}=\dfrac{\partial \textbf{w}^T}{\partial \textbf{w}}\textbf{x}(\textbf{w}^T\textbf{x})+(\textbf{w}^T\textbf{x})\dfrac{\partial \textbf{w}^T}{\partial \textbf{w}}\textbf{x}=(\textbf{x}^T\textbf{w})\textbf{x}^T+(\textbf{w}^T\textbf{x})\textbf{x}^T$, inner product의 결과는 scalar이므로 commutation law가 성립한다. 때문에 이 식은 $2(\textbf{w}^T\textbf{x})\textbf{x}^T$로 간략화할 수 있다.
이를 통해 derivative는 다음과 같음.
$$
\dfrac{\partial f}{\partial \textbf{w}}=-2y\textbf{x}^T+2(\textbf{w}^T\textbf{x})\textbf{x}^T
$$
4.3 Dealing with Tensors
Dimension이 $p \times q \times n \times m$인 tensor에 대해 vector로 pre- 또는 post-multiplication을 수행할 수 있다. matrix와 vector의 multiplication에서 vector와 matrix의 대응하는 차원이 일치하면 가능한 것처럼, tensor의 경우 inner-matrix 와 vector가 대응하는 차원이 일치하면 된다. $p \times q \times n \times m$인 tensor의 inner matrix의 dimension은 $p \times q$이므로 $1 \times p$인 row vector와 pre-multiplication을 수행시 해당 element는 scalar가 되며, $q\times 1$인 column vector와 post-multiplicatoin을 수행할 경우 역시 해당 element는 scalar가 된다. inner matrix들이 scalar가 되므로 outer matrix의 차원인 $n\times m$의 각 element가 모두 scalar가 되어 최종적으로 해당 tensor는 $n \times m$ matrix가 된다.
Example : $f(W)=\underset{1\times m}{\textbf{a}^T}\quad\underset{m\times n}{W}\quad\underset{n\times 1}{\textbf{b}}$
$f(W)$는 scalar이므로 $\dfrac{\partial f}{\partial W}$의 dimension은 $W$의 transpose와 같은 $n \times m$임.
$$
\dfrac{\partial f}{\partial W}=\textbf{a}^T\dfrac{\partial W}{\partial W}\textbf{b}
$$
- ...
- 여기서 $\dfrac{\partial f}{\partial W}$의 dimension이 $n \times m$을 이용하면 $\dfrac{\partial f}{\partial W}=\textbf{a}^T\dfrac{\partial W}{\partial W}\textbf{b}=\textbf{b}\textbf{a}^T$임을 알 수 있음.
위의 식에서 $\dfrac{\partial W}{\partial W}$은 $m \times n \times n \times m$을 dimension으로 가지는 tensor임. 일례로 $m=3, n=2$라고 가정하면 다음과 같음.
$$
\dfrac{\partial W}{\partial W}=\begin{bmatrix}\begin{bmatrix}1 & 0\\0 & 0\\0 & 0\end{bmatrix}&\begin{bmatrix}0 & 0\\1 & 0\\0 & 0\end{bmatrix}& \begin{bmatrix}0 & 0\\0 & 0\\1 & 0\end{bmatrix}\\ \begin{bmatrix}0 & 1\\0 & 0\\0 & 0\end{bmatrix}&\begin{bmatrix}0 & 0\\0 & 1\\0 & 0\end{bmatrix}& \begin{bmatrix}0 & 0\\0 & 0\\0 & 1\end{bmatrix}\end{bmatrix} \tag{15}
$$
위의 $\dfrac{\partial W}{\partial W}$에서 주목할 점은 $(i,j)$th inner matrix의 element가 $(j,i)$th element만 1이고 나머지가 모두 0인 점이다. $m \times n \times n \times m$을 dimension으로 가지는 tensor$\dfrac{\partial W}{\partial W}$에 대해 row-vector $\textbf{a}^T$와 pre-multiplication을, 그리고 column-vector $\textbf{b}$와 post-multiplication을 수행하면 다음과 같음 ($m=3, n=2$로 가정했으므로 $i\in{1,2}, j\in{1,2,3}$이 됨)
$$
\textbf{a}^T\dfrac{\partial W}{\partial W}\textbf{b}=\begin{bmatrix}a_1b_1 & a_2b_1 & a_3b_1\\a_1b_2 & a_2b_2 & a_3b_2\end{bmatrix} \tag{16}
$$
즉, $\dfrac{\partial f}{\partial W}=\textbf{b}\textbf{a}^T$임.
4.4 Gradient Example : L2 Norm
Problem : $f(\textbf{x})=\|\textbf{x}-\textbf{a}\|_2$ 일 때, $\nabla_\textbf{x}f(\textbf{x})$를 구하라.
difference vector의 L2 norm이므로 $f(\textbf{x})$는 scalar field이며, 결과값은 scalar임.
derivative는 row vector이고, gradient는 derivative의 transpose 즉, column vector임. 즉 gradient는 $\textbf{x}$와 같은 dimension을 가짐.
$$
\dfrac{\partial f}{\partial \textbf{x}}=\dfrac{\partial \sqrt{(\textbf{x}-\textbf{a})^T(\textbf{x}-\textbf{a})}}{\partial (\textbf{x}-\textbf{a})^T(\textbf{x}-\textbf{a})}\times \dfrac{\partial (\textbf{x}-\textbf{a})^T (\textbf{x}-\textbf{a})}{\partial \textbf{x}} \tag{17}
$$
여기서 $\dfrac{\partial \sqrt{(\textbf{x}-\textbf{a})^T(\textbf{x}-\textbf{a})}}{\partial (\textbf{x}-\textbf{a})^T(\textbf{x}-\textbf{a})}$는 scalar-scalar derivative이며 결과는 $\dfrac{1}{2 \sqrt{(\textbf{x}-\textbf{a})^T(\textbf{x}-\textbf{a})}}=\dfrac{1}{2|\textbf{x}-\textbf{a}|_2}$임.
나머지 항은 다음과 같음.
$$
\begin{aligned}\dfrac{\partial (\textbf{x}-\textbf{a})^T (\textbf{x}-\textbf{a})}{\partial \textbf{x}}&=\dfrac{\partial( \textbf{x}^T\textbf{x}-\textbf{a}^T\textbf{x}-\textbf{x}^T\textbf{a}+\textbf{a}^T\textbf{a})}{\partial \textbf{x}}\\&=(\textbf{x}^T+\textbf{x}^T)-\textbf{a}^T-\textbf{a}^T+0^T\\&=2(\textbf{x}^T-\textbf{a}^T)\end{aligned} \tag{18}
$$
즉, derivative는 다음과 같음.
$$
\dfrac{\partial f}{\partial \textbf{x}}=\dfrac{2(\textbf{x}^T-\textbf{a}^T)}{2\|\textbf{x}-\textbf{a}\|_2}=\dfrac{(\textbf{x}^T-\textbf{a}^T)}{\|\textbf{x}-\textbf{a}\|_2}
$$
구하고자 하는 gradient는 다음과 같음.
$$
\nabla_\textbf{x}f=\dfrac{\textbf{x}-\textbf{a}}{\|\textbf{x}-\textbf{a}\|_2}
$$
이는 $\textbf{a}$로부터 $\textbf{x}$로 향하는 unit displacement vector임. 이는 $f(\textbf x)$가 최대로 증가하려면, $\textbf{a}$와 $\textbf{x}$를 잇는 직선 상에서 $\textbf{a}$로부터 멀어지면 된다는 것으로 결국 gradient는 $f(\textbf{x})$가 최대로 증가하는 방향을 가르킴. 이는 $f(\textbf x)$가 최대로 감소하는 방향은 $-\text{gradient}$가 된다.
5. Notes and Further Reading
matrix들을 다룰 때, chain rule과 product rule이 반드시 성립하는 건 아님 (usually 일 뿐, always는 아님).
여기서 다룬 derivate로 어느정도 충분하지만, 모든 경우를 살펴보려면 Wikipedia의 Matrix calculus를 확인해야 함. 주의할 점은 denominator layout convention을 사용하는 문헌의 경우 이 문서의 derivaitive와 다른 형태 (주로 transpose 로 바뀌며 이에 따라 .pre- / post- multiplication등이 바뀌는 등의 변경이 있음)로 표기된다는 점임.
- However, some modified forms can hold when using the $\text{Trace}(·)$ function. For a full list of derivatives, the reader should consult a textbook or websites such as Wikipedia’s page on Matrix calculus. Keep in mind that some texts may use denominator layout convention, where results will look different.
- The chain rule and product rule do not always (←2절에서 usually라고 한 점을 주의) hold when dealing with matrices.
References
Denominator layou convention : https://www.kamperh.com/notes/kamper_matrixcalculus13.pdf
https://www.notion.so/mmmil/Matrix-Calculus-79a218af6ae848ad93674de3dd2531b7
'... > Math' 카테고리의 다른 글
[Math] Cross Entropy (0) | 2022.05.12 |
---|---|
[Math] Kullback-Leibler Divergence (1) | 2022.05.12 |
[Math] Jacobian : Summary (0) | 2022.05.07 |
[Math] Commonly used Vector derivatives. (0) | 2022.05.05 |
[Statistics] Covariance vs. Correlation (0) | 2022.05.01 |