証明集 第4章: 行列微分の基本公式
Proofs Chapter 4: Basic Formulas of Matrix Calculus
本章では、行列微分の基本公式を証明する。行列の積、転置、双線形形式の微分規則は、 後続のすべての章の基盤となる。これらの公式は、深層学習のバックプロパゲーション実装、 カルマンフィルタの導出、制御理論のリカッチ方程式の解析などで日常的に使用される。 各証明は行列の成分表示から出発し、結果を行列形式にまとめる。
4. 行列微分の基本公式
本章の公式は、特に断りのない限り、以下の条件下で成立する:
- すべての公式は分母レイアウト(denominator layout)に基づく
- スカラ $f$ を行列 $\boldsymbol{X} \in \mathbb{R}^{M \times N}$ で微分した結果は $\frac{\partial f}{\partial \boldsymbol{X}} \in \mathbb{R}^{M \times N}$(同じサイズの行列)
- 関数は微分可能な開集合上で定義される
4.1 双線形形式
証明
行列とベクトルの積の構造を確認する。$\boldsymbol{a}^\top$ は $1 \times M$ 行ベクトル、$\boldsymbol{X}$ は $M \times N$ 行列、$\boldsymbol{b}$ は $N \times 1$ 列ベクトルであるから
\begin{equation} \boldsymbol{a}^\top \boldsymbol{X} \boldsymbol{b} : (1 \times M) \cdot (M \times N) \cdot (N \times 1) = 1 \times 1 \label{eq:4-1-1} \end{equation}
したがって結果はスカラである。
まず $\boldsymbol{a}^\top \boldsymbol{X}$ を計算すると、これは $1 \times N$ 行ベクトルとなる。
\begin{equation} (\boldsymbol{a}^\top \boldsymbol{X})_j = \sum_{i=0}^{M-1} a_i X_{ij} \label{eq:4-1-2} \end{equation}
次に $(\boldsymbol{a}^\top \boldsymbol{X}) \boldsymbol{b}$ を計算する。行ベクトルと列ベクトルの積なのでスカラとなる。
\begin{equation} (\boldsymbol{a}^\top \boldsymbol{X}) \boldsymbol{b} = \sum_{j=0}^{N-1} (\boldsymbol{a}^\top \boldsymbol{X})_j \cdot b_j \label{eq:4-1-3} \end{equation}
式 \eqref{eq:4-1-2} を式 \eqref{eq:4-1-3} に代入すると
\begin{equation} \boldsymbol{a}^\top \boldsymbol{X} \boldsymbol{b} = \sum_{j=0}^{N-1} \left( \sum_{i=0}^{M-1} a_i X_{ij} \right) b_j \label{eq:4-1-4} \end{equation}
有限和なので和の順序を入れ替えると
\begin{equation} \boldsymbol{a}^\top \boldsymbol{X} \boldsymbol{b} = \sum_{i=0}^{M-1} \sum_{j=0}^{N-1} a_i X_{ij} b_j \label{eq:4-1-5} \end{equation}
このスカラ値を行列の $(m, n)$ 成分 $X_{mn}$ で偏微分する。$a_i$, $b_j$ は定数なので
\begin{equation} \frac{\partial}{\partial X_{mn}} (\boldsymbol{a}^\top \boldsymbol{X} \boldsymbol{b}) = \sum_{i=0}^{M-1} \sum_{j=0}^{N-1} a_i \frac{\partial X_{ij}}{\partial X_{mn}} b_j \label{eq:4-1-6} \end{equation}
$X_{ij}$ と $X_{mn}$ は、$(i, j) = (m, n)$ のときだけ同じ変数であり、それ以外は独立な変数である。Kroneckerのデルタを用いると
\begin{equation} \frac{\partial X_{ij}}{\partial X_{mn}} = \delta_{im} \delta_{jn} \label{eq:4-1-7} \end{equation}
式 \eqref{eq:4-1-7} を式 \eqref{eq:4-1-6} に代入すると
\begin{equation} \frac{\partial}{\partial X_{mn}} (\boldsymbol{a}^\top \boldsymbol{X} \boldsymbol{b}) = \sum_{i=0}^{M-1} \sum_{j=0}^{N-1} a_i \delta_{im} \delta_{jn} b_j \label{eq:4-1-8} \end{equation}
$\delta_{im} = 1$ となるのは $i = m$ のときだけなので $\sum_{i=0}^{M-1} a_i \delta_{im} = a_m$、同様に $\sum_{j=0}^{N-1} \delta_{jn} b_j = b_n$ である。したがって
\begin{equation} \frac{\partial}{\partial X_{mn}} (\boldsymbol{a}^\top \boldsymbol{X} \boldsymbol{b}) = a_m b_n \label{eq:4-1-9} \end{equation}
$(m, n)$ 成分が $a_m b_n$ である $M \times N$ 行列は、外積 $\boldsymbol{a} \boldsymbol{b}^\top$ である。
\begin{equation} (\boldsymbol{a} \boldsymbol{b}^\top)_{mn} = a_m b_n \label{eq:4-1-10} \end{equation}
したがって、行列形式で最終結果を得る。
\begin{equation} \frac{\partial}{\partial \boldsymbol{X}} (\boldsymbol{a}^\top \boldsymbol{X} \boldsymbol{b}) = \boldsymbol{a} \boldsymbol{b}^\top \label{eq:4-1-11} \end{equation}
4.2 転置を含む双線形形式
証明
行列とベクトルの積の構造を確認する。$\boldsymbol{a}^\top$ は $1 \times N$、$\boldsymbol{X}^\top$ は $N \times M$、$\boldsymbol{b}$ は $M \times 1$ であるから
\begin{equation} \boldsymbol{a}^\top \boldsymbol{X}^\top \boldsymbol{b} : (1 \times N) \cdot (N \times M) \cdot (M \times 1) = 1 \times 1 \label{eq:4-2-1} \end{equation}
したがって結果はスカラである。
スカラの転置はそのスカラ自身に等しいので
\begin{equation} \boldsymbol{a}^\top \boldsymbol{X}^\top \boldsymbol{b} = (\boldsymbol{a}^\top \boldsymbol{X}^\top \boldsymbol{b})^\top \label{eq:4-2-2} \end{equation}
行列積の転置の性質 $(\boldsymbol{ABC})^\top = \boldsymbol{C}^\top \boldsymbol{B}^\top \boldsymbol{A}^\top$ を適用すると
\begin{equation} (\boldsymbol{a}^\top \boldsymbol{X}^\top \boldsymbol{b})^\top = \boldsymbol{b}^\top (\boldsymbol{X}^\top)^\top (\boldsymbol{a}^\top)^\top \label{eq:4-2-3} \end{equation}
$(\boldsymbol{X}^\top)^\top = \boldsymbol{X}$ および $(\boldsymbol{a}^\top)^\top = \boldsymbol{a}$ を適用すると
\begin{equation} \boldsymbol{b}^\top (\boldsymbol{X}^\top)^\top (\boldsymbol{a}^\top)^\top = \boldsymbol{b}^\top \boldsymbol{X} \boldsymbol{a} \label{eq:4-2-4} \end{equation}
式 \eqref{eq:4-2-2}〜\eqref{eq:4-2-4} をまとめると
\begin{equation} \boldsymbol{a}^\top \boldsymbol{X}^\top \boldsymbol{b} = \boldsymbol{b}^\top \boldsymbol{X} \boldsymbol{a} \label{eq:4-2-5} \end{equation}
公式 4.1 より $\displaystyle\frac{\partial}{\partial \boldsymbol{X}} (\boldsymbol{c}^\top \boldsymbol{X} \boldsymbol{d}) = \boldsymbol{c} \boldsymbol{d}^\top$ である。式 \eqref{eq:4-2-5} の右辺に対して $\boldsymbol{c} = \boldsymbol{b}$、$\boldsymbol{d} = \boldsymbol{a}$ と対応づけると
\begin{equation} \frac{\partial}{\partial \boldsymbol{X}} (\boldsymbol{b}^\top \boldsymbol{X} \boldsymbol{a}) = \boldsymbol{b} \boldsymbol{a}^\top \label{eq:4-2-6} \end{equation}
式 \eqref{eq:4-2-5} より $\boldsymbol{a}^\top \boldsymbol{X}^\top \boldsymbol{b} = \boldsymbol{b}^\top \boldsymbol{X} \boldsymbol{a}$ なので、最終結果を得る。
\begin{equation} \frac{\partial}{\partial \boldsymbol{X}} (\boldsymbol{a}^\top \boldsymbol{X}^\top \boldsymbol{b}) = \frac{\partial}{\partial \boldsymbol{X}} (\boldsymbol{b}^\top \boldsymbol{X} \boldsymbol{a}) = \boldsymbol{b} \boldsymbol{a}^\top \label{eq:4-2-7} \end{equation}
4.3 単一要素行列と成分微分
証明
単一要素行列 $\boldsymbol{J}^{ij}$(single-entry matrix)の定義を確認する。$\boldsymbol{J}^{ij}$ は $(i,j)$ 成分だけが 1 で、それ以外の成分がすべて 0 である $M \times N$ 行列である。
\begin{equation} (\boldsymbol{J}^{ij})_{kl} = \begin{cases} 1 & \text{if } k = i \text{ and } l = j \\ 0 & \text{otherwise} \end{cases} \label{eq:4-3-1} \end{equation}
これをKroneckerのデルタを用いて表現すると
\begin{equation} (\boldsymbol{J}^{ij})_{kl} = \delta_{ki} \delta_{lj} \label{eq:4-3-2} \end{equation}
行列 $\boldsymbol{X}$ を成分 $X_{ij}$ で偏微分することを考える。行列の偏微分とは、各成分を微分した結果を行列として並べたものであるから
\begin{equation} \left( \frac{\partial \boldsymbol{X}}{\partial X_{ij}} \right)_{kl} = \frac{\partial X_{kl}}{\partial X_{ij}} \label{eq:4-3-3} \end{equation}
行列の各成分は独立な変数であるから、$X_{kl}$ を $X_{ij}$ で微分すると $(k, l) = (i, j)$ のときだけ 1 となる。Kroneckerのデルタで表すと
\begin{equation} \frac{\partial X_{kl}}{\partial X_{ij}} = \delta_{ki} \delta_{lj} \label{eq:4-3-4} \end{equation}
式 \eqref{eq:4-3-2} と式 \eqref{eq:4-3-4} を比較すると
\begin{equation} \frac{\partial X_{kl}}{\partial X_{ij}} = \delta_{ki} \delta_{lj} = (\boldsymbol{J}^{ij})_{kl} \label{eq:4-3-5} \end{equation}
すべての $(k, l)$ について式 \eqref{eq:4-3-5} が成り立つので、行列として等式が成立する。
\begin{equation} \frac{\partial \boldsymbol{X}}{\partial X_{ij}} = \boldsymbol{J}^{ij} \label{eq:4-3-6} \end{equation}
4.4 行列積の成分微分
証明
行列積の $(i, j)$ 成分を定義に従って書き下すと
\begin{equation} (\boldsymbol{X}\boldsymbol{A})_{ij} = \sum_{k=0}^{K-1} X_{ik} A_{kj} \label{eq:4-4-1} \end{equation}
この和を $X_{mn}$ で偏微分する。$A_{kj}$ は定数なので
\begin{equation} \frac{\partial (\boldsymbol{X}\boldsymbol{A})_{ij}}{\partial X_{mn}} = \sum_{k=0}^{K-1} \frac{\partial X_{ik}}{\partial X_{mn}} A_{kj} \label{eq:4-4-2} \end{equation}
$X_{ik}$ と $X_{mn}$ が同じ変数になるのは $(i, k) = (m, n)$ のときだけであるから、Kroneckerのデルタを用いて
\begin{equation} \frac{\partial X_{ik}}{\partial X_{mn}} = \delta_{im} \delta_{kn} \label{eq:4-4-3} \end{equation}
式 \eqref{eq:4-4-3} を式 \eqref{eq:4-4-2} に代入すると
\begin{equation} \frac{\partial (\boldsymbol{X}\boldsymbol{A})_{ij}}{\partial X_{mn}} = \sum_{k=0}^{K-1} \delta_{im} \delta_{kn} A_{kj} \label{eq:4-4-4} \end{equation}
$\delta_{im}$ は $k$ に依存しないので和の外に出し、$\sum_{k=0}^{K-1} \delta_{kn} A_{kj} = A_{nj}$ を用いると
\begin{equation} \frac{\partial (\boldsymbol{X}\boldsymbol{A})_{ij}}{\partial X_{mn}} = \delta_{im} A_{nj} \label{eq:4-4-5} \end{equation}
この結果が $(\boldsymbol{J}^{mn}\boldsymbol{A})_{ij}$ と等しいことを示す。$\boldsymbol{J}^{mn}\boldsymbol{A}$ の $(i, j)$ 成分は
\begin{equation} (\boldsymbol{J}^{mn}\boldsymbol{A})_{ij} = \sum_{k=0}^{K-1} (\boldsymbol{J}^{mn})_{ik} A_{kj} \label{eq:4-4-6} \end{equation}
$\boldsymbol{J}^{mn}$ の定義より $(\boldsymbol{J}^{mn})_{ik} = \delta_{im} \delta_{kn}$ を代入すると
\begin{equation} (\boldsymbol{J}^{mn}\boldsymbol{A})_{ij} = \sum_{k=0}^{K-1} \delta_{im} \delta_{kn} A_{kj} = \delta_{im} A_{nj} \label{eq:4-4-7} \end{equation}
式 \eqref{eq:4-4-5} と式 \eqref{eq:4-4-7} を比較して、最終結果を得る。
\begin{equation} \frac{\partial (\boldsymbol{X}\boldsymbol{A})_{ij}}{\partial X_{mn}} = \delta_{im} A_{nj} = (\boldsymbol{J}^{mn}\boldsymbol{A})_{ij} \label{eq:4-4-8} \end{equation}
図1: $X_{mn}$ の変化は $\boldsymbol{XA}$ の $m$ 行目だけに影響する($\delta_{im}$ の効果)
4.5 転置行列積の成分微分
証明
転置行列の成分を確認する。$\boldsymbol{X}^\top$ の $(i, k)$ 成分は $\boldsymbol{X}$ の $(k, i)$ 成分に等しい。
\begin{equation} (\boldsymbol{X}^\top)_{ik} = X_{ki} \label{eq:4-5-1} \end{equation}
行列積 $\boldsymbol{X}^\top\boldsymbol{A}$ の $(i, j)$ 成分を定義に従って書き下すと
\begin{equation} (\boldsymbol{X}^\top\boldsymbol{A})_{ij} = \sum_{k=0}^{K-1} (\boldsymbol{X}^\top)_{ik} A_{kj} = \sum_{k=0}^{K-1} X_{ki} A_{kj} \label{eq:4-5-2} \end{equation}
この和を $X_{mn}$ で偏微分する。$A_{kj}$ は定数なので
\begin{equation} \frac{\partial (\boldsymbol{X}^\top\boldsymbol{A})_{ij}}{\partial X_{mn}} = \sum_{k=0}^{K-1} \frac{\partial X_{ki}}{\partial X_{mn}} A_{kj} \label{eq:4-5-3} \end{equation}
$X_{ki}$ と $X_{mn}$ が同じ変数になるのは $(k, i) = (m, n)$ のときだけであるから、Kroneckerのデルタを用いて
\begin{equation} \frac{\partial X_{ki}}{\partial X_{mn}} = \delta_{km} \delta_{in} \label{eq:4-5-4} \end{equation}
式 \eqref{eq:4-5-4} を式 \eqref{eq:4-5-3} に代入すると
\begin{equation} \frac{\partial (\boldsymbol{X}^\top\boldsymbol{A})_{ij}}{\partial X_{mn}} = \sum_{k=0}^{K-1} \delta_{km} \delta_{in} A_{kj} \label{eq:4-5-5} \end{equation}
$\delta_{in}$ は $k$ に依存しないので和の外に出し、$\sum_{k=0}^{K-1} \delta_{km} A_{kj} = A_{mj}$ を用いると
\begin{equation} \frac{\partial (\boldsymbol{X}^\top\boldsymbol{A})_{ij}}{\partial X_{mn}} = \delta_{in} A_{mj} \label{eq:4-5-6} \end{equation}
この結果が $(\boldsymbol{J}^{nm}\boldsymbol{A})_{ij}$ と等しいことを示す。$\boldsymbol{J}^{nm} \in \mathbb{R}^{M \times K}$ は $(n, m)$ 成分だけが 1 の行列なので
\begin{equation} (\boldsymbol{J}^{nm})_{ik} = \delta_{in} \delta_{km} \label{eq:4-5-7} \end{equation}
$\boldsymbol{J}^{nm}\boldsymbol{A}$ の $(i, j)$ 成分を計算すると
\begin{equation} (\boldsymbol{J}^{nm}\boldsymbol{A})_{ij} = \sum_{k=0}^{K-1} \delta_{in} \delta_{km} A_{kj} = \delta_{in} A_{mj} \label{eq:4-5-8} \end{equation}
式 \eqref{eq:4-5-6} と式 \eqref{eq:4-5-8} を比較して、最終結果を得る。
\begin{equation} \frac{\partial (\boldsymbol{X}^\top\boldsymbol{A})_{ij}}{\partial X_{mn}} = \delta_{in} A_{mj} = (\boldsymbol{J}^{nm}\boldsymbol{A})_{ij} \label{eq:4-5-9} \end{equation}
図2: $X_{mn}$ の変化は $\boldsymbol{X}^\top$ の $(n,m)$ 成分を変え、$\boldsymbol{X}^\top\boldsymbol{A}$ の $n$ 行目だけに影響する($\delta_{in}$ の効果)
参考文献
- Petersen, K. B., & Pedersen, M. S. (2012). The Matrix Cookbook. Technical University of Denmark.
- Magnus, J. R., & Neudecker, H. (1999). Matrix Differential Calculus with Applications in Statistics and Econometrics (Revised ed.). Wiley.
- Matrix calculus - Wikipedia