証明集 第14章: 行列連鎖律(基本公式)

Proofs Chapter 14: Matrix Chain Rule

本章では行列連鎖律(matrix chain rule)を証明する。 合成関数 $g(f(\boldsymbol{X}))$ の微分を、成分ごとの和で表す成分形式(14.1)と、 それを Frobenius 内積で書き直したトレース形式(14.2)を導く。 連鎖律は深層学習の逆伝播(後退モードの自動微分)の数学的な土台でもある。

前提知識: 第3章(ベクトルをベクトルで微分)、 第4章(行列微分の基本公式)。 関連する章: 第6章(Hadamard積の微分)、 第11章(行列べき乗と合成関数)。

14. 行列連鎖律

本章の前提条件
本章の公式は、特に断りのない限り、以下の条件下で成立する:
  • すべての公式は分母レイアウト(denominator layout)に基づく
  • 中間変数行列 $\boldsymbol{U}$ の各成分は $\boldsymbol{X}$ の成分に関して微分可能
  • $g$ は $\boldsymbol{U}$ において(全)微分可能(偏微分が存在するだけでは公式は成り立たない)
  • トレース形式の連鎖律はスカラ関数の合成に対して適用される

行列 $\boldsymbol{U} = f(\boldsymbol{X})$ が行列 $\boldsymbol{X}$ の関数であり、さらにスカラ関数 $g(\boldsymbol{U})$ があるとき、合成関数 $g(f(\boldsymbol{X}))$ の各成分 $X_{ij}$ に関する偏微分を導出する(すべての $(i, j)$ について並べれば $\partial g / \partial \boldsymbol{X}$ になる)。

14.1 行列連鎖律(成分形式)

公式:$\displaystyle\dfrac{\partial g(\boldsymbol{U})}{\partial X_{ij}} = \displaystyle\sum_{k=0}^{M-1} \displaystyle\sum_{l=0}^{N-1} \displaystyle\dfrac{\partial g(\boldsymbol{U})}{\partial U_{kl}} \displaystyle\dfrac{\partial U_{kl}}{\partial X_{ij}}$
条件:$\boldsymbol{U} \in \mathbb{R}^{M \times N}$ が $\boldsymbol{X}$ の関数で各成分が微分可能、$g(\boldsymbol{U})$ は $\boldsymbol{U}$ において全微分可能なスカラ関数
証明

スカラ関数 $g(\boldsymbol{U})$ を考える。$\boldsymbol{U} = f(\boldsymbol{X})$ は行列 $\boldsymbol{X}$ の関数である。

$g$ は中間変数行列 $\boldsymbol{U}$ の全成分 $U_{kl}$($k = 0, \ldots, M-1$、$l = 0, \ldots, N-1$)を通じてスカラ値を出力する。$g$ を $\boldsymbol{U}$ の成分の関数として明示的に書くと

\begin{equation}g = g(U_{00}, U_{01}, \ldots, U_{M-1,N-1}) \label{eq:14-1-1}\end{equation}

$\boldsymbol{X}$ の成分 $X_{ij}$ を微小量 $\Delta X_{ij}$ だけ変化させることを考える。この変化により、中間変数 $\boldsymbol{U}$ の各成分 $U_{kl}$ も変化する。

\begin{equation}\Delta U_{kl} = \dfrac{\partial U_{kl}}{\partial X_{ij}} \Delta X_{ij} + o(\Delta X_{ij}) \label{eq:14-1-2}\end{equation}

$g$ の変化量 $\Delta g$ を計算する。$g$ は $\boldsymbol{U}$ の全成分に依存するため、多変数関数の全微分を適用する。

\begin{equation}\Delta g = \displaystyle\sum_{k=0}^{M-1} \displaystyle\sum_{l=0}^{N-1} \dfrac{\partial g}{\partial U_{kl}} \Delta U_{kl} + o(\lVert \Delta \boldsymbol{U} \rVert) \label{eq:14-1-3}\end{equation}

$\eqref{eq:14-1-2}$ を $\eqref{eq:14-1-3}$ に代入する。

\begin{equation}\Delta g = \displaystyle\sum_{k=0}^{M-1} \displaystyle\sum_{l=0}^{N-1} \dfrac{\partial g}{\partial U_{kl}} \dfrac{\partial U_{kl}}{\partial X_{ij}} \Delta X_{ij} + o(\Delta X_{ij}) \label{eq:14-1-4}\end{equation}

