行列式の対数$\ln|{A}|$を$A$で偏微分を行う際の公式の導出

はじめに

ガウス分布の最尤推定では、共分散行列の最尤解を求めるにあたって$\displaystyle \frac{\partial \ln|A|}{\partial A}$を計算する必要があります。本記事では,これが $(A^{-1})^{\mathrm{T}}$ に等しいことを示します。以降、現れる行列は全て正方行列であり、行列式が $0$ ではないとします。本記事の前提知識は、線形代数において、行列式(置換を用いた定義)と余因子展開までです。

流れ

まずは細かい議論を無視し、流れを示します。

STEP 1

$\Delta_{ij}$ を $ D $ 次正方行列 $A$ の第$(i,j)$余因子、$\Delta = (\Delta_{ij}) \mathrm{(} \textit{i,j} \mathrm{ = 1,2,…,D)}$ なる行列と定義すると、$\displaystyle A^{-1} = \frac{\Delta^{\mathrm{T}}}{|A|}$ が成立することを示す。

STEP 2

$D$個の$D$次元列ベクトル $\textit{a}_\rm{1}, \textit{a}_\rm{2},…,\textit{a}_\rm{D}$ を用いて、$\textit{A} \rm{=[} \textit{a}_\rm{1}, \textit{a}_\rm{2},…,\textit{a}_\textrm{D}\textrm{]}$とする。また、$\it{A}$の任意の成分は $x$ に依存するものとする。このとき$|A|$ の$x$ による微分は 次で与えられることを示す。

$$\frac{\partial |\it{A}|}{\partial x} = |\textit{a}^{\prime}_1, \textit{a}_2,…,\textit{a}_D| \rm{+} |\textit{a}_1, \textit{a}^{\prime}_2,…,\textit{a}_D| \rm{+} … \rm{+} |\textit{a}_1, \textit{a}_2,…,\textit{a}^{\prime}_D| $$ (各列ベクトルを $\rm{\it{x}}$ で微分した行列の行列式の和)

特に、$ x = \it{a_{ij}} $ のとき、

$$\frac{\partial |\textit{A}|}{\partial \textit{a}_{ij}} =  |\textit{a}_1, \textit{a}_2,…,\textit{a}^{\prime}_i,…,\textit{a}_D|  = \Delta_{ij} $$

STEP 3

STEP $1$, STEP $2$ を組み合わせる。

$\displaystyle A^{-1} = \frac{\Delta^{\mathrm{T}}}{\it{|A|}}$ を示す

$\it{A}$ の行列式の第 $ j $ 列に関する余因子展開は次で与えられます。

$$\textit{|A|} = \textit{a}_{1j}\Delta_{1j}+\textit{a}_{2j}\Delta_{2j}+…+\textit{a}_{Dj}\Delta_{Dj}$$

ここで、第$k$列に第$j$列を代入した行列を$\textit{A}^{(k \rightarrow j)}$とします。もちろん$\textit{A}^{(j \rightarrow j)}=A$です。$k \not= j \Rightarrow |\textit{A}^{(k \rightarrow j)}|\rm{= 0}$が成り立ちます。(同じ列があるため)

あえて$|\textit{A}^{(k \rightarrow j)}|$の第$k$列($\textit{a}_j$により値が置き換えられている)に関する余因子展開を考えます。

$\textit{|A|} = \textit{a}_{1k}\Delta_{1k}+\textit{a}_{2k}\Delta_{2k}+…+\textit{a}_{Dk}\Delta_{Dk}$の各$\textit{a}_{mk}を\textit{a}_{mj}$ で置き換えれば良いです。したがって、

$$\textit{|A|} = \textit{a}_{1j}\Delta_{1k}+\textit{a}_{2j}\Delta_{2k}+…+\textit{a}_{Dj}\Delta_{Dk} = 0 $$

以上をまとめると、

