証明集 第6章: Hadamard積の微分
Proofs: Derivative of Hadamard Product
本章では、Hadamard積(要素ごとの積)の微分を証明する。 ニューラルネットワークの逆伝播では、活性化関数の微分がHadamard積の形で勾配に作用する。 本章の公式はその基礎となるものである。
前提知識: 第4章(行列微分の基本公式)、 第5章(トレースの微分)。 関連する章: 第14章(行列連鎖律)。
本章の公式は、特に断りのない限り、以下の条件下で成立する:
- すべての公式は分母レイアウト(denominator layout)に基づく
- Hadamard積 $\odot$ は同じ次元のベクトル(または行列)間の要素ごとの積を表す
6.1 Hadamard積の微分
証明
Hadamard積の $i$ 番目の成分は次のように定義される。
\begin{equation} (\boldsymbol{x} \odot \boldsymbol{y})_i = x_i \, y_i \label{eq:6-1-1} \end{equation}
これを $z_j$ で偏微分する。スカラの積の微分(Leibniz則)を適用すると次のようになる。
\begin{equation} \frac{\partial (x_i \, y_i)}{\partial z_j} = x_i \frac{\partial y_i}{\partial z_j} + y_i \frac{\partial x_i}{\partial z_j} \label{eq:6-1-2} \end{equation}
これをJacobi行列 $\boldsymbol{J} \in \mathbb{R}^{N \times M}$(分母レイアウトでは $\mathbb{R}^{M \times N}$)の成分として書くと、行列形式では次のようになる。
\begin{equation} \frac{\partial (\boldsymbol{x} \odot \boldsymbol{y})}{\partial \boldsymbol{z}} = \mathrm{diag}(\boldsymbol{x}) \frac{\partial \boldsymbol{y}}{\partial \boldsymbol{z}} + \mathrm{diag}(\boldsymbol{y}) \frac{\partial \boldsymbol{x}}{\partial \boldsymbol{z}} \label{eq:6-1-3} \end{equation}
ここで $\mathrm{diag}(\boldsymbol{x})$ は $\boldsymbol{x}$ の成分を対角に並べた行列であり、$\mathrm{diag}(\boldsymbol{x}) \boldsymbol{A}$ の各行 $i$ は $\boldsymbol{A}$ の行 $i$ を $x_i$ 倍したものとなる。これにより成分ごとの積 $x_i \cdot (\partial y_i / \partial z_j)$ が正しく表現される。
参考文献
- Petersen, K. B., & Pedersen, M. S. (2012). The Matrix Cookbook. Technical University of Denmark.
- Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press. www.deeplearningbook.org