Contents
はじめに
ガウス分布の最尤推定では、共分散行列の最尤解を求めるにあたって$\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