$\eqref{eq:14-1-4}$ を $\Delta X_{ij}$ で割り、$\Delta X_{ij} \to 0$ の極限を取る。

\begin{equation}\dfrac{\partial g}{\partial X_{ij}} = \lim_{\Delta X_{ij} \to 0} \dfrac{\Delta g}{\Delta X_{ij}} = \displaystyle\sum_{k=0}^{M-1} \displaystyle\sum_{l=0}^{N-1} \dfrac{\partial g}{\partial U_{kl}} \dfrac{\partial U_{kl}}{\partial X_{ij}} \label{eq:14-1-5}\end{equation}

$\eqref{eq:14-1-5}$ が行列連鎖律の成分形式である。

補足:$\eqref{eq:14-1-5}$ の二重和は、すべての $(k, l)$ の組み合わせについての和を表す。これは多変数関数の連鎖律を行列の全成分に拡張したものである。なお、$g$ に偏微分が存在するだけ(全微分可能でない)ではこの公式は成り立たない。たとえば $g(u, v) = \dfrac{u^2 v}{u^2 + v^2}$(原点では $0$)と $U(x) = (x, x)$ では、原点での偏微分はどちらも $0$ で右辺は $0$ になるが、$g(U(x)) = x/2$ の微分は $1/2$ である。

14.2 行列連鎖律(トレース形式)

公式:$\displaystyle\dfrac{\partial g(\boldsymbol{U})}{\partial X_{ij}} = \text{tr}\left[\left(\displaystyle\dfrac{\partial g}{\partial \boldsymbol{U}}\right)^\top \displaystyle\dfrac{\partial \boldsymbol{U}}{\partial X_{ij}}\right]$
条件:14.1 と同じ
証明

14.1 の $\eqref{eq:14-1-5}$ より、連鎖律の成分形式は

\begin{equation}\dfrac{\partial g}{\partial X_{ij}} = \displaystyle\sum_{k=0}^{M-1} \displaystyle\sum_{l=0}^{N-1} \dfrac{\partial g}{\partial U_{kl}} \dfrac{\partial U_{kl}}{\partial X_{ij}} \label{eq:14-2-1}\end{equation}

2つの行列を定義する。勾配行列を $\boldsymbol{G}$、微分行列を $\boldsymbol{H}^{ij}$ とする。

\begin{equation}\boldsymbol{G} = \dfrac{\partial g}{\partial \boldsymbol{U}} \in \mathbb{R}^{M \times N}, \quad G_{kl} = \dfrac{\partial g}{\partial U_{kl}} \label{eq:14-2-2}\end{equation}

\begin{equation}\boldsymbol{H}^{ij} = \dfrac{\partial \boldsymbol{U}}{\partial X_{ij}} \in \mathbb{R}^{M \times N}, \quad H^{ij}_{kl} = \dfrac{\partial U_{kl}}{\partial X_{ij}} \label{eq:14-2-3}\end{equation}

$\eqref{eq:14-2-1}$ を $\eqref{eq:14-2-2}$ と $\eqref{eq:14-2-3}$ を用いて書き換える。

\begin{equation}\dfrac{\partial g}{\partial X_{ij}} = \displaystyle\sum_{k=0}^{M-1} \displaystyle\sum_{l=0}^{N-1} G_{kl} H^{ij}_{kl} \label{eq:14-2-4}\end{equation}

$\eqref{eq:14-2-4}$ の右辺は2つの行列 $\boldsymbol{G}$ と $\boldsymbol{H}^{ij}$ の要素ごとの積の総和(Frobenius内積)である。

Frobenius内積 $\langle \boldsymbol{G}, \boldsymbol{H}^{ij} \rangle_F$ はトレースを用いて表現できることを示す。まず、行列積 $\boldsymbol{G}^\top \boldsymbol{H}^{ij}$ の $(p, q)$ 成分を計算する。転置行列の定義 $(\boldsymbol{G}^\top)_{pk} = G_{kp}$ と行列積の定義より

