logo

미분의 일반화: 그래디언트 행렬과 행렬 미분 📂다변수벡터해석

미분의 일반화: 그래디언트 행렬과 행렬 미분

정의

스칼라 함수 f:Rn×nRf : \mathbb{R}^{n \times n} \to \mathbb{R}행렬 X=[xij]Rn×n\mathbf{X} = [x_{ij}] \in \mathbb{R}^{n \times n}에 대해서, 그래디언트 행렬 Xf\nabla_{\mathbf{X}} f를 다음과 같이 정의한다.

[Xf]ij=fxij(i,j=1,,n) [\nabla_{\mathbf{X}} f]_{ij} = \dfrac{\partial f}{\partial x_{ij}} \quad (i,j=1,\dots,n)

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}

설명

행렬이라는게 벡터의 모양을 바꾼 것이라 생각하면, 그래디언트로부터 자연스럽게 일반화 가능하다. 애초에 그래디언트라는 것도 벡터로 미분하는 것이 아닌, 벡터의 각 성분별로 미분한 것을 다시 벡터로 만든것에 불과하다. 그러면 행렬로 미분한다는 개념도 정말 행렬로 미분하는 것이 아니라 행렬의 각 성분으로 미분한 것을 다시 행렬로 만드는 것일 뿐이다. 본질적으로는 다변수 함수의 미분과 다를 것이 없다는 것을 기억하자. 물론 굳이 말하자면 이건 행렬"로" 미분하는 것이 맞고, 행렬"을" 미분하는 것은 이와는 또 다르니 주의하자. 행렬"을" 미분한다는 것은 행렬함수를 미분한다는 의미이다.

머신러닝, 딥러닝을 포함하여 데이터를 다루는 곳에서는 벡터와 행렬 계산, 그리고 이들의 미분값 계산이 빈번하게 등장하기 때문에 사용되는 표기법이라 생각해도 좋다. 연산자 X=X\nabla_{\mathbf{X}} = \dfrac{\partial}{\partial \mathbf{X}}를 행렬 그래디언트, 계산된 행렬 Xf\nabla_{\mathbf{X}}f를 그래디언트 행렬이라 부르면 적절할 것 같다.

같이 보기

일반화

위의 설명을 잘 생각해보면, 결국 본질적으로 미분당하는 값과 미분할 변수가 상수냐 다변수냐의 얘기이기 때문에 굳이 행렬에 국한할할 필요는 없다. 아래의 표와 같이 다양한 경우에 대해 정의할 수 있다.

변수 \ 값스칼라 yy벡터 y\mathbf{y}행렬 Y\mathbf{Y}
스칼라yx\dfrac{\partial y}{\partial x}yx\dfrac{\partial \mathbf{y}}{\partial x}Yx\dfrac{\partial \mathbf{Y}}{\partial x}
벡터yx\dfrac{\partial y}{\partial \mathbf{x}}yx\dfrac{\partial \mathbf{y}}{\partial \mathbf{x}}
행렬yX\dfrac{\partial y}{\partial \mathbf{X}}

라고 했지만 사실은 새로운 개념이 아니라 기존의 것들을 보기 좋게 하나의 표기법으로 통일한 것이다.

변수 \ 값스칼라 yy벡터 y\mathbf{y}행렬 Y\mathbf{Y}
스칼라미분그래디언트행렬함수 미분
벡터벡터값함수미분자코비안
행렬행렬 그래디언트

여기서 자코비안이나 연쇄법칙을 생각하면 함숫값 y\mathbf{y}열벡터, 변수 x\mathbf{x}행벡터로 취급하는 것이 자연스럽다.

y=[y1y2ym],x=[x1x2xn] \mathbf{y} = \begin{bmatrix} y_{1} \\ y_{2} \\ \vdots \\ y_{m} \end{bmatrix}, \quad \mathbf{x} = \begin{bmatrix} x_{1} & x_{2} & \cdots & x_{n} \end{bmatrix}

그래서 yx\dfrac{\partial y}{\partial \mathbf{x}}는 행벡터, yx\dfrac{\partial \mathbf{y}}{\partial x}는 열벡터이다. yx\dfrac{\partial y}{\partial x}가 스칼라이므로, 아래와 같이 자연스럽게 연쇄법칙 표현이 가능하다. 물리학 교재에서 그래디언트를 행벡터로 표기하는 것이 이러한 이유 때문이다. y=y(x)y = y(\mathbf{x}), x=x(t)\mathbf{x} = \mathbf{x}(t)라 하면,

yt=yxdxdt=[yx1yxn][dx1dtdxndt]=i=1nyxidxidt \dfrac{\partial y}{\partial t} = \dfrac{\partial y}{\partial \mathbf{x}} \dfrac{d \mathbf{x}}{d t} = \begin{bmatrix} \dfrac{\partial y}{\partial x_{1}} & \cdots & \dfrac{\partial y}{\partial x_{n}} \end{bmatrix} \begin{bmatrix} \dfrac{d x_{1}}{d t} \\ \vdots \\ \dfrac{d x_{n}}{d t} \end{bmatrix} = \sum\limits_{i=1}^{n} \dfrac{\partial y}{\partial x_{i}} \dfrac{d x_{i}}{d t}

