logo

트레이스 트릭 📂다변수벡터해석

트레이스 트릭

공식

행렬 공간 M(Rn×n)M(\mathbb{R}^{n \times n})위에서 정의된 스칼라함수 f:Rn×nRf: \mathbb{R}^{n \times n} \to \mathbb{R}이 주어졌다고 하자. df\mathrm{d}fff전미분이라 하자. 다음이 성립한다.

df=Tr(df)=dTr(f)(1) \mathrm{d}f = \Tr (\mathrm{d}f) = \mathrm{d}\Tr (f) \tag{1}

Tr\Tr트레이스이다.

증명

ff(의 함숫값)는 스칼라이므로 트레이스를 취해도 같다. 따라서 다음을 얻는다.

f=Tr(f)    df=dTr(f) f = \Tr(f) \implies \mathrm{d}f = \mathrm{d}\Tr(f)

df\mathrm{d}f도 스칼라이고, 스칼라에 트레이스를 취해도 같으므로 다음을 얻는다.

df=Tr(df) \mathrm{d}f = \Tr (\mathrm{d}f)

위 두 결과로부터 아래의 식을 얻는다.

Tr(df)=df=dTr(f) \Tr (\mathrm{d}f) = \mathrm{d}f = \mathrm{d}\Tr(f)

트레이스 트릭

트레이스 트릭이란, 그래디언트 행렬 Xf\nabla_{\mathbf{X}}f을 쉽게 구할 수 있는 일종의 계산 방법이다. 일변수함수의 도함수 dfdx\dfrac{d f}{d x}그래디언트 xf=[fx1fxn]T\nabla_{\mathbf{x}}f = \begin{bmatrix} \dfrac{\partial f}{\partial x_{1}} & \cdots & \dfrac{\partial f}{\partial x_{n}} \end{bmatrix}^{\mathsf{T}}에 비해서 그래디언트 행렬은 성분이 많아 계산하기 까다롭다. 특히 행렬곱, 전치가 이리저리 포함된 경우에는 인덱스를 고려하는 것도 헷갈리는데, 트레이스 트릭을 사용하면 인덱스를 고려하지 않고도 쉽게 계산할 수 있다. 계산 과정을 요약하면 아래와 같다.

  1. df=Tr(df)\mathrm{d}f = \Tr( \mathrm{d}f ) 혹은 df=dTr(f)\mathrm{d}f = \mathrm{d}\Tr(f)로 시작한다.
  2. 위 식을 df=Tr(ATdX)\mathrm{d}f = \Tr \left( A^{\mathsf{T}} \mathrm{d}\mathbf{X} \right)의 꼴로 바꾼다.
  3. ff전미분df=Tr((Xf)TdX)\mathrm{d}f = \Tr \left( \left( \nabla_{\mathbf{X}}f \right)^{\mathsf{T}} \mathrm{d}\mathbf{X} \right)이므로, A=XfA = \nabla_{\mathbf{X}}f이다.

위 과정에서 (1)(1)이나 트레이스의 여러 성질, 행렬미분소의 성질등을 사용하면 계산이 쉽다. 예시를 보면 알겠지만, 사실 "계산"이라고 할만큼 머리를 쓸 일은 없으며, 트레이스의 성질을 이용해서 행렬의 곱셈 순서를 잘 바꿔주는 것이 해야할 것의 전부다. 무엇보다 중요한건 실제로 미분을 수행하지 않는다는 것이다. (물론 미분소 행렬을 계산하는 것은 곱의 미분법에 의한 것이긴 하지만)

트레이스 트릭으로 계산된 미분 공식은 스칼라 함수의 행렬 미분 표에서 확인할 수 있다.

예시

계산에는 다음의 규칙들이 쓰인다.

행렬미분소의 성질