\begin{equation}(\boldsymbol{G}^\top \boldsymbol{H}^{ij})_{pq} = \displaystyle\sum_{k=0}^{M-1} (\boldsymbol{G}^\top)_{pk} H^{ij}_{kq} = \displaystyle\sum_{k=0}^{M-1} G_{kp} H^{ij}_{kq} \label{eq:14-2-5}\end{equation}

行列 $\boldsymbol{G}^\top \boldsymbol{H}^{ij}$ のトレースを計算する。$\boldsymbol{G} \in \mathbb{R}^{M \times N}$、$\boldsymbol{H}^{ij} \in \mathbb{R}^{M \times N}$ であるから、$\boldsymbol{G}^\top \in \mathbb{R}^{N \times M}$ となり、行列積 $\boldsymbol{G}^\top \boldsymbol{H}^{ij} \in \mathbb{R}^{N \times N}$ である。トレースの定義(対角成分の和)より

\begin{equation}\text{tr}(\boldsymbol{G}^\top \boldsymbol{H}^{ij}) = \displaystyle\sum_{l=0}^{N-1} (\boldsymbol{G}^\top \boldsymbol{H}^{ij})_{ll} \label{eq:14-2-6a}\end{equation}

$\eqref{eq:14-2-5}$ で $p = q = l$ とおくと

\begin{equation}(\boldsymbol{G}^\top \boldsymbol{H}^{ij})_{ll} = \displaystyle\sum_{k=0}^{M-1} G_{kl} H^{ij}_{kl} \label{eq:14-2-6b}\end{equation}

$\eqref{eq:14-2-6b}$ を $\eqref{eq:14-2-6a}$ に代入すると

\begin{equation}\text{tr}(\boldsymbol{G}^\top \boldsymbol{H}^{ij}) = \displaystyle\sum_{l=0}^{N-1} \displaystyle\sum_{k=0}^{M-1} G_{kl} H^{ij}_{kl} \label{eq:14-2-6}\end{equation}

$\eqref{eq:14-2-6}$ と $\eqref{eq:14-2-4}$ を比較すると、両者は等しいことがわかる。

\begin{equation}\dfrac{\partial g}{\partial X_{ij}} = \text{tr}(\boldsymbol{G}^\top \boldsymbol{H}^{ij}) = \text{tr}\left[\left(\dfrac{\partial g}{\partial \boldsymbol{U}}\right)^\top \dfrac{\partial \boldsymbol{U}}{\partial X_{ij}}\right] \label{eq:14-2-7}\end{equation}

$\eqref{eq:14-2-7}$ が行列連鎖律のトレース形式である。

補足:$\eqref{eq:14-2-7}$ の公式は 13.1 の構造行列の微分公式と同じ形式である。Frobenius内積とトレースの関係 $\langle \boldsymbol{A}, \boldsymbol{B} \rangle_F = \text{tr}(\boldsymbol{A}^\top \boldsymbol{B})$ が本質的な役割を果たす。

よくある質問

行列連鎖律とは何か

合成関数の微分に対する連鎖律を、行列を変数とする関数に広げたものである。$\boldsymbol{U} = f(\boldsymbol{X})$ とスカラ関数 $g(\boldsymbol{U})$ の合成 $g(f(\boldsymbol{X}))$ について、$X_{ij}$ に関する偏微分は $\dfrac{\partial g}{\partial X_{ij}} = \displaystyle\sum_{k,l} \dfrac{\partial g}{\partial U_{kl}} \dfrac{\partial U_{kl}}{\partial X_{ij}}$(成分形式)、すなわち $\mathrm{tr}\left[\left(\dfrac{\partial g}{\partial \boldsymbol{U}}\right)^\top \dfrac{\partial \boldsymbol{U}}{\partial X_{ij}}\right]$(トレース形式)となる。ここでの「積」は行列積ではなく、成分ごとの積の和(Frobenius 内積)である。$g$ が全微分可能であることが必要。

成分形式とトレース形式の連鎖律の違いは?

同じ式の書き方の違いで、内容は等しい。成分形式は $(k, l)$ についての二重和として明示的に書き、トレース形式はその二重和を Frobenius 内積 $\langle \boldsymbol{A}, \boldsymbol{B} \rangle_F = \mathrm{tr}(\boldsymbol{A}^\top \boldsymbol{B})$ として行列のまま書く。行列のまま式変形できるので、大きな行列を扱う計算で見通しがよい。

参考文献

  • 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