logo

이차형식과 쌍선형 형식의 행렬 미분 📂다변수벡터해석

이차형식과 쌍선형 형식의 행렬 미분

공식

  • 벡터 aRm\mathbf{a} \in \mathbb{R}^{m}, bRn\mathbf{b} \in \mathbb{R}^{n}행렬 XRm×n\mathbf{X} \in \mathbb{R}^{m \times n}에 대해, 쌍선형 형식 aTXb\mathbf{a}^{\mathsf{T}} \mathbf{X} \mathbf{b}에 대한 그래디언트 행렬은 다음과 같다.

    X(aTXb)=(aTXb)X=abT(1) \nabla_{\mathbf{X}} (\mathbf{a}^{\mathsf{T}} \mathbf{X} \mathbf{b}) = \dfrac{\partial (\mathbf{a}^{\mathsf{T}} \mathbf{X} \mathbf{b})}{\partial \mathbf{X}} = \mathbf{a}\mathbf{b}^{\mathsf{T}} \tag{1} 따름정리로서 이차형식 aTXa\mathbf{a}^{\mathsf{T}} \mathbf{X} \mathbf{a}에 대해 다음이 성립한다. (aTXa)X=aaT \dfrac{\partial (\mathbf{a}^{\mathsf{T}} \mathbf{X} \mathbf{a})}{\partial \mathbf{X}} = \mathbf{a}\mathbf{a}^{\mathsf{T}}

  • 벡터 aRn\mathbf{a} \in \mathbb{R}^{n}, bRn\mathbf{b} \in \mathbb{R}^{n}행렬 XRm×n\mathbf{X} \in \mathbb{R}^{m \times n}에 대해, aTXTXb\mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}}\mathbf{X} \mathbf{b}에 대한 그래디언트 행렬은 다음과 같다.

    X(aTXTXb)=(aTXTXb)X=X(abT+baT)(2) \nabla_{\mathbf{X}} (\mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X} \mathbf{b}) = \dfrac{\partial (\mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X} \mathbf{b})}{\partial \mathbf{X}} = \mathbf{X}(\mathbf{a} \mathbf{b}^{\mathsf{T}} + \mathbf{b}\mathbf{a}^{\mathsf{T}} ) \tag{2}

    만약 b=a\mathbf{b} = \mathbf{a}이면,

    (aTXTXa)X=2XaaT(2) \dfrac{\partial (\mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X} \mathbf{a})}{\partial \mathbf{X}} = 2\mathbf{X}\mathbf{a} \mathbf{a}^{\mathsf{T}} \tag{2}

설명

다항함수 미분과 유사한 결과이다.

  • (1)(1): 본질적으로는 일차함수의 미분과 같으므로, 계수만 남는 꼴이 됨을 알 수 있다. 조금 헷갈릴 수도 있는 점은, 계산 결과가 행렬이여야하므로 aTb\mathbf{a}^{\mathsf{T}}\mathbf{b}가 아니라 abT\mathbf{a}\mathbf{b}^{\mathsf{T}}라는 것이다.
  • (2)(2): 이차형식의 관점에서 봤을땐 aTXa\mathbf{a}^{\mathsf{T}} \mathbf{X} \mathbf{a}aTXTXa\mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}}\mathbf{X} \mathbf{a}나 모두 그냥 이차형식이지만, 미분할 변수가 여러번 곱해졌다는 접에서 다른 결과를 보여준다. 본질적으로는 이차함수의 미분에 대응된다.

아래의 증명에서는 직접 계산으로 보였지만, 트레이스 트릭이라고 불리는 방법을 사용하면 더 간단하게 계산할 수 있다. X\mathbf{X}에 대한 임의의 꼴이나, X\mathbf{X}가 많이 포함된 식의 경우 사실상 직접 계산하는 것은 너무 힘들고 트레이스 트릭을 사용하여야 한다.

더 많은 공식은 스칼라 함수의 행렬 미분 표에서 확인할 수 있다.

증명

(1)(1)

쌍선형 형식은 aTXb=i=1mj=1naixijbj\mathbf{a}^{\mathsf{T}} \mathbf{X} \mathbf{b} = \sum\limits_{i=1}^{m}\sum\limits_{j=1}^{n} a_{i} x_{ij} b_{j}로 표현할 수 있다. 그러므로 (i=1mj=1naixijbj)xk=akb\dfrac{\partial \left( \sum\limits_{i=1}^{m}\sum\limits_{j=1}^{n} a_{i} x_{ij} b_{j} \right)}{\partial x_{k\ell}} = a_{k}b_{\ell}이고,

