행렬변수함수의 전미분
배경
스칼라 미분
스칼라 함수 $f : \mathbb{R} \to \mathbb{R}$과 보통의 미분을 생각해보자.
$$ \dfrac{d f}{d x} \tag{1} $$
이 표기는 마치 분수와 같이 생겼고, 계산할 때 실제로 그렇게 다루어도 됨이 보장되어있다. 가령 합성함수의 미분법인 연쇄법칙은 아래와 같이 마치 분수를 약분하는 것처럼 직관적으로 계산할 수 있다.
$$ \dfrac{d f}{d t} = \dfrac{d f}{d x} \dfrac{d x}{d t} $$
$(1)$을 분수로 취급할 수 있다는 것은, $df$와 $dx$를 각각의 의미를 지닌 대상으로 다룬다는 말과 같다. 이 맥락에서 $df$(혹은 $dx$)는 $f$(혹은 $x$)의 아주 작은 변화량을 의미한다.
$$ \begin{align*} df &= \dfrac{d f}{d x} dx \tag{2} \\ \text{$f$의 작은 변화량} &= \text{($x$에 대한 $f$의 변화율) $\times$ ($x$의 작은 변화량) } \end{align*} $$
벡터 미분
이제 다변수 함수 $f : \mathbb{R}^{n} \to \mathbb{R}$와 벡터 미분을 생각해보자. $f$의 도함수는, $i$번째 변수로 편미분한 것을 $i$번째 성분으로 갖는 그래디언트로 주어진다.
$$ \nabla_{\mathbf{x}}f = \dfrac{\partial f}{\partial \mathbf{x}} = \begin{bmatrix} \dfrac{\partial f}{\partial x_{1}} & \cdots & \dfrac{\partial f}{\partial x_{n}} \end{bmatrix}^{\mathsf{T}} $$
이때 $f$의 작은 변화량인 $df$는 각 변수에 대한 $f$의 변화량 $\dfrac{\partial f}{\partial x_{i}}$과 각 변수의 변화량 $dx_{i}$를 모두 더한 값으로 정의된다. 이를 $f$의 전미분total differential, 완전미분, 혹은 미분소differential라고 한다.
$$ df = \dfrac{\partial f}{\partial x_{1}}dx_{1} + \cdots + \dfrac{\partial f}{\partial x_{n}}dx_{n} \tag{3} $$
양변을 $dx_{i}$로 나누면, 각각의 변수는 서로 독립이므로, 실제로 해당 변수에 대한 $f$의 변화율을 얻어 $df$가 잘 정의되었음을 알 수 있다.
$$ \dfrac{d f}{d x_{i}} = \dfrac{\partial f}{\partial x_{1}} \dfrac{dx_{1}}{dx_{i}} + \cdots + \dfrac{\partial f}{\partial x_{n}} \dfrac{dx_{n}}{dx_{i}} = \dfrac{\partial f}{\partial x_{i}} \dfrac{dx_{i}}{dx_{i}} = \dfrac{\partial f}{\partial x_{i}} $$
그런데 여기서 $(3)$는 아래와 같은 행렬곱으로도 표현할 수 있다.
$$ df = \begin{bmatrix} \dfrac{\partial f}{\partial x_{1}} & \cdots & \dfrac{\partial f}{\partial x_{n}} \end{bmatrix} \begin{bmatrix} d x_{1} \\ \vdots \\ d x_{n} \end{bmatrix} \tag{4} $$
행벡터는 그래디언트 $(\nabla_{\mathbf{x}}f)^{\mathsf{T}}$이다. 열벡터를 $d\mathbf{x} = \begin{bmatrix} d x_{1} & \cdots & d x_{n} \end{bmatrix}^{\mathsf{T}}$와 같이 표기하자. 이는 변수 $(x_{1}, x_{2}, \dots, x_{n})$의 작은 변화량을 의미한다. 그러면 $(4)$는 아래와 같이 두 벡터의 내적의 형태로 표현된다.
$$ df = (\nabla_{\mathbf{x}}f)^{\mathsf{T}} d\mathbf{x} = \nabla_{\mathbf{x}}f \cdot \mathbf{x} = \braket{\nabla_{\mathbf{x}}f, \mathbf{x}} \tag{5} $$
스칼라 미분 $(2)$에서 $\nabla_{x}f = \frac{d f}{d x}$라 표기하면 $df = \nabla_{x}f dx$이므로 $(5)$와 그 꼴이 정확히 일치하여, 벡터로의 일반화가 자연스럽게 되었음을 알 수 있다. 이제 같은 방식으로 행렬 미분으로의 일반화를 이끌어내보자.
행렬 미분
행렬 공간 위에서 정의된 함수 $f : \mathbb{R}^{n \times n} \to \mathbb{R}$을 생각해보자. 이 함수의 변수는 다음과 같은 행렬이다.
$$ \mathbf{X} = \begin{bmatrix} x_{11} & x_{12} & \cdots & x_{1n} \\ x_{21} & x_{22} & \cdots & x_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n1} & x_{n2} & \cdots & x_{nn} \end{bmatrix} $$
벡터의 경우에서와 같이 $d \mathbf{X}$를 아래와 같이 정의하는 것이 자연스러울 것이다.
$$ d \mathbf{X} = \begin{bmatrix} d x_{11} & d x_{12} & \cdots & d x_{1n} \\ d x_{21} & d x_{22} & \cdots & d x_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ d x_{n1} & d x_{n2} & \cdots & d x_{nn} \end{bmatrix} $$
또한 $df$는 $(3)$과 비슷하게 다음과 같이 정의하는 것이 자연스럽다.
$$ df = \sum\limits_{i, j=1}^{n} \dfrac{\partial f}{\partial x_{ij}} d x_{ij} $$
우변은 두 행렬의 내적과 같은 꼴이다. 따라서 다음과 같이 표현할 수 있다.
$$ df = \Braket{ \left[ \dfrac{\partial f}{\partial x_{ij}} \right], \left[ dx_{ij} \right] } = \Tr \left( \left[ \dfrac{\partial f}{\partial x_{ij}} \right]^{\mathsf{T}}, \left[ dx_{ij} \right] \right) $$
여기서 첫번째 행렬은 그래디언트 행렬 $\nabla_{\mathbf{X}}f = \dfrac{\partial f}{\partial \mathbf{X}}$이고 두번째 행렬은 $\mathbf{X}$이다. 따라서 다음의 정리를 얻는다.
정리
행렬 공간에서 정의된 스칼라함수 $f : \mathbb{R}^{n \times n} \to \mathbb{R}$에 대해서, 전미분 $df$는 다음과 같다.
$$ df = \Braket{\nabla_{\mathbf{X}}f, d \mathbf{X}} = \Tr \left( \left( \nabla_{\mathbf{X}}f \right)^{\mathsf{T}} d \mathbf{X} \right) \tag{6} $$
여기서 $\nabla_{\mathbf{X}}f$는 그래디언트 행렬, $d \mathbf{X}$는 $\mathbf{X}$의 미분소이다.
$$ \nabla_{\mathbf{X}} f = \dfrac{\partial f}{\partial \mathbf{X}} = \begin{bmatrix} \dfrac{\partial f}{\partial x_{11}} & \cdots & \dfrac{\partial f}{\partial x_{1n}} \\ \vdots & \ddots & \vdots \\ \dfrac{\partial f}{\partial x_{n1}} & \cdots & \dfrac{\partial f}{\partial x_{nn}} \end{bmatrix} $$
$$ d \mathbf{X} = \begin{bmatrix} d x_{11} & d x_{12} & \cdots & d x_{1n} \\ d x_{21} & d x_{22} & \cdots & d x_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ d x_{n1} & d x_{n2} & \cdots & d x_{nn} \end{bmatrix} $$
설명
$(6)$은 미분 계산에 매우 유용한데, $\nabla_{\mathbf{X}}f$를 얻기 위해서 실제로 $f$를 계산할 필요 없이 $df = \Tr (A^{\mathsf{T}} d \mathbf{X})$ 꼴을 만들어주기만 하면, 행렬 $A$가 바로 $f$의 그래디언트 행렬이 된다. 자세한 내용은 아래를 참고하라.
- 트레이스 트릭
- [행렬식 트릭]