二次形式と双線形形式の行列微分
📂多変数ベクトル解析二次形式と双線形形式の行列微分
公式
2つのベクトル a∈Rm, b∈Rnと行列 X∈Rm×nについて、双線形形式 aTXbに対する勾配行列は次の通りだ。
∇X(aTXb)=∂X∂(aTXb)=abT(1)
従って、二次形式 aTXaについて次のことが成り立つ。
∂X∂(aTXa)=aaT
2つのベクトル a∈Rn, b∈Rnと行列 X∈Rm×nについて、 aTXTXbに対する勾配行列は次の通りだ。
∇X(aTXTXb)=∂X∂(aTXTXb)=X(abT+baT)(2)
もし b=aなら、
∂X∂(aTXTXa)=2XaaT(2)
説明
多項式の微分と類似した結果だ。
- (1): 本質的には一次関数の微分と同じなので、係数だけが残る形になることが分かる。少し混乱するかもしれない点は、計算結果が行列でなければならないためaTbではなくabTだということだ。
- (2): 二次形式の観点から見るとaTXaもaTXTXaもどれも単に二次形式だが、微分する変数が何度も掛けられているため、異なる結果を示す。本質的には二次関数の微分に対応する。
以下の証明では直接計算で示したが、 🔒(25/07/17)トレーストリックとして知られる方法を使用すると、もっと簡単に計算できる。Xに対する任意の形や、Xが多く含まれた式の場合、実際直接計算するのは非常に難しく、トレーストリックを使用する必要がある。
より多くの公式は、🔒(25/07/19)スカラ関数の行列微分表で確認できる。
証明
(1)
双線形形式はaTXb=i=1∑mj=1∑naixijbjで表せる。よって∂xkℓ∂(i=1∑mj=1∑naixijbj)=akbℓであり、
∇X(aTXb)=∂x11∂(aTXb)⋮∂xm1∂(aTXb)⋯⋱⋯∂x1n∂(aTXb)⋮∂xmn∂(aTXb)=a1b1a2b1⋮amb1a1b2a2b2⋮amb1⋯⋯⋱⋯a1bna2bn⋮ambn=a1⋮an[b1⋯bn]=abT=a⊗b
⊗は2つのベクトルの外積、または2つの行列のクロネッカー積である。
■
(2)
直接計算
2つの行列の積は[AB]ij=k=1∑naikbkjであったため、[XTX]ij=s=1∑mxsixsjである。次が成り立つ。
aTXTXb=k,ℓ=1∑nak(s=1∑mxskxsℓ)bℓ=k,ℓ=1∑ns=1∑makxskxsℓbℓ
したがって、微分は次のようになる。
∂xij∂(k,ℓ=1∑ns=1∑makxskxsℓbℓ)=ℓ=1∑najxiℓbℓ+k=1∑nakxikbj
勾配行列は以下の通りとなる。
∇X(aTXTXb)=ℓ=1∑na1x1ℓbℓ+k=1∑nakx1kb1ℓ=1∑na1x2ℓbℓ+k=1∑nakx2kb1⋮ℓ=1∑na1xnℓbℓ+k=1∑nakxnkb1ℓ=1∑na2x1ℓbℓ+k=1∑nakx1kb2ℓ=1∑na2x2ℓbℓ+k=1∑nakx2kb2⋮ℓ=1∑na2xnℓbℓ+k=1∑nakxnkb2⋯⋯⋱⋯ℓ=1∑nanx1ℓbℓ+k=1∑nakx1kbnℓ=1∑nanx2ℓbℓ+k=1∑nakx2kbn⋮ℓ=1∑nanxnℓbℓ+k=1∑nakxnkbn=ℓ=1∑na1x1ℓbℓ⋮ℓ=1∑na1xnℓbℓ⋯⋱⋯ℓ=1∑nanx1ℓbℓ⋮ℓ=1∑nanxnℓbℓ+k=1∑nakx1kb1⋮k=1∑nakxnkb1⋯⋱⋯k=1∑nakx1kbn⋮k=1∑nakxnkbn=ℓ=1∑nx1ℓbℓa1⋮ℓ=1∑nxnℓbℓa1⋯⋱⋯ℓ=1∑nx1ℓbℓan⋮ℓ=1∑nxnℓbℓan+k=1∑nx1kakb1⋮k=1∑nxnkakb1⋯⋱⋯k=1∑nx1kakbn⋮k=1∑nxnkakbn
したがって、次を得る。
∇X(aTXTXb)=XbaT+XabT=X(abT+baT)
■
トレーストリック
スカラーは1×1行列と考えることができ、そうすればトレース(跡)は事実上、恒等関数の役割をする。つまり、双線形形式の値はスカラーなので次が成り立つ。
aTXTXb=Tr(aTXTXb)
また、トレースは巡回性 Tr(ABC)=Tr(CBA) を持つので、
∂X∂(aTXTXb)=∂X∂Tr(aTXTXb)=∂X∂Tr(baTXTX)
トレース微分公式によって次を得る。
∂X∂(baTXTX)=X(baT+abT)
このときb=aなら、
∂X∂(aTXTXa)=2XaaT
このようにトレースの性質を利用して行列微分の計算を簡単な行列操作にする方法を、🔒(25/07/17)トレーストリックという。