logo

행렬변수함수의 전미분 📂다변수벡터해석

행렬변수함수의 전미분

배경

스칼라 미분

스칼라 함수 f:RRf : \mathbb{R} \to \mathbb{R}보통의 미분을 생각해보자.

dfdx(1) \dfrac{d f}{d x} \tag{1}

이 표기는 마치 분수와 같이 생겼고, 계산할 때 실제로 그렇게 다루어도 됨이 보장되어있다. 가령 합성함수의 미분법인 연쇄법칙은 아래와 같이 마치 분수를 약분하는 것처럼 직관적으로 계산할 수 있다.

dfdt=dfdxdxdt \dfrac{d f}{d t} = \dfrac{d f}{d x} \dfrac{d x}{d t}

(1)(1)을 분수로 취급할 수 있다는 것은, dfdfdxdx를 각각의 의미를 지닌 대상으로 다룬다는 말과 같다. 이 맥락에서 dfdf(혹은 dxdx)는 ff(혹은 xx)의 아주 작은 변화량을 의미한다.

df=dfdxdxf의 작은 변화량=(x에 대한 f의 변화율) × (x의 작은 변화량)  \begin{align*} df &= \dfrac{d f}{d x} dx \tag{2} \\ \text{ff의 작은 변화량} &= \text{(xx에 대한 ff의 변화율) ×\times (xx의 작은 변화량) } \end{align*}

벡터 미분

이제 다변수 함수 f:RnRf : \mathbb{R}^{n} \to \mathbb{R}와 벡터 미분을 생각해보자. ff의 도함수는, ii번째 변수로 편미분한 것을 ii번째 성분으로 갖는 그래디언트로 주어진다.

xf=fx=[fx1fxn]T \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}}

이때 ff의 작은 변화량인 dfdf는 각 변수에 대한 ff의 변화량 fxi\dfrac{\partial f}{\partial x_{i}}과 각 변수의 변화량 dxidx_{i}를 모두 더한 값으로 정의된다. 이를 ff전미분total differential, 완전미분, 혹은 미분소differential라고 한다.

df=fx1dx1++fxndxn(3) df = \dfrac{\partial f}{\partial x_{1}}dx_{1} + \cdots + \dfrac{\partial f}{\partial x_{n}}dx_{n} \tag{3}

양변을 dxidx_{i}로 나누면, 각각의 변수는 서로 독립이므로, 실제로 해당 변수에 대한 ff의 변화율을 얻어 dfdf가 잘 정의되었음을 알 수 있다.

dfdxi=fx1dx1dxi++fxndxndxi=fxidxidxi=fxi \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)(3)는 아래와 같은 행렬곱으로도 표현할 수 있다.

df=[fx1fxn][dx1dxn](4) 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}

행벡터는 그래디언트 (xf)T(\nabla_{\mathbf{x}}f)^{\mathsf{T}}이다. 열벡터를 dx=[dx1dxn]Td\mathbf{x} = \begin{bmatrix} d x_{1} & \cdots & d x_{n} \end{bmatrix}^{\mathsf{T}}와 같이 표기하자. 이는 변수 (x1,x2,,xn)(x_{1}, x_{2}, \dots, x_{n})의 작은 변화량을 의미한다. 그러면 (4)(4)는 아래와 같이 두 벡터의 내적의 형태로 표현된다.

df=(xf)Tdx=xfx=xf,x(5) 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)(2)에서 xf=dfdx\nabla_{x}f = \frac{d f}{d x}라 표기하면 df=xfdxdf = \nabla_{x}f dx이므로 (5)(5)와 그 꼴이 정확히 일치하여, 벡터로의 일반화가 자연스럽게 되었음을 알 수 있다. 이제 같은 방식으로 행렬 미분으로의 일반화를 이끌어내보자.

행렬 미분

행렬 공간 위에서 정의된 함수 f:Rn×nRf : \mathbb{R}^{n \times n} \to \mathbb{R}을 생각해보자. 이 함수의 변수는 다음과 같은 행렬이다.

X=[x11x12x1nx21x22x2nxn1xn2xnn] \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}

벡터의 경우에서와 같이 dXd \mathbf{X}를 아래와 같이 정의하는 것이 자연스러울 것이다.

dX=[dx11dx12dx1ndx21dx22dx2ndxn1dxn2dxnn] 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}

또한 dfdf(3)(3)과 비슷하게 다음과 같이 정의하는 것이 자연스럽다.

df=i,j=1nfxijdxij df = \sum\limits_{i, j=1}^{n} \dfrac{\partial f}{\partial x_{ij}} d x_{ij}

우변은 두 행렬의 내적과 같은 꼴이다. 따라서 다음과 같이 표현할 수 있다.

df=[fxij],[dxij]=Tr([fxij]T,[dxij]) 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)

여기서 첫번째 행렬은 그래디언트 행렬 Xf=fX\nabla_{\mathbf{X}}f = \dfrac{\partial f}{\partial \mathbf{X}}이고 두번째 행렬은 X\mathbf{X}이다. 따라서 다음의 정리를 얻는다.

정리

행렬 공간에서 정의된 스칼라함수 f:Rn×nRf : \mathbb{R}^{n \times n} \to \mathbb{R}에 대해서, 전미분 dfdf는 다음과 같다.

df=Xf,dX=Tr((Xf)TdX)(6) 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}

여기서 Xf\nabla_{\mathbf{X}}f그래디언트 행렬, dXd \mathbf{X}X\mathbf{X}의 미분소이다.

Xf=fX=[fx11fx1nfxn1fxnn] \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}

dX=[dx11dx12dx1ndx21dx22dx2ndxn1dxn2dxnn] 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)(6)은 미분 계산에 매우 유용한데, Xf\nabla_{\mathbf{X}}f를 얻기 위해서 실제로 ff를 계산할 필요 없이 df=Tr(ATdX)df = \Tr (A^{\mathsf{T}} d \mathbf{X}) 꼴을 만들어주기만 하면, 행렬 AA가 바로 ff의 그래디언트 행렬이 된다. 자세한 내용은 아래를 참고하라.