변수인 행렬 X,YRn×n\mathbf{X}, \mathbf{Y} \in \mathbb{R}^{n \times n}와 스칼라 αR\alpha \in \mathbb{R}, 상수 행렬 ARn×n\mathbf{A} \in \mathbb{R}^{n \times n}에 대해서 다음이 성립한다.

  1. d(αX)=αdX\mathrm{d}(\alpha \mathbf{X}) = \alpha \mathrm{d}\mathbf{X}
  2. d(XT)=(dX)T\mathrm{d}(\mathbf{X}^{\mathsf{T}}) = (\mathrm{d}\mathbf{X})^{\mathsf{T}}
  3. d(AX)=AdX\mathrm{d}(\mathbf{A}\mathbf{X}) = \mathbf{A} \mathrm{d}\mathbf{X} 그리고 d(XA)=(dX)A\mathrm{d}(\mathbf{X}\mathbf{A}) = (\mathrm{d}\mathbf{X}) \mathbf{A}
  4. d(X+Y)=dX+dY\mathrm{d}(\mathbf{X} + \mathbf{Y}) = \mathrm{d}\mathbf{X} + \mathrm{d}\mathbf{Y}
  5. d(XY)=(dX)Y+XdY\mathrm{d}(\mathbf{X}\mathbf{Y}) = (\mathrm{d}\mathbf{X})\mathbf{Y} + \mathbf{X} \mathrm{d}\mathbf{Y}

트레이스의 성질

  1. Tr(αX)=αTr(X)\Tr (\alpha \mathbf{X}) = \alpha \Tr (\mathbf{X})
  2. 선형성: Tr(X+Y)=Tr(X)+Tr(Y)\Tr (\mathbf{X} + \mathbf{Y}) = \Tr (\mathbf{X}) + \Tr (\mathbf{Y})
  3. 순환성: Tr(XYZ)=Tr(YZX)=Tr(ZXY)\Tr (\mathbf{X}\mathbf{Y}\mathbf{Z}) = \Tr (\mathbf{Y}\mathbf{Z}\mathbf{X}) = \Tr (\mathbf{Z}\mathbf{X}\mathbf{Y})
  4. 전치불변성: Tr(XT)=Tr(X)\Tr (\mathbf{X}^{\mathsf{T}}) = \Tr (\mathbf{X})

f(X)=Tr(AX)f(\mathbf{X}) = \Tr(\mathbf{A}\mathbf{X})

위에서 설명한 순서대로 계산해보면 아래와 같다.

df=dTr(AX)=Tr(d(AX))by (1)=Tr(AdX)=Tr((AT)TdX)=Tr((Xf)TX) \begin{align*} \mathrm{d}f &= \mathrm{d}\Tr \left( \mathbf{A}\mathbf{X} \right) \\ &= \Tr \left( \mathrm{d}\left( \mathbf{A}\mathbf{X} \right) \right) & \text{by } (1) \\ &= \Tr \left( \mathbf{A} \mathrm{d}\mathbf{X} \right) \\ &= \Tr \left( \left( \mathbf{A}^{\mathsf{T}} \right)^{\mathsf{T}} \mathrm{d}\mathbf{X} \right)\\ &= \Tr \left( (\nabla_{\mathbf{X}}f)^{\mathsf{T}} \mathbf{X} \right) \end{align*}

따라서 다음을 얻는다.

Xf=AT \nabla_{\mathbf{X}}f = \mathbf{A}^{\mathsf{T}}

직접 계산한 것에 비하면 훨씬 쉽다.

f(X)=aTXbf(\mathbf{X}) = \mathbf{a}^{\mathsf{T}}\mathbf{X}\mathbf{b}

위와 비슷하게 계산한다. 트레이스의 성질로부터 Tr(aTXb)=Tr(baTX)\Tr (\mathbf{a}^{\mathsf{T}}\mathbf{X}\mathbf{b}) = \Tr (\mathbf{b}\mathbf{a}^{\mathsf{T}}\mathbf{X})이므로, 아래와 같이 계산할 수 있다.

df=dTr(f)by (1)=dTr(aTXb)=dTr((baT)X)=dTr((abT)TX) \begin{align*} \mathrm{d}f &= \mathrm{d}\Tr (f) &\text{by } (1) \\ &= \mathrm{d}\Tr \left( \mathbf{a}^{\mathsf{T}}\mathbf{X}\mathbf{b} \right) \\ &= \mathrm{d}\Tr \left( (\mathbf{b}\mathbf{a}^{\mathsf{T}})\mathbf{X} \right) \\ &= \mathrm{d}\Tr \left( (\mathbf{a}\mathbf{b}^{\mathsf{T}})^{\mathsf{T}}\mathbf{X} \right) \\ \end{align*}