X(aTXb)=[(aTXb)x11(aTXb)x1n(aTXb)xm1(aTXb)xmn]=[a1b1a1b2a1bna2b1a2b2a2bnamb1amb1ambn]=[a1an][b1bn]=abT=ab \begin{align*} \nabla_{\mathbf{X}} (\mathbf{a}^{\mathsf{T}} \mathbf{X} \mathbf{b}) &= \begin{bmatrix} \dfrac{\partial (\mathbf{a}^{\mathsf{T}} \mathbf{X} \mathbf{b})}{\partial x_{11}} & \cdots & \dfrac{\partial (\mathbf{a}^{\mathsf{T}} \mathbf{X} \mathbf{b})}{\partial x_{1n}} \\ \vdots & \ddots & \vdots \\ \dfrac{\partial (\mathbf{a}^{\mathsf{T}} \mathbf{X} \mathbf{b})}{\partial x_{m1}} & \cdots & \dfrac{\partial (\mathbf{a}^{\mathsf{T}} \mathbf{X} \mathbf{b})}{\partial x_{mn}} \end{bmatrix} \\ &= \begin{bmatrix} a_{1}b_{1} & a_{1}b_{2} & \cdots & a_{1}b_{n} \\ a_{2}b_{1} & a_{2}b_{2} & \cdots & a_{2}b_{n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m}b_{1} & a_{m}b_{1} & \cdots & a_{m}b_{n} \end{bmatrix} \\ &= \begin{bmatrix} a_{1} \\ \vdots \\ a_{n} \end{bmatrix} \begin{bmatrix} b_{1} & \cdots & b_{n} \end{bmatrix} \\ &= \mathbf{a} \mathbf{b}^{\mathsf{T}} = \mathbf{a} \otimes \mathbf{b} \end{align*}

\otimes는 두 벡터의 외적, 혹은 두 행렬의 크로네커 곱이다.

(2)(2)

직접계산

두 행렬의 곱은 [AB]ij=k=1naikbkj[AB]_{ij} = \sum\limits_{k=1}^{n} a_{ik}b_{kj}이므로, [XTX]ij=s=1mxsixsj[X^{\mathsf{T}}X]_{ij} = \sum\limits_{s=1}^{m} x_{si} x_{sj}이다. 다음이 성립한다.

aTXTXb=k,=1nak(s=1mxskxs)b=k,=1ns=1makxskxsb \mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}}\mathbf{X} \mathbf{b} = \sum\limits_{k, \ell = 1}^{n} a_{k} \left(\sum\limits_{s=1}^{m} x_{sk} x_{s\ell}\right) b_{\ell} = \sum\limits_{k,\ell = 1}^{n} \sum\limits_{s=1}^{m} a_{k} x_{sk} x_{s\ell} b_{\ell}

따라서 미분은 다음과 같다.

(k,=1ns=1makxskxsb)xij==1najxib+k=1nakxikbj \dfrac{\partial \left( \sum\limits_{k,\ell = 1}^{n} \sum\limits_{s=1}^{m} a_{k} x_{sk} x_{s\ell} b_{\ell} \right)}{\partial x_{ij}} = \sum\limits_{\ell=1}^{n}a_{j}x_{i\ell}b_{\ell} + \sum\limits_{k = 1}^{n} a_{k}x_{ik}b_{j}

그래디언트 행렬은 아래와 같다.