표기법을 통일한 건 그렇다치고 이게 그래디언트인지 벡터값함수의 미분인지 헷갈리기 쉽다. 이럴 땐 x\dfrac{\partial }{\partial x}자체를 스칼라, x\dfrac{\partial }{\partial \mathbf{x}}자체를 벡터, X\dfrac{\partial }{\partial \mathbf{X}}자체를 행렬이라 생각하고, 위의 미분이 행렬의 크로네커 곱 \otimes로 연결되어있다고 보면 계산이 쉽다. 자세한 내용은 아래를 참고하자.

스칼라를

스칼라로 미분

스칼라를 스칼라로 미분하는 경우는 보통의 미분과 같다.

yx=limh0y(x+h)y(x)h \dfrac{\partial y}{\partial x} = \lim\limits_{h \to 0} \dfrac{y(x+h) - y(x)}{h}

크로네커 곱으로 표현하면,

yx=xy=yx \dfrac{\partial y}{\partial x} = \dfrac{\partial }{\partial x} \otimes y = \dfrac{\partial y}{\partial x}

벡터로 미분

이는 보통의 그래디언트와 같다. 값이 스칼라, 변수가 행벡터이므로 그래디언트도 행벡터로 생각하는 것이 자연스럽다.

yx=xy=[yx1yxn] \dfrac{\partial y}{\partial \mathbf{x}} = \nabla_{\mathbf{x}} y = \begin{bmatrix} \dfrac{\partial y}{\partial x_{1}} & \cdots & \dfrac{\partial y}{\partial x_{n}} \end{bmatrix}

크로네커 곱으로 표현하면,

yx=xy=[x1xn][y]=[yx1yxn] \dfrac{\partial y}{\partial \mathbf{x}} = \dfrac{\partial }{\partial \mathbf{x}} \otimes y = \begin{bmatrix} \dfrac{\partial }{\partial x_{1}} & \cdots & \dfrac{\partial }{\partial x_{n}} \end{bmatrix} \otimes \begin{bmatrix} y \end{bmatrix} = \begin{bmatrix} \dfrac{\partial y}{\partial x_{1}} & \cdots & \dfrac{\partial y}{\partial x_{n}} \end{bmatrix}

라플라시안 Δy=2y\Delta y = \nabla^{2} y는 다음과 같다.

Δy=2y=i=1n2yxi2=(yx)(yx)T=Tr((yx)T(yx)) \Delta y = \nabla^{2} y = \sum\limits_{i=1}^{n} \dfrac{\partial^{2} y}{\partial x_{i}^{2}} = \left( \dfrac{\partial y}{\partial \mathbf{x}} \right) \left( \dfrac{\partial y}{\partial \mathbf{x}} \right)^{\mathsf{T}} = \Tr \left( \left( \dfrac{\partial y}{\partial \mathbf{x}} \right)^{\mathsf{T}} \left( \dfrac{\partial y}{\partial \mathbf{x}} \right) \right)

(yx)T(yx)\left( \dfrac{\partial y}{\partial \mathbf{x}} \right)^{\mathsf{T}} \left( \dfrac{\partial y}{\partial \mathbf{x}} \right)헤시안이 된다.

H(y)=(yx)T(yx)=[2yx122yx1xn2yxnx12yxn2] H(y) = \left( \dfrac{\partial y}{\partial \mathbf{x}} \right)^{\mathsf{T}} \left( \dfrac{\partial y}{\partial \mathbf{x}} \right) = \begin{bmatrix} \dfrac{\partial^{2} y}{\partial x_{1}^{2}} & \cdots & \dfrac{\partial^{2} y}{\partial x_{1} \partial x_{n}} \\ \vdots & \ddots & \vdots \\ \dfrac{\partial^{2} y}{\partial x_{n} \partial x_{1}} & \cdots & \dfrac{\partial^{2} y}{\partial x_{n}^{2}} \end{bmatrix}

행렬로 미분

위에서 정의한 행렬 그래디언트이다.

Xy=yX=[yx11yx1nyxm1yxmn] \nabla_{\mathbf{X}} y = \dfrac{\partial y}{\partial \mathbf{X}} = \begin{bmatrix} \dfrac{\partial y}{\partial x_{11}} & \cdots & \dfrac{\partial y}{\partial x_{1n}} \\ \vdots & \ddots & \vdots \\ \dfrac{\partial y}{\partial x_{m1}} & \cdots & \dfrac{\partial y}{\partial x_{mn}} \end{bmatrix}

크로네커 곱으로 표현하면,

