えまログ

機械学習、プログラミング、数学に関する記事を書いていきます。

行列式を行列で偏微分する公式の証明

機械学習の勉強をしているのですが,EMアルゴリズムの数式を理解できず,線形代数の勉強を始めました...
今回は,線形代数でよく使う以下の公式の証明を行います.

 \frac{\partial |A|}{\partial A} = |A|(A^ {-1})^ T

ここで, Aはn次元の正則な正方行列とします.
できるだけ視覚的にわかりやすく示せればと思っています. では,証明を初めていきます.

|A|はスカラーなので,Aで偏微分すると,以下のようになります.

  
 \frac{\partial |A|} {\partial A} =
\begin{pmatrix}
\frac{\partial |A|}{\partial a_{11}} & \cdots & \frac{\partial |A|}{\partial a_{1n}} \\\\
\vdots & \ddots & \vdots \\\\
\frac{\partial |A|}{\partial a_{n1}} & \cdots & \frac{\partial |A|}{\partial a_{nn}}  
\end{pmatrix}

ここで, a_{ij}は行列Aのi行j列成分を表しています.
では,それぞれの要素について考えることにします.

行列Aに対する (i, j)成分の余因子を A_{ij}とします.
|A|は余因子展開により,Aのそれぞれの行,列について,以下のように表すことができます.


|A| = a_{i1}A_{i1} + a_{i2}A_{i2} + \cdots + a_{in}A_{in}

|A| = a_{1j}A_{1j} + a_{2j}A_{2j} + \cdots + a_{nj}A_{nj}

以上より,求めたい各要素の偏微分について以下の式が成り立ちます.


\frac{\partial |A|}{\partial a_{ij}} =  
A_{ij}

よって,以下が成り立ちます.

  
 \frac{\partial |A|}{\partial A} =
\begin{pmatrix}
A_{11} & \cdots & A_{1n} \\\\
\vdots & \ddots & \vdots \\\\
A_{n1} & \cdots & A_{nn} \tag{1}
\end{pmatrix} 

ここで,余因子行列は以下のように表せます.

  
 \tilde{A} =
\begin{pmatrix}
A_{11} & \cdots & A_{n1} \\\\
\vdots & \ddots & \vdots \\\\
A_{1n} & \cdots & A_{nn}
\end{pmatrix} \tag{2}

2つの式(1), (2)を見比べると,転置になっていることがわかります. したがって,(1)はAの転置行列の余因子行列ということになります.

  
 \begin{align}
\frac{\partial |A|}{\partial A} &=
\begin{pmatrix}
A_{11} & \cdots & A_{1n} \\\\
\vdots & \ddots & \vdots \\\\
A_{n1} & \cdots & A_{nn} 
\end{pmatrix} \\\\
&= \tilde{A^ T} 
\end{align}

逆行列の定義  A^ {-1} = \frac{1}{|A|}\tilde{A} を用いて,以下のように変形します.

  
 \begin{align}
\frac{\partial |A|}{\partial A} 
&= \tilde{A^ T}  \\\\
&= {|A^ T|}(A^ {T})^ {-1} \\\\
&= |A|(A^ {-1})^ {T}
\end{align}

以上より,題意を示すことができました.

いかがだったでしょうか.偏微分したときに,なぜ転置が起こるのかの理解の助けになれば幸いです.

参考文献

この記事は,以下を参考にしました.

余因子と余因子展開 | 大学1年生もバッチリ分かる線形代数入門

転置行列の意味・重要な7つの性質と証明 | 高校数学の美しい物語