X(aTXTXb)=[=1na1x1b+k=1nakx1kb1=1na2x1b+k=1nakx1kb2=1nanx1b+k=1nakx1kbn=1na1x2b+k=1nakx2kb1=1na2x2b+k=1nakx2kb2=1nanx2b+k=1nakx2kbn=1na1xnb+k=1nakxnkb1=1na2xnb+k=1nakxnkb2=1nanxnb+k=1nakxnkbn]=[=1na1x1b=1nanx1b=1na1xnb=1nanxnb]+[k=1nakx1kb1k=1nakx1kbnk=1nakxnkb1k=1nakxnkbn]=[=1nx1ba1=1nx1ban=1nxnba1=1nxnban]+[k=1nx1kakb1k=1nx1kakbnk=1nxnkakb1k=1nxnkakbn] \begin{align*} & \nabla_{\mathbf{X}} (\mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X} \mathbf{b}) \\ &= \begin{bmatrix} \sum\limits_{\ell=1}^{n}a_{1}x_{1\ell}b_{\ell} + \sum\limits_{k = 1}^{n} a_{k}x_{1k}b_{1} & \sum\limits_{\ell=1}^{n}a_{2}x_{1\ell}b_{\ell} + \sum\limits_{k = 1}^{n} a_{k}x_{1k}b_{2} & \cdots & \sum\limits_{\ell=1}^{n}a_{n}x_{1\ell}b_{\ell} + \sum\limits_{k = 1}^{n} a_{k}x_{1k}b_{n} \\ \sum\limits_{\ell=1}^{n}a_{1}x_{2\ell}b_{\ell} + \sum\limits_{k = 1}^{n} a_{k}x_{2k}b_{1} & \sum\limits_{\ell=1}^{n}a_{2}x_{2\ell}b_{\ell} + \sum\limits_{k = 1}^{n} a_{k}x_{2k}b_{2} & \cdots & \sum\limits_{\ell=1}^{n}a_{n}x_{2\ell}b_{\ell} + \sum\limits_{k = 1}^{n} a_{k}x_{2k}b_{n} \\ \vdots & \vdots & \ddots & \vdots \\ \sum\limits_{\ell=1}^{n}a_{1}x_{n\ell}b_{\ell} + \sum\limits_{k = 1}^{n} a_{k}x_{nk}b_{1} & \sum\limits_{\ell=1}^{n}a_{2}x_{n\ell}b_{\ell} + \sum\limits_{k = 1}^{n} a_{k}x_{nk}b_{2} & \cdots & \sum\limits_{\ell=1}^{n}a_{n}x_{n\ell}b_{\ell} + \sum\limits_{k = 1}^{n} a_{k}x_{nk}b_{n} \end{bmatrix} \\ &= \begin{bmatrix} \sum\limits_{\ell=1}^{n}a_{1}x_{1\ell}b_{\ell} & \cdots & \sum\limits_{\ell=1}^{n}a_{n}x_{1\ell}b_{\ell} \\ \vdots & \ddots & \vdots \\ \sum\limits_{\ell=1}^{n}a_{1}x_{n\ell}b_{\ell} & \cdots & \sum\limits_{\ell=1}^{n}a_{n}x_{n\ell}b_{\ell} \end{bmatrix} + \begin{bmatrix} \sum\limits_{k = 1}^{n} a_{k}x_{1k}b_{1} & \cdots &\sum\limits_{k = 1}^{n} a_{k}x_{1k}b_{n} \\ \vdots & \ddots & \vdots \\ \sum\limits_{k = 1}^{n} a_{k}x_{nk}b_{1} & \cdots &\sum\limits_{k = 1}^{n} a_{k}x_{nk}b_{n} \end{bmatrix} \\ &= \begin{bmatrix} \sum\limits_{\ell=1}^{n}x_{1\ell}b_{\ell}a_{1} & \cdots & \sum\limits_{\ell=1}^{n}x_{1\ell}b_{\ell}a_{n} \\ \vdots & \ddots & \vdots \\ \sum\limits_{\ell=1}^{n}x_{n\ell}b_{\ell}a_{1} & \cdots & \sum\limits_{\ell=1}^{n}x_{n\ell}b_{\ell}a_{n} \end{bmatrix} + \begin{bmatrix} \sum\limits_{k = 1}^{n} x_{1k}a_{k}b_{1} & \cdots &\sum\limits_{k = 1}^{n} x_{1k}a_{k}b_{n} \\ \vdots & \ddots & \vdots \\ \sum\limits_{k = 1}^{n} x_{nk}a_{k}b_{1} & \cdots &\sum\limits_{k = 1}^{n} x_{nk}a_{k}b_{n} \end{bmatrix} \\ \end{align*}

따라서 다음을 얻는다.

X(aTXTXb)=XbaT+XabT=X(abT+baT) \nabla_{\mathbf{X}} (\mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X} \mathbf{b}) = \mathbf{X}\mathbf{b}\mathbf{a}^{\mathsf{T}} + \mathbf{X}\mathbf{a}\mathbf{b}^{\mathsf{T}} = \mathbf{X} ( \mathbf{a}\mathbf{b}^{\mathsf{T}} + \mathbf{b}\mathbf{a}^{\mathsf{T}} )

트레이스 트릭

스칼라는 1×11\times 1 행렬로 생각할 수 있고, 그러면 트레이스(대각합)는 사실상 항등함수의 역할을 한다. 즉, 쌍선형 형식의 값은 스칼라이므로 다음이 성립한다.

aTXTXb=Tr(aTXTXb) \mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X} \mathbf{b} = \Tr(\mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X} \mathbf{b})

또한 트레이스는 순환 성질 Tr(ABC)=Tr(CBA)\Tr(ABC) = \Tr(CBA) 이 있으므로,

(aTXTXb)X=Tr(aTXTXb)X=Tr(baTXTX)X \dfrac{\partial (\mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X} \mathbf{b})}{\partial \mathbf{X}} = \dfrac{\partial \Tr(\mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X} \mathbf{b})}{\partial \mathbf{X}} = \dfrac{\partial \Tr(\mathbf{b}\mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X})}{\partial \mathbf{X}}

트레이스 미분 공식에 의해 다음을 얻는다.

(baTXTX)X=X(baT+abT) \dfrac{\partial (\mathbf{b}\mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X})}{\partial \mathbf{X}} = \mathbf{X}(\mathbf{b}\mathbf{a}^{\mathsf{T}} + \mathbf{a}\mathbf{b}^{\mathsf{T}})

이때 b=a\mathbf{b} = \mathbf{a}이면,

(aTXTXa)X=2XaaT \dfrac{\partial (\mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X} \mathbf{a})}{\partial \mathbf{X}} = 2\mathbf{X}\mathbf{a}\mathbf{a}^{\mathsf{T}}

이처럼 트레이스의 성질을 이용하여 행렬 미분 계산을 간단한 행렬조작으로 만들어주는 방법을 트레이스 트릭이라 한다.