스칼라 함수의 행렬 미분 표
📂다변수벡터해석스칼라 함수의 행렬 미분 표
설명
행렬 미분에 관한 공식을 아래의 표와 같이 정리해두었다. 문서 전체에서 사용되는 표기법은 다음과 같다.
- a,b∈Rn: x나 X에 의존하지 않는 상수벡터
- A,B,C∈Rn×n: x나 X에 의존하지 않는 상수행렬
- x∈Rn: 변수벡터
- X∈Rn×n: 변수행렬
미분 규칙에서 흥미로운 점은, Tr(X)=Tr(XT)이므로 ∇XTr(X)=I=∇XTr(XT)가 성립하지만 앞뒤로 다른 행렬이 곱해지는 순간 전치의 성질 때문에 X가 포함된 식과 XT가 포함된 식의 미분 결과가 달라진다는 것이다.
식 f(X) | 미분 ∇Xf | 증명 |
---|
Tr(X), Tr(XT) | I | 바로가기 |
Tr(aX), Tr(aXT) | aI | 바로가기 |
Tr(AX), Tr(XA) | AT | 바로가기 |
Tr(AXT), Tr(XAT) | A | 바로가기 |
Tr(AXB),Tr(BAX),Tr(XBA) | ATBT | 바로가기 |
Tr(AXTB),Tr(BAXT),Tr(XTBA) | BA | 바로가기 |
Tr(AXTX) | X(A+AT) | 바로가기 |
Tr(AXX) | ATXT+XTAT | 바로가기 |
Tr(AXTXB) | X(BA+ATBT) | 바로가기 |
Tr(AXXB) | ATBTXT+XTATBT | 바로가기 |
Tr(ATXTBX) | BXAT+BTXA | 바로가기 |
Tr(AXTCXB) | CXBA+CTXATBT | 바로가기 |
Tr(AXCXB) | ATBTXTCT+CTXTATBT | 바로가기 |
Tr(Xn) | n(XT)n−1 | 바로가기 |
Tr(AXn) | i=0∑n−1[Xn−1−iAXi]T | 바로가기 |
Tr(p(X)) *아래정의참고 | (p′(X))T | 바로가기 |
- p(x)를 임의의 다항식이라 하자. p′(x)를 p의 도함수라고 하자. p(X)와 p′(X)는 p와 p′에 대응되는 행렬 다항식이다.
p(x)p′(x)=i=0∑maixi=i=1∑miaixi−1⟹p(X)p′(X)=i=0∑maiXi=i=1∑miaiXi−1
식 f(X) | 결과 ∇Xf | 증명 |
---|
aTXb | abT | 바로가기 |
aTXTXb | X(abT+baT) | 바로가기 |
aTXXb | abTXT+XTabT | 바로가기 |
aTXTCXb | CXbaT+XCTabT | 바로가기 |
증명
증명에는 트레이스 트릭이 사용된다. 이를 모르면 증명을 따라갈 수 없으므로 먼저 읽고 계산 방법을 이해한 후에 증명을 보라.
행렬미분소의 성질
변수인 행렬 X,Y∈Rn×n와 스칼라 α∈R, 상수 행렬 A∈Rn×n에 대해서 다음이 성립한다.
- d(αX)=αdX
- d(XT)=(dX)T
- d(AX)=AdX 그리고 d(XA)=(dX)A
- d(X+Y)=dX+dY
- d(XY)=(dX)Y+XdY
트레이스의 성질
- Tr(αX)=αTr(X)
- 선형성: Tr(X+Y)=Tr(X)+Tr(Y)
- 순환성: Tr(XYZ)=Tr(YZX)=Tr(ZXY)
- 전치불변성: Tr(XT)=Tr(X)
f(X)=Tr(aX)
df=dTr(f)=dTr(aX)=Trd(aX)=Tr(adX)=Tr(aIdX)=Tr((aI)TdX)
⟹∇X(Tr(aX))=aI
a=1이면,
⟹∇X(Tr(X))=I
또한 Tr(aXT)=Tr(aX)이므로,
∇X(Tr(aXT))=aI
⟹∇X(Tr(XT))=I
■
f(X)=Tr(AX)
df=dTr(f)=dTr(AX)=Trd(AX)=Tr(AdX)=Tr(ATdX)
⟹∇X(Tr(AX))=AT
■
f(X)=Tr(AXB)
df=dTr(f)=dTr(AXB)=Trd(AXB)=Tr(A(dX)B)=Tr(BA(dX))=Tr((ATBT)TdX)
⟹∇X(Tr(AXB))=ATBT
혹은, Tr(AXB)=Tr(BAX)이고 ∇X(Tr(AX))=AT이므로,
∇X(Tr(AXB))=ATBT
■
f(X)=Tr(AXTB)
df=dTr(f)=dTr(AXTB)=Trd(AXTB)=Tr(A(dX)TB)=Tr((dX)TBA)=Tr((BA)TdX)
⟹∇X(Tr(AXTB))=BA
혹은, Tr(AXTB)=Tr(BTXAT)=Tr(ATBTX)이고 ∇XTr(AX)=AT이므로,
∇X(Tr(AXTB))=BA
만약 B=I이면,
∇X(Tr(AXT))=A
■
f(X)=Tr(ATXTBX)
df=dTr(f)=dTr(ATXTBX)=Trd(ATXTBX)=Tr(AT(dX)TBX+ATXTB(dX))=Tr((dX)TBXAT+ATXTBdX)=Tr((BXAT)TdX+(BTXA)TdX)=Tr((BXAT+BTXA)TdX)
⟹∇X(Tr(ATXTBX))=BXAT+BTXA
f(X)=Tr(AXTCXB)
df=dTr(f)=dTr(AXTCXB)=Trd(AXTCXB)=Tr(A(dX)TCXB+AXTC(dX)B)=Tr((dX)TCXBA+BAXTCdX)=Tr((CXBA)TdX+(CTXATBT)TdX)=Tr((CXBA+CTXATBT)TdX)
⟹∇X(Tr(AXTCXB))=CXBA+CTXATBT
혹은, Tr(AXTCXB)=Tr(BAXTCX)이고 ∇X(Tr(AXTBX))=BXA+BTXAT이므로,
∇X(Tr(AXTCXB))=CXBA+CTXATBT
만약 C=I이면,
∇X(Tr(AXTXB))=XBA+XATBT=X(BA+ATBT)
만약 B=C=I이면,
∇X(Tr(AXTX))=XA+XAT=X(A+AT)
■
f(X)=Tr(AXCXB)
df=dTr(f)=dTr(AXCXB)=Trd(AXCXB)=Tr(A(dX)CXB+AXC(dX)B)=Tr(CXBAdX+BAXCdX)=Tr((CXBA+BAXC)dX)=Tr((ATBTXTCT+CTXTATBT)TdX)
⟹∇X(Tr(AXCXB))=(ATBTXTCT+CTXTATBT)
만약 C=I이면,
∇X(Tr(AXXB))=ATBTXT+XTATBT
■
f(X)=Tr(Xn)
df=dTr(f)=dTr(Xn)=Trd(Xn)=Tr((dX)Xn−1+X(dX)Xn−2+⋯+Xn−2(dX)X+Xn−1dX)=TrXn−1dX+⋯+Xn−1dXn=Tr(nXn−1dX)=Tr(((nXn−1)T)TdX)
⟹∇X(Tr(Xn))=n(XT)n−1
■
f(X)=Tr(AXn)
df=dTr(f)=dTr(AXn)=Trd(AXn)=Tr[A(dX)Xn−1+AX(dX)Xn−2+⋯AXn−2(dX)X+AXn−1(dX)]=Tr[Xn−1AdX+Xn−2AXdX+⋯+XAXn−2dX+AXn−1dX]=Tr([i=0∑n−1Xn−1−iAXi]dX)=Tr[i=0∑n−1Xn−1−iAXi]TTdX=Tr(i=0∑n−1[Xn−1−iAXi]T)TdX
⟹∇X(Tr(AXn))=i=0∑n−1[Xn−1−iAXi]T
■
f(X)=Tr(amXm+⋯+a1X+a0)
∇X(Tr(Xn))=n(XT)n−1이고 트레이스와 미분 ∇X는 선형이므로,
∇XTr(amXm+⋯+a1X+a0)=mam(XT)m−1+2a2XT+a1=i=1∑miai(XT)i−1
■
f(X)=aTXXb
트레이스의 정의와 성질에 따라 다음이 성립한다.
∇X(aTXXb)=∇XTr(aTXXb)=∇XTr(baTXX)
∇X(Tr(AXX))=ATXT+XTaT이므로,
∇X(aTXXb)=abTXT+XTabT
f(X)=aTXTCXb
df=dTr(f)=dTr(aTXTCXb)=dTr(baTXTCX)=Trd(baTXTCX)=Tr(baT(dX)TCX+baTXTCdX)=Tr((dX)TCXbaT+(CTXabT)TdX)=Tr((CXbaT)TdX+(CTXabT)TdX)=Tr([CXbaT+CTXabT]TdX)
⟹∇X(aTXTCXb)=CXbaT+CTXabT
혹은, ∇X(aTXTCXb)=∇XTr(aTXTCXb)=∇XTr(baTXTCX)이고,
∇X(Tr(ATXTBX))=BXAT+BTXA이므로 다음이 성립한다.
∇X(aTXTCXb)=CXbaT+CTXabT
■