yX=Xy=[x11x1nxm1xmn][y]=[yx11yx1nyxm1yxmn] \dfrac{\partial y}{\partial \mathbf{X}} = \dfrac{\partial }{\partial \mathbf{X}} \otimes y = \begin{bmatrix} \dfrac{\partial }{\partial x_{11}} & \cdots & \dfrac{\partial }{\partial x_{1n}} \\ \vdots & \ddots & \vdots \\ \dfrac{\partial }{\partial x_{m1}} & \cdots & \dfrac{\partial }{\partial x_{mn}} \end{bmatrix} \otimes \begin{bmatrix} y \end{bmatrix} = \begin{bmatrix} \dfrac{\partial y}{\partial x_{11}} & \cdots & \dfrac{\partial y}{\partial x_{1n}} \\ \vdots & \ddots & \vdots \\ \dfrac{\partial y}{\partial x_{m1}} & \cdots & \dfrac{\partial y}{\partial x_{mn}} \end{bmatrix}

벡터를

스칼라로 미분

보통의 벡터값 함수의 미분과 같다.

yx=y(x)=limh0y(x+h)y(x)h \dfrac{\partial \mathbf{y}}{\partial x} = \mathbf{y}^{\prime}(x) = \lim\limits_{h \to 0} \dfrac{\mathbf{y}(x+h) - \mathbf{y}(x)}{h}

함숫값 y\mathbf{y}가 열벡터, 변수 xx가 스칼라이므로 계산 결과는 열벡터가 된다. 크로네커 곱으로 표현하면,

yx=xy=[x][y1ym]=[y1xymx] \dfrac{\partial \mathbf{y}}{\partial x} = \dfrac{\partial }{\partial x} \otimes \mathbf{y} = \begin{bmatrix} \dfrac{\partial }{\partial x} \end{bmatrix} \otimes \begin{bmatrix} y_{1} \\ \vdots \\ y_{m} \end{bmatrix} = \begin{bmatrix} \dfrac{\partial y_{1}}{\partial x} \\ \vdots \\ \dfrac{\partial y_{m}}{\partial x} \end{bmatrix}

벡터로 미분

벡터를 벡터로 미분하는 경우는 자코비안과 같다. 자코비안의 정의를 보면,

yx=(y1,y2,,ym)(x1,x2,,xn)=[y1x1y1xnymx1ymxn] \dfrac{\partial \mathbf{y}}{\partial \mathbf{x}} = \dfrac{\partial (y_{1}, y_{2}, \dots, y_{m})}{\partial (x_{1}, x_{2}, \dots, x_{n})} = \begin{bmatrix} \dfrac{\partial y_{1}}{\partial x_{1}} & \cdots & \dfrac{\partial y_{1}}{\partial x_{n}} \\ \vdots & \ddots & \vdots \\ \dfrac{\partial y_{m}}{\partial x_{1}} & \cdots & \dfrac{\partial y_{m}}{\partial x_{n}} \end{bmatrix}

이는 크로네커 곱으로 표현한 것과 같은 결과이다.

yx=xy=[x1xn][y1ym]=[y1x1y1xnymx1ymxn] \dfrac{\partial \mathbf{y}}{\partial \mathbf{x}} = \dfrac{\partial }{\partial \mathbf{x}} \otimes \mathbf{y} = \begin{bmatrix} \dfrac{\partial }{\partial x_{1}} & \cdots & \dfrac{\partial }{\partial x_{n}} \end{bmatrix} \otimes \begin{bmatrix} y_{1} \\ \vdots \\ y_{m} \end{bmatrix} = \begin{bmatrix} \dfrac{\partial y_{1}}{\partial x_{1}} & \cdots & \dfrac{\partial y_{1}}{\partial x_{n}} \\ \vdots & \ddots & \vdots \\ \dfrac{\partial y_{m}}{\partial x_{1}} & \cdots & \dfrac{\partial y_{m}}{\partial x_{n}} \end{bmatrix}

행렬을

스칼라로 미분

이는 행렬 함수의 미분와 같다. 크로네커 곱으로 표현하면,

Yx=xY=[x][y11y12y1ny21y22y2nym1ym2ymn]=[y11xy1nxym1xymnx] \dfrac{\partial \mathbf{Y}}{\partial x} = \dfrac{\partial }{\partial x} \otimes \mathbf{Y} = \begin{bmatrix} \dfrac{\partial }{\partial x} \end{bmatrix} \otimes \begin{bmatrix} y_{11} & y_{12} & \cdots & y_{1n} \\ y_{21} & y_{22} & \cdots & y_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ y_{m1} & y_{m2} & \cdots & y_{mn} \end{bmatrix} = \begin{bmatrix} \dfrac{\partial y_{11}}{\partial x} & \cdots & \dfrac{\partial y_{1n}}{\partial x} \\ \vdots & \ddots & \vdots \\ \dfrac{\partial y_{m1}}{\partial x} & \cdots & \dfrac{\partial y_{mn}}{\partial x} \end{bmatrix}