첫번째 예시의 결과에 의해,

Xf=abT \nabla_{\mathbf{X}}f = \mathbf{a}\mathbf{b}^{\mathsf{T}}

f(X)=aTXTXbf(\mathbf{X}) = \mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}}\mathbf{X} \mathbf{b}

두번째 예시와 비교하면, XT\mathbf{X}^{\mathsf{T}}가 하나 늘었을 뿐이지만 직접 손계산하는 귀찮음과 난이도는 상당히 차이가 난다. 트레이스 트릭을 사용하면 아래와 같이 계산할 수 있다. 우선 Tr(aTXTXb)=Tr(baTXTX)\Tr(\mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X} \mathbf{b}) = \Tr(\mathbf{b} \mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X})이므로,

df=dTr(f)by (1)=dTr(aTXTXb)=dTr(baTXTX)=Tr(d(baTXTX))by (1)=Tr(baTd(XT)X+baTXTdX)=6thTr(d(XT)XbaT+baTXTdX)=Tr((dXT)(XbaT)+baTXTdX)=8thTr((XbaT)TdX+(XabT)TdX)=Tr([XbaT+XabT]TdX)=Tr((Xf)TX) \begin{align*} \mathrm{d}f &= \mathrm{d}\Tr (f) &\text{by } (1) \\ &= \mathrm{d}\Tr(\mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X} \mathbf{b}) \\ &= \mathrm{d}\Tr(\mathbf{b} \mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X}) \\ &= \Tr\left( \mathrm{d}(\mathbf{b} \mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathbf{X}) \right) & \text{by } (1) \\ &= \Tr\left( \mathbf{b} \mathbf{a}^{\mathsf{T}} \mathrm{d}(\mathbf{X}^{\mathsf{T}}) \mathbf{X} + \mathbf{b} \mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathrm{d}\mathbf{X} \right) \\ &\overset{6\text{th}}{=} \Tr\left( \mathrm{d}(\mathbf{X}^{\mathsf{T}})\mathbf{X}\mathbf{b} \mathbf{a}^{\mathsf{T}} + \mathbf{b} \mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathrm{d}\mathbf{X} \right) \\ &= \Tr\left( (\mathrm{d}\mathbf{X}^{\mathsf{T}})(\mathbf{X}\mathbf{b} \mathbf{a}^{\mathsf{T}}) + \mathbf{b} \mathbf{a}^{\mathsf{T}} \mathbf{X}^{\mathsf{T}} \mathrm{d}\mathbf{X} \right) \\ &\overset{8\text{th}}{=} \Tr\left( (\mathbf{X}\mathbf{b} \mathbf{a}^{\mathsf{T}})^{\mathsf{T}}\mathrm{d}\mathbf{X} + (\mathbf{X} \mathbf{a} \mathbf{b}^{\mathsf{T}})^{\mathsf{T}} \mathrm{d}\mathbf{X} \right) \\ &= \Tr\left( \left[ \mathbf{X}\mathbf{b} \mathbf{a}^{\mathsf{T}} + \mathbf{X} \mathbf{a} \mathbf{b}^{\mathsf{T}} \right]^{\mathsf{T}} \mathrm{d}\mathbf{X} \right) \\ &= \Tr \left( (\nabla_{\mathbf{X}}f)^{\mathsf{T}} \mathbf{X} \right) \end{align*}

여섯번째 등호는 트레이스의 선형성과 순환성질에 의해 성립한다. 여덟번째 등호는 트레이스의 선형성과 전치불변성에 의해 성립한다.

Xf=XbaT+XabT=X(abT+baT) \nabla_{\mathbf{X}}f = \mathbf{X}\mathbf{b} \mathbf{a}^{\mathsf{T}} + \mathbf{X} \mathbf{a} \mathbf{b}^{\mathsf{T}} = \mathbf{X} \left( \mathbf{a} \mathbf{b}^{\mathsf{T}} + \mathbf{b} \mathbf{a}^{\mathsf{T}} \right)