$$|\textit{A}^{(k \rightarrow j)}|  = \left\{ \begin{array}{ll} |\textit{A}| & (k=j) \\ 0 & (k \not = j)\end{array} \right.$$

$|\textit{A}^{(k \rightarrow j)}| (k,j = 1,2,…,D)$ を並べれば、対角成分が $ |\it{A}| $ で、それ以外は $0$ という行列が作れます。さらに、$$\textit{|A|} = \textit{a}_{1j}\Delta_{1k}+\textit{a}_{2j}\Delta_{2k}+…+\textit{a}_{Dj}\Delta_{Dk} $$という式を考えると、$\textit{A}$と$\Delta$の積で書けます。

行列の文字で書けば、$A\Delta^{\mathrm{T}}=|A|E$ (E: 単位行列)です。また, $\Delta^{\mathrm{T}}A=|A|E$ も成り立つので、$\displaystyle A^{-1} = \frac{\Delta^{\mathrm{T}}}{\it{|A|}}$ を得ます。

行列式の微分を求める

行列 $A$ の行列式は以下で定義されます.

$$\displaystyle |A| = \sum_{\sigma}sgn(\sigma)a_{\sigma(1)1}a_{\sigma(2)2}…a_{\sigma(D)D}$$

$\sigma$は置換、和は$D$文字の任意の置換を走ります。$\sigma(j)$は文字 j の置換による像です。行列式は以下の記事でも解説されています。

一旦、行列 $A$ の全ての成分は変数 $x$ に依存すると仮定しましょう。$x$ で微分します。

$\displaystyle\frac{\partial |\textit{A}|}{\partial x} = \frac{\partial }{\partial x}\sum_{\sigma}sgn(\sigma)a_{\sigma(1)1}a_{\sigma(2)2}…a_{\sigma(D)D}$

$ = \sum_{\sigma}sgn(\sigma)(a^{\prime}_{\sigma(1)1}a_{\sigma(2)2}…a_{\sigma(D)D}+a_{\sigma(1)1}a^{\prime}_{\sigma(2)2}…a_{\sigma(D)D}+…+a_{\sigma(1)1}a_{\sigma(2)2}…a^{\prime}_{\sigma(D)D})$

一部取り出してみます。

$\displaystyle \sum_{\sigma}sgn(\sigma)(a_{\sigma(1)1}a_{\sigma(2)2}…a^{\prime}_{\sigma(j)j}…a_{\sigma(D)D})$

これは行列 $A$ の第 $j$ 列を $x$ で微分したものに置き換えたものの行列式です。従って、$\displaystyle \frac{\partial |\textit{A}|}{\partial x} = |\textit{a}^{\prime}_1, \textit{a}_2,…,\textit{a}_D| \rm{+} |\textit{a}_1, \textit{a}^{\prime}_2,…,\textit{a}_D| \rm{+} … \rm{+} |\textit{a}_1, \textit{a}_2,…,\textit{a}^{\prime}_D|$(各列ベクトルを$\rm{\textit{x}}$ で微分した行列の行列式の和)を得ます。

次に、行列 $A$ の全ての成分は互いに依存しないことを仮定し、$\displaystyle \frac{\partial |\it{A}|}{\partial \textit{a}_{ij}}$ を考えます。第 $j$列以外は$\textit{a}_{ij}$ で微分すれば零ベクトルになるため無視できます.第 $j$列を $\it{a}_{ij}$ で微分すれば、第 $i$ 行だけが $1$ で、それ以外は $0$ です。例えば $(i,j)=(2,1)$ とすると、以下のような行列式を考えることになります。

\begin{vmatrix}
0 & \cdots & a_{1j} & \cdots & a_{1D}\\
1 & \cdots & a_{2j} & \cdots & a_{2D}\\
\vdots & \ddots & & & \vdots \\
0 & & a_{ij} & & a_{iD} \\
\vdots & & & \ddots & \vdots \\
0 & \cdots & a_{Dj} & \cdots & a_{DD}
\end{vmatrix}

余因子展開により、この行列式は $\Delta_{21}$ に等しく、他の $(i,j)$ でも同様です。したがって、$\displaystyle \frac{\partial |\it{A}|}{\partial \it{a_{ij}}}=\Delta_{ij}$ , まとめて $\displaystyle \frac{\partial |\it{A}|}{\partial \it{A}}=\Delta$が得られます。

仕上げ

$\displaystyle \frac{\partial \rm{ ln}|\it{A}|}{\partial A}=\frac{\Delta}{|A|}$ に対して、$\displaystyle A^{-1} = \frac{\Delta^{\mathrm{T}}}{\it{|A|}} $の両辺を転置したものを代入すれば $\displaystyle \frac{\partial \rm{ ln}|\it{A}|}{\partial A} = (A^{-1})^{\mathrm{T}}$ を得ます。

以上です!

参考

・$n$次正方行列の行列式の定義・計算・解釈
https://www.hello-statisticians.com/explain-books-cat/matrix_determinants1.html
・パターン認識と機械学習 Appendix.C