証明集 第4章: 行列微分の基本公式

Proofs Chapter 4: Basic Formulas of Matrix Calculus

本章では、行列微分の基本公式を証明する。行列の積、転置、双線形形式の微分規則は、 後続のすべての章の基盤となる。これらの公式は、深層学習のバックプロパゲーション実装、 カルマンフィルタの導出、制御理論のリカッチ方程式の解析などで日常的に使用される。 各証明は行列の成分表示から出発し、結果を行列形式にまとめる。

前提知識: 第2章第3章本章の結果を用いる章: 第5章(トレース)第7章(行列式)第8章(逆行列)

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 双線形形式

公式:$\displaystyle\frac{\partial}{\partial \boldsymbol{X}} (\boldsymbol{a}^\top \boldsymbol{X} \boldsymbol{b}) = \boldsymbol{a} \boldsymbol{b}^\top$
条件:$\boldsymbol{a} \in \mathbb{R}^M$ は $M$ 次元定数ベクトル、$\boldsymbol{b} \in \mathbb{R}^N$ は $N$ 次元定数ベクトル、$\boldsymbol{X} \in \mathbb{R}^{M \times N}$ は $M \times N$ 行列変数、$\boldsymbol{a}^\top \boldsymbol{X} \boldsymbol{b} \in \mathbb{R}$ はスカラ
証明

行列とベクトルの積の構造を確認する。$\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}

補足:この公式は双線形形式(bilinear form)の微分の基本である。$\boldsymbol{a}^\top \boldsymbol{X} \boldsymbol{b}$ は $\boldsymbol{a}$ と $\boldsymbol{b}$ の両方に関して線形であり、$\boldsymbol{X}$ に関しても線形である。結果の $\boldsymbol{a} \boldsymbol{b}^\top$ はランク1行列(rank-1 matrix)であり、これは勾配が特定の方向に集中していることを示す。

4.2 転置を含む双線形形式

公式:$\displaystyle\frac{\partial}{\partial \boldsymbol{X}} (\boldsymbol{a}^\top \boldsymbol{X}^\top \boldsymbol{b}) = \boldsymbol{b} \boldsymbol{a}^\top$
条件:$\boldsymbol{a} \in \mathbb{R}^N$ は $N$ 次元定数ベクトル、$\boldsymbol{b} \in \mathbb{R}^M$ は $M$ 次元定数ベクトル、$\boldsymbol{X} \in \mathbb{R}^{M \times N}$ は $M \times N$ 行列変数、$\boldsymbol{X}^\top \in \mathbb{R}^{N \times M}$
証明

行列とベクトルの積の構造を確認する。$\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.1 の変形版である。$\boldsymbol{X}$ が $\boldsymbol{X}^\top$ に置き換わると、微分結果は $\boldsymbol{a}$ と $\boldsymbol{b}$ の役割が入れ替わり、$\boldsymbol{a} \boldsymbol{b}^\top$ から $\boldsymbol{b} \boldsymbol{a}^\top$ になる。これは転置の操作が「左右を入れ替える」効果を持つことの反映である。

4.3 単一要素行列と成分微分

公式:$\displaystyle\frac{\partial \boldsymbol{X}}{\partial X_{ij}} = \boldsymbol{J}^{ij}$
条件:$\boldsymbol{X} \in \mathbb{R}^{M \times N}$ は $M \times N$ 行列変数、$X_{ij}$ は $\boldsymbol{X}$ の $(i,j)$ 成分、$\boldsymbol{J}^{ij} \in \mathbb{R}^{M \times N}$ は $(i,j)$ 成分だけが $1$ で他の成分が $0$ の行列
証明

単一要素行列 $\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}

補足:$\boldsymbol{J}^{ij}$ は単一要素行列(single-entry matrix)と呼ばれ、行列の基底をなす。任意の行列 $\boldsymbol{X}$ は $\boldsymbol{X} = \sum_{i,j} X_{ij} \boldsymbol{J}^{ij}$ と表せる。この公式は、行列積の微分公式を成分形式で表す際の基礎となる。

4.4 行列積の成分微分

公式:$\displaystyle\frac{\partial (\boldsymbol{X}\boldsymbol{A})_{ij}}{\partial X_{mn}} = \delta_{im} A_{nj} = (\boldsymbol{J}^{mn}\boldsymbol{A})_{ij}$
条件:$\boldsymbol{X} \in \mathbb{R}^{M \times K}$ は $M \times K$ 行列変数、$\boldsymbol{A} \in \mathbb{R}^{K \times N}$ は $K \times N$ 定数行列、$\boldsymbol{X}\boldsymbol{A} \in \mathbb{R}^{M \times N}$、$\boldsymbol{J}^{mn} \in \mathbb{R}^{M \times K}$ は $(m,n)$ 成分だけが 1 の行列
証明

行列積の $(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}

補足:この公式は行列 $\boldsymbol{X}$ の特定の成分 $X_{mn}$ で微分したとき、結果の $(i, j)$ 成分がどうなるかを示す。$\delta_{im}$ があるため、$i \neq m$ のとき結果は 0 になる。これは $X_{mn}$ の変化が行列積 $\boldsymbol{X}\boldsymbol{A}$ の $m$ 行目だけに影響することを意味する。
X 0 m 2 × A = XA row 0 row m row 2 影響を受けるのは m 行目のみ

図1: $X_{mn}$ の変化は $\boldsymbol{XA}$ の $m$ 行目だけに影響する($\delta_{im}$ の効果)

4.5 転置行列積の成分微分

公式:$\displaystyle\frac{\partial (\boldsymbol{X}^\top\boldsymbol{A})_{ij}}{\partial X_{mn}} = \delta_{in} A_{mj} = (\boldsymbol{J}^{nm}\boldsymbol{A})_{ij}$
条件:$\boldsymbol{X} \in \mathbb{R}^{K \times M}$ は $K \times M$ 行列変数、$\boldsymbol{X}^\top \in \mathbb{R}^{M \times K}$、$\boldsymbol{A} \in \mathbb{R}^{K \times N}$ は $K \times N$ 定数行列、$\boldsymbol{X}^\top\boldsymbol{A} \in \mathbb{R}^{M \times N}$、$\boldsymbol{J}^{nm} \in \mathbb{R}^{M \times K}$ は $(n,m)$ 成分だけが 1 の行列
証明

転置行列の成分を確認する。$\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}

補足:公式 4.4 と比較すると、転置により添字の対応が変化している。4.4 では $\delta_{im}$ だったが、4.5 では $\delta_{in}$ となる。また、$\boldsymbol{J}^{mn}$ が $\boldsymbol{J}^{nm}$ に変わっている。これは転置操作が行と列の役割を入れ替えることの反映である。$X_{mn}$ の変化は $\boldsymbol{X}^\top$ の $(n, m)$ 成分を変化させ、結果として $\boldsymbol{X}^\top\boldsymbol{A}$ の $n$ 行目だけに影響する。
X 0 m 0 1 n 転置 Xᵀ 0 1 n 0 m × A = XᵀA row 0 row 1 row n 転置により影響を受けるのは n 行目に変わる

図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