証明集 第12章: ノルムの微分(基本公式)

Proofs Chapter 12: Derivatives of Norms

本章ではベクトルノルムと行列ノルム(Frobeniusノルム)の微分を証明する。 ノルムの微分は線形回帰の最小二乗法の勾配導出、L1/L2正則化の劣勾配計算、 行列補完問題(核ノルム最小化)、信号処理のスパースリカバリなど、 最適化と統計学習の実装に直結する基礎公式である。 2-ノルムの微分から正規化ベクトルの微分まで、実用的な公式を網羅する。

前提知識: 第2章(スカラをベクトルで微分)第5章(トレースの微分)関連する章: 第10章(二次形式の微分)第15章(特殊行列の微分)

12. ノルムの微分

本章の前提条件
本章の公式は、特に断りのない限り、以下の条件下で成立する:
  • すべての公式は分母レイアウト(denominator layout)に基づく
  • ノルム $\|\boldsymbol{x}\|$ は $\boldsymbol{x} = \boldsymbol{0}$ で微分不能(劣勾配を用いる場合は個別に注記)
  • ノルムの2乗 $\|\boldsymbol{x}\|^2$ はどこでも微分可能

ベクトルノルムおよび行列ノルム(特にFrobeniusノルム)の微分公式を導出する。

12.1 ベクトル2-ノルムの微分

公式:$\displaystyle\frac{\partial}{\partial \boldsymbol{x}} \|\boldsymbol{x} - \boldsymbol{a}\|_2 = \displaystyle\frac{\boldsymbol{x} - \boldsymbol{a}}{\|\boldsymbol{x} - \boldsymbol{a}\|_2}$
条件:$\boldsymbol{a}$ は定数ベクトル、$\boldsymbol{x} \neq \boldsymbol{a}$
証明

補助変数 $\boldsymbol{u} = \boldsymbol{x} - \boldsymbol{a}$ を導入する。

\begin{equation}\boldsymbol{u} = \boldsymbol{x} - \boldsymbol{a} \label{eq:12-1-1}\end{equation}

$\boldsymbol{a}$ は定数ベクトルであるから、$\boldsymbol{u}$ の $\boldsymbol{x}$ に関する微分は単位行列となる。

\begin{equation}\frac{\partial \boldsymbol{u}}{\partial \boldsymbol{x}} = \boldsymbol{I} \label{eq:12-1-2}\end{equation}

ベクトル2-ノルムの定義より、$\|\boldsymbol{u}\|_2$ は次のように表される。

\begin{equation}\|\boldsymbol{u}\|_2 = \sqrt{\boldsymbol{u}^\top\boldsymbol{u}} = \sqrt{\sum_{i=0}^{n-1} u_i^2} \label{eq:12-1-3}\end{equation}

$f = \|\boldsymbol{u}\|_2 = \sqrt{\boldsymbol{u}^\top\boldsymbol{u}}$ とおく。内部関数 $g = \boldsymbol{u}^\top\boldsymbol{u}$ を定義する。

\begin{equation}g = \boldsymbol{u}^\top\boldsymbol{u} \label{eq:12-1-4}\end{equation}

このとき $f = \sqrt{g}$ である。連鎖律(1.26)を適用するため、まず $f$ の $g$ に関する微分を計算する。

\begin{equation}\frac{\partial f}{\partial g} = \frac{\partial}{\partial g} \sqrt{g} = \frac{1}{2\sqrt{g}} = \frac{1}{2\|\boldsymbol{u}\|_2} \label{eq:12-1-5}\end{equation}

次に $g = \boldsymbol{u}^\top\boldsymbol{u}$ の $\boldsymbol{u}$ に関する微分を計算する。$g$ を成分で展開する。

\begin{equation}g = \sum_{i=0}^{n-1} u_i^2 \label{eq:12-1-6}\end{equation}

$g$ を $u_j$ で偏微分する。

\begin{equation}\frac{\partial g}{\partial u_j} = \frac{\partial}{\partial u_j} \sum_{i=0}^{n-1} u_i^2 = 2u_j \label{eq:12-1-7}\end{equation}

$\eqref{eq:12-1-7}$ をベクトル形式で書くと次のようになる。

\begin{equation}\frac{\partial g}{\partial \boldsymbol{u}} = 2\boldsymbol{u} \label{eq:12-1-8}\end{equation}

連鎖律(1.26)を適用する。$f$ の $\boldsymbol{u}$ に関する微分は次のようになる。

\begin{equation}\frac{\partial f}{\partial \boldsymbol{u}} = \frac{\partial f}{\partial g} \cdot \frac{\partial g}{\partial \boldsymbol{u}} \label{eq:12-1-9}\end{equation}

$\eqref{eq:12-1-5}$ と $\eqref{eq:12-1-8}$ を $\eqref{eq:12-1-9}$ に代入する。

\begin{equation}\frac{\partial f}{\partial \boldsymbol{u}} = \frac{1}{2\|\boldsymbol{u}\|_2} \cdot 2\boldsymbol{u} = \frac{\boldsymbol{u}}{\|\boldsymbol{u}\|_2} \label{eq:12-1-10}\end{equation}

さらに連鎖律(1.26)を適用して、$f$ の $\boldsymbol{x}$ に関する微分を求める。

\begin{equation}\frac{\partial f}{\partial \boldsymbol{x}} = \frac{\partial f}{\partial \boldsymbol{u}} \cdot \frac{\partial \boldsymbol{u}}{\partial \boldsymbol{x}} \label{eq:12-1-11}\end{equation}

$\eqref{eq:12-1-2}$ と $\eqref{eq:12-1-10}$ を $\eqref{eq:12-1-11}$ に代入する。

\begin{equation}\frac{\partial f}{\partial \boldsymbol{x}} = \frac{\boldsymbol{u}}{\|\boldsymbol{u}\|_2} \cdot \boldsymbol{I} = \frac{\boldsymbol{u}}{\|\boldsymbol{u}\|_2} \label{eq:12-1-12}\end{equation}

$\eqref{eq:12-1-1}$ より $\boldsymbol{u} = \boldsymbol{x} - \boldsymbol{a}$ を代入して最終結果を得る。

\begin{equation}\frac{\partial}{\partial \boldsymbol{x}} \|\boldsymbol{x} - \boldsymbol{a}\|_2 = \frac{\boldsymbol{x} - \boldsymbol{a}}{\|\boldsymbol{x} - \boldsymbol{a}\|_2} \label{eq:12-1-13}\end{equation}

補足:$\eqref{eq:12-1-13}$ の右辺はベクトル $\boldsymbol{x} - \boldsymbol{a}$ を正規化したものである。$\boldsymbol{a} = \boldsymbol{0}$ のとき $\displaystyle\frac{\partial}{\partial \boldsymbol{x}} \|\boldsymbol{x}\|_2 = \displaystyle\frac{\boldsymbol{x}}{\|\boldsymbol{x}\|_2}$ となり、これは単位ベクトル $\hat{\boldsymbol{x}}$ に等しい。

12.2 正規化ベクトルの微分

公式:$\displaystyle\frac{\partial}{\partial \boldsymbol{x}} \displaystyle\frac{\boldsymbol{x} - \boldsymbol{a}}{\|\boldsymbol{x} - \boldsymbol{a}\|_2} = \displaystyle\frac{\boldsymbol{I}}{\|\boldsymbol{x} - \boldsymbol{a}\|_2} - \displaystyle\frac{(\boldsymbol{x} - \boldsymbol{a})(\boldsymbol{x} - \boldsymbol{a})^\top}{\|\boldsymbol{x} - \boldsymbol{a}\|_2^3}$
条件:$\boldsymbol{a}$ は定数ベクトル、$\boldsymbol{x} \neq \boldsymbol{a}$
証明

補助変数を導入する。

\begin{equation}\boldsymbol{u} = \boldsymbol{x} - \boldsymbol{a} \label{eq:12-2-1}\end{equation}

\begin{equation}r = \|\boldsymbol{u}\|_2 \label{eq:12-2-2}\end{equation}

正規化ベクトル $\hat{\boldsymbol{u}}$ を定義する。

\begin{equation}\hat{\boldsymbol{u}} = \frac{\boldsymbol{u}}{r} \label{eq:12-2-3}\end{equation}

$\hat{\boldsymbol{u}}$ の $\boldsymbol{x}$ に関する微分を求める。これはベクトルをスカラで割った商の微分であり、商の微分法則(1.28)を適用する。

$\boldsymbol{u}$ の $\boldsymbol{x}$ に関する微分は単位行列である。

\begin{equation}\frac{\partial \boldsymbol{u}}{\partial \boldsymbol{x}} = \boldsymbol{I} \label{eq:12-2-4}\end{equation}

12.1 の $\eqref{eq:12-1-10}$ より、$r = \|\boldsymbol{u}\|_2$ の $\boldsymbol{u}$ に関する微分は次のようになる。

\begin{equation}\frac{\partial r}{\partial \boldsymbol{u}} = \frac{\boldsymbol{u}}{r} = \hat{\boldsymbol{u}} \label{eq:12-2-5}\end{equation}

連鎖律(1.26)より、$r$ の $\boldsymbol{x}$ に関する微分を計算する。

\begin{equation}\frac{\partial r}{\partial \boldsymbol{x}} = \frac{\partial r}{\partial \boldsymbol{u}} \cdot \frac{\partial \boldsymbol{u}}{\partial \boldsymbol{x}} = \hat{\boldsymbol{u}} \cdot \boldsymbol{I} = \frac{\boldsymbol{u}}{r} \label{eq:12-2-6}\end{equation}

商の微分法則(1.28)をベクトル-スカラ商に適用する。$\hat{\boldsymbol{u}} = \boldsymbol{u} / r$ に対して

\begin{equation}\frac{\partial \hat{\boldsymbol{u}}}{\partial \boldsymbol{x}} = \frac{1}{r} \frac{\partial \boldsymbol{u}}{\partial \boldsymbol{x}} - \frac{\boldsymbol{u}}{r^2} \left(\frac{\partial r}{\partial \boldsymbol{x}}\right)^\top \label{eq:12-2-7}\end{equation}

ここで $r$ はスカラーであるため、$\frac{\partial r}{\partial \boldsymbol{x}}$ は行ベクトル($1 \times n$ 行列)である。第2項でベクトル $\boldsymbol{u}$(列ベクトル)との積を取るため、転置 $(\cdot)^\top$ により行ベクトルを列ベクトルに変換する必要があり、その結果は $n \times n$ 行列となる。

$\eqref{eq:12-2-4}$ と $\eqref{eq:12-2-6}$ を $\eqref{eq:12-2-7}$ に代入する。

\begin{equation}\frac{\partial \hat{\boldsymbol{u}}}{\partial \boldsymbol{x}} = \frac{1}{r} \boldsymbol{I} - \frac{\boldsymbol{u}}{r^2} \left(\frac{\boldsymbol{u}}{r}\right)^\top \label{eq:12-2-8}\end{equation}

$\eqref{eq:12-2-8}$ を整理する。

\begin{equation}\frac{\partial \hat{\boldsymbol{u}}}{\partial \boldsymbol{x}} = \frac{\boldsymbol{I}}{r} - \frac{\boldsymbol{u} \boldsymbol{u}^\top}{r^3} \label{eq:12-2-9}\end{equation}

$\eqref{eq:12-2-1}$ と $\eqref{eq:12-2-2}$ を代入して最終結果を得る。

\begin{equation}\frac{\partial}{\partial \boldsymbol{x}} \frac{\boldsymbol{x} - \boldsymbol{a}}{\|\boldsymbol{x} - \boldsymbol{a}\|_2} = \frac{\boldsymbol{I}}{\|\boldsymbol{x} - \boldsymbol{a}\|_2} - \frac{(\boldsymbol{x} - \boldsymbol{a})(\boldsymbol{x} - \boldsymbol{a})^\top}{\|\boldsymbol{x} - \boldsymbol{a}\|_2^3} \label{eq:12-2-10}\end{equation}

補足:$\eqref{eq:12-2-10}$ を $\displaystyle\frac{1}{r}(\boldsymbol{I} - \hat{\boldsymbol{u}}\hat{\boldsymbol{u}}^\top)$ と書くと、$\boldsymbol{I} - \hat{\boldsymbol{u}}\hat{\boldsymbol{u}}^\top$ は $\hat{\boldsymbol{u}}$ に直交する部分空間への射影行列である。これは正規化ベクトルの変化が元のベクトルの方向には生じず、直交方向にのみ生じることを意味する。

12.3 2-ノルムの2乗の微分

公式:$\displaystyle\frac{\partial}{\partial \boldsymbol{x}} \|\boldsymbol{x}\|_2^2 = 2\boldsymbol{x}$
条件:$\boldsymbol{x} \in \mathbb{R}^n$
証明

2-ノルムの2乗の定義を確認する。

\begin{equation}\|\boldsymbol{x}\|_2^2 = \boldsymbol{x}^\top\boldsymbol{x} \label{eq:12-3-1}\end{equation}

$\eqref{eq:12-3-1}$ を成分で展開する。

\begin{equation}\|\boldsymbol{x}\|_2^2 = \sum_{i=0}^{n-1} x_i^2 \label{eq:12-3-2}\end{equation}

$\|\boldsymbol{x}\|_2^2$ を $x_j$ で偏微分する。$\eqref{eq:12-3-2}$ の和において、$i = j$ の項のみが $x_j$ を含む。

\begin{equation}\frac{\partial}{\partial x_j} \|\boldsymbol{x}\|_2^2 = \frac{\partial}{\partial x_j} \sum_{i=0}^{n-1} x_i^2 = \frac{\partial}{\partial x_j} x_j^2 = 2x_j \label{eq:12-3-3}\end{equation}

$\eqref{eq:12-3-3}$ はすべての $j = 0, \ldots, n-1$ について成り立つ。分母レイアウトでは勾配は列ベクトルとしてまとめられる。

\begin{equation}\frac{\partial}{\partial \boldsymbol{x}} \|\boldsymbol{x}\|_2^2 = \begin{pmatrix} 2x_0 \\ 2x_1 \\ \vdots \\ 2x_{n-1} \end{pmatrix} = 2\boldsymbol{x} \label{eq:12-3-4}\end{equation}

$\eqref{eq:12-3-4}$ より最終結果を得る。

\begin{equation}\frac{\partial}{\partial \boldsymbol{x}} \|\boldsymbol{x}\|_2^2 = 2\boldsymbol{x} \label{eq:12-3-5}\end{equation}

補足:$\eqref{eq:12-3-5}$ は 12.1 の特殊ケースとしても導出できる。$\|\boldsymbol{x}\|_2^2 = (\|\boldsymbol{x}\|_2)^2$ に連鎖律を適用すると、$\displaystyle\frac{\partial}{\partial \boldsymbol{x}} \|\boldsymbol{x}\|_2^2 = 2\|\boldsymbol{x}\|_2 \cdot \displaystyle\frac{\boldsymbol{x}}{\|\boldsymbol{x}\|_2} = 2\boldsymbol{x}$ となる。

12.4 Frobeniusノルムの2乗

公式:$\displaystyle\frac{\partial}{\partial \boldsymbol{X}} \|\boldsymbol{X}\|_F^2 = 2\boldsymbol{X}$
条件:$\boldsymbol{X}$ は実行列、$\|\boldsymbol{X}\|_F^2 = \text{tr}(\boldsymbol{X}^\top\boldsymbol{X}) = \sum_{i,j} X_{ij}^2$
証明

Frobeniusノルムの2乗の定義を確認する。

\begin{equation}\|\boldsymbol{X}\|_F^2 = \text{tr}(\boldsymbol{X}^\top\boldsymbol{X}) \label{eq:12-4-1}\end{equation}

$\eqref{eq:12-4-1}$ を成分で展開する。$\boldsymbol{X} \in \mathbb{R}^{m \times n}$ とすると

\begin{equation}\|\boldsymbol{X}\|_F^2 = \sum_{i=0}^{m-1} \sum_{j=0}^{n-1} X_{ij}^2 \label{eq:12-4-2}\end{equation}

$\|\boldsymbol{X}\|_F^2$ を成分 $X_{pq}$ で偏微分する。$\eqref{eq:12-4-2}$ の二重和において、$(i, j) = (p, q)$ の項のみが $X_{pq}$ を含む。

\begin{equation}\frac{\partial}{\partial X_{pq}} \|\boldsymbol{X}\|_F^2 = \frac{\partial}{\partial X_{pq}} \sum_{i,j} X_{ij}^2 = \frac{\partial}{\partial X_{pq}} X_{pq}^2 = 2X_{pq} \label{eq:12-4-3}\end{equation}

$\eqref{eq:12-4-3}$ はすべての $(p, q)$ について成り立つので、行列形式で書くと次のようになる。

\begin{equation}\left(\frac{\partial}{\partial \boldsymbol{X}} \|\boldsymbol{X}\|_F^2\right)_{pq} = 2X_{pq} \label{eq:12-4-4}\end{equation}

$\eqref{eq:12-4-4}$ より最終結果を得る。

\begin{equation}\frac{\partial}{\partial \boldsymbol{X}} \|\boldsymbol{X}\|_F^2 = 2\boldsymbol{X} \label{eq:12-4-5}\end{equation}

補足:$\eqref{eq:12-4-5}$ は 3.8 の $\displaystyle\frac{\partial}{\partial \boldsymbol{X}} \text{tr}(\boldsymbol{X}\boldsymbol{X}^\top) = 2\boldsymbol{X}$ としても導出できる。Frobeniusノルムの2乗は $\|\boldsymbol{X}\|_F^2 = \text{tr}(\boldsymbol{X}^\top\boldsymbol{X}) = \text{tr}(\boldsymbol{X}\boldsymbol{X}^\top)$ であり、トレースの巡回性より両者は等しい。
出典:F.G. Frobenius (1881) "Über die Darstellung der endlichen Gruppen durch lineare Substitutionen". FrobeniusノルムはHilbert-Schmidtノルムとも呼ばれる。

12.5 Frobeniusノルム

公式:$\displaystyle\frac{\partial}{\partial \boldsymbol{X}} \|\boldsymbol{X}\|_F = \displaystyle\frac{\boldsymbol{X}}{\|\boldsymbol{X}\|_F}$
条件:$\boldsymbol{X} \neq \boldsymbol{O}$(零行列でない)
証明

Frobeniusノルムは2乗の平方根として表される。

\begin{equation}\|\boldsymbol{X}\|_F = \sqrt{\|\boldsymbol{X}\|_F^2} \label{eq:12-5-1}\end{equation}

内部関数を定義する。

\begin{equation}g = \|\boldsymbol{X}\|_F^2 \label{eq:12-5-2}\end{equation}

このとき $f = \|\boldsymbol{X}\|_F = \sqrt{g}$ である。連鎖律(1.26)を適用するため、まず $f$ の $g$ に関する微分を計算する。

\begin{equation}\frac{\partial f}{\partial g} = \frac{\partial}{\partial g} \sqrt{g} = \frac{1}{2\sqrt{g}} = \frac{1}{2\|\boldsymbol{X}\|_F} \label{eq:12-5-3}\end{equation}

12.4 の $\eqref{eq:12-4-5}$ より、$g = \|\boldsymbol{X}\|_F^2$ の微分は次のようになる。

\begin{equation}\frac{\partial g}{\partial \boldsymbol{X}} = 2\boldsymbol{X} \label{eq:12-5-4}\end{equation}

連鎖律(1.26)を適用する。

\begin{equation}\frac{\partial f}{\partial \boldsymbol{X}} = \frac{\partial f}{\partial g} \cdot \frac{\partial g}{\partial \boldsymbol{X}} \label{eq:12-5-5}\end{equation}

$\eqref{eq:12-5-3}$ と $\eqref{eq:12-5-4}$ を $\eqref{eq:12-5-5}$ に代入する。

\begin{equation}\frac{\partial f}{\partial \boldsymbol{X}} = \frac{1}{2\|\boldsymbol{X}\|_F} \cdot 2\boldsymbol{X} = \frac{\boldsymbol{X}}{\|\boldsymbol{X}\|_F} \label{eq:12-5-6}\end{equation}

$\eqref{eq:12-5-6}$ より最終結果を得る。

\begin{equation}\frac{\partial}{\partial \boldsymbol{X}} \|\boldsymbol{X}\|_F = \frac{\boldsymbol{X}}{\|\boldsymbol{X}\|_F} \label{eq:12-5-7}\end{equation}

補足:$\eqref{eq:12-5-7}$ はベクトル2-ノルムの微分公式 $\eqref{eq:12-1-13}$($\boldsymbol{a} = \boldsymbol{0}$ の場合)の行列版である。Frobeniusノルムの勾配は元の行列を正規化したものとなる。

12.6 差のFrobeniusノルム

公式:$\displaystyle\frac{\partial}{\partial \boldsymbol{X}} \|\boldsymbol{X} - \boldsymbol{A}\|_F^2 = 2(\boldsymbol{X} - \boldsymbol{A})$
条件:$\boldsymbol{A}$ は定数行列
証明

補助変数を導入する。

\begin{equation}\boldsymbol{U} = \boldsymbol{X} - \boldsymbol{A} \label{eq:12-6-1}\end{equation}

$\boldsymbol{A}$ は定数行列であるから、$\boldsymbol{U}$ の $\boldsymbol{X}$ に関する微分は単位変換となる。すなわち、各成分について

\begin{equation}\frac{\partial U_{pq}}{\partial X_{rs}} = \delta_{pr}\delta_{qs} \label{eq:12-6-2}\end{equation}

$\|\boldsymbol{U}\|_F^2$ を成分で展開する。

\begin{equation}\|\boldsymbol{U}\|_F^2 = \sum_{i,j} U_{ij}^2 = \sum_{i,j} (X_{ij} - A_{ij})^2 \label{eq:12-6-3}\end{equation}

$\|\boldsymbol{U}\|_F^2$ を成分 $X_{pq}$ で偏微分する。$\eqref{eq:12-6-3}$ の二重和において、$(i, j) = (p, q)$ の項のみが $X_{pq}$ を含む。

\begin{equation}\frac{\partial}{\partial X_{pq}} \|\boldsymbol{U}\|_F^2 = \frac{\partial}{\partial X_{pq}} (X_{pq} - A_{pq})^2 \label{eq:12-6-4}\end{equation}

$\eqref{eq:12-6-4}$ の右辺を計算する。$(X_{pq} - A_{pq})^2$ の微分は連鎖律(1.26)より

\begin{equation}\frac{\partial}{\partial X_{pq}} (X_{pq} - A_{pq})^2 = 2(X_{pq} - A_{pq}) \cdot 1 = 2(X_{pq} - A_{pq}) \label{eq:12-6-5}\end{equation}

$\eqref{eq:12-6-5}$ はすべての $(p, q)$ について成り立つので、行列形式で書くと次のようになる。

\begin{equation}\left(\frac{\partial}{\partial \boldsymbol{X}} \|\boldsymbol{U}\|_F^2\right)_{pq} = 2(X_{pq} - A_{pq}) = 2U_{pq} \label{eq:12-6-6}\end{equation}

$\eqref{eq:12-6-6}$ より最終結果を得る。

\begin{equation}\frac{\partial}{\partial \boldsymbol{X}} \|\boldsymbol{X} - \boldsymbol{A}\|_F^2 = 2(\boldsymbol{X} - \boldsymbol{A}) \label{eq:12-6-7}\end{equation}

補足:$\eqref{eq:12-6-7}$ は最小二乗法の行列版で重要である。$\|\boldsymbol{X} - \boldsymbol{A}\|_F^2$ を最小化する条件は勾配がゼロ、すなわち $\boldsymbol{X} = \boldsymbol{A}$ である。これは $\|\boldsymbol{X} - \boldsymbol{A}\|_F^2 \geq 0$ であり、$\boldsymbol{X} = \boldsymbol{A}$ のとき最小値 0 をとることと整合する。

12.7 線形回帰の残差(左から乗算)

公式:$\displaystyle\frac{\partial}{\partial \boldsymbol{X}} \|\boldsymbol{A}\boldsymbol{X} - \boldsymbol{B}\|_F^2 = 2\boldsymbol{A}^\top(\boldsymbol{A}\boldsymbol{X} - \boldsymbol{B})$
条件:$\boldsymbol{A}$ は $M \times N$ 行列、$\boldsymbol{X}$ は $N \times P$ 行列、$\boldsymbol{B}$ は $M \times P$ 定数行列
証明

補助変数を導入する。

\begin{equation}\boldsymbol{U} = \boldsymbol{A}\boldsymbol{X} - \boldsymbol{B} \label{eq:12-7-1}\end{equation}

$\boldsymbol{U} \in \mathbb{R}^{M \times P}$ である。Frobeniusノルムの2乗はトレースを用いて表される。

\begin{equation}\|\boldsymbol{U}\|_F^2 = \text{tr}(\boldsymbol{U}^\top \boldsymbol{U}) \label{eq:12-7-2}\end{equation}

12.6 の $\eqref{eq:12-6-7}$ より、$\|\boldsymbol{U}\|_F^2$ の $\boldsymbol{U}$ に関する微分は次のようになる。

\begin{equation}\frac{\partial}{\partial \boldsymbol{U}} \|\boldsymbol{U}\|_F^2 = 2\boldsymbol{U} \label{eq:12-7-3}\end{equation}

次に $\boldsymbol{U}$ の $\boldsymbol{X}$ に関する微分を計算する。$\eqref{eq:12-7-1}$ より $U_{kl} = \sum_{n=0}^{N-1} A_{kn} X_{nl} - B_{kl}$ である。

\begin{equation}U_{kl} = \sum_{n=0}^{N-1} A_{kn} X_{nl} - B_{kl} \label{eq:12-7-4}\end{equation}

$U_{kl}$ を $X_{ij}$ で偏微分する。$\eqref{eq:12-7-4}$ において、$n = i$ かつ $l = j$ の項のみが $X_{ij}$ を含む。

\begin{equation}\frac{\partial U_{kl}}{\partial X_{ij}} = A_{ki} \delta_{lj} \label{eq:12-7-5}\end{equation}

ここで $\delta_{lj}$ はKroneckerのデルタであり、$l = j$ のとき 1、それ以外は 0 である。

連鎖律を適用する。$f = \|\boldsymbol{U}\|_F^2$ の $X_{ij}$ に関する微分は

\begin{equation}\frac{\partial f}{\partial X_{ij}} = \sum_{k,l} \frac{\partial f}{\partial U_{kl}} \frac{\partial U_{kl}}{\partial X_{ij}} \label{eq:12-7-6}\end{equation}

$\eqref{eq:12-7-3}$ より $\frac{\partial f}{\partial U_{kl}} = 2U_{kl}$ を $\eqref{eq:12-7-6}$ に代入する。

\begin{equation}\frac{\partial f}{\partial X_{ij}} = \sum_{k,l} 2U_{kl} \cdot A_{ki} \delta_{lj} \label{eq:12-7-7}\end{equation}

$\eqref{eq:12-7-7}$ において、$\delta_{lj}$ により $l = j$ の項のみが残る。

\begin{equation}\frac{\partial f}{\partial X_{ij}} = \sum_{k} 2U_{kj} A_{ki} = 2\sum_{k} A_{ki} U_{kj} \label{eq:12-7-8}\end{equation}

$\eqref{eq:12-7-8}$ の $\sum_k A_{ki} U_{kj}$ は行列積 $\boldsymbol{A}^\top \boldsymbol{U}$ の $(i, j)$ 成分である。

\begin{equation}\sum_{k} A_{ki} U_{kj} = (\boldsymbol{A}^\top \boldsymbol{U})_{ij} \label{eq:12-7-9}\end{equation}

$\eqref{eq:12-7-9}$ を $\eqref{eq:12-7-8}$ に代入する。

\begin{equation}\frac{\partial f}{\partial X_{ij}} = 2(\boldsymbol{A}^\top \boldsymbol{U})_{ij} \label{eq:12-7-10}\end{equation}

$\eqref{eq:12-7-10}$ はすべての $(i, j)$ について成り立つので、行列形式で書くと次のようになる。

\begin{equation}\frac{\partial}{\partial \boldsymbol{X}} \|\boldsymbol{U}\|_F^2 = 2\boldsymbol{A}^\top \boldsymbol{U} \label{eq:12-7-11}\end{equation}

$\eqref{eq:12-7-1}$ より $\boldsymbol{U} = \boldsymbol{A}\boldsymbol{X} - \boldsymbol{B}$ を代入して最終結果を得る。

\begin{equation}\frac{\partial}{\partial \boldsymbol{X}} \|\boldsymbol{A}\boldsymbol{X} - \boldsymbol{B}\|_F^2 = 2\boldsymbol{A}^\top(\boldsymbol{A}\boldsymbol{X} - \boldsymbol{B}) \label{eq:12-7-12}\end{equation}

補足:$\eqref{eq:12-7-12}$ は線形回帰 $\boldsymbol{A}\boldsymbol{X} \approx \boldsymbol{B}$ の最小二乗解を導出するのに用いる。勾配をゼロとおくと $\boldsymbol{A}^\top \boldsymbol{A} \boldsymbol{X} = \boldsymbol{A}^\top \boldsymbol{B}$ となり、$\boldsymbol{A}^\top \boldsymbol{A}$ が正則ならば正規方程式 $\boldsymbol{X} = (\boldsymbol{A}^\top \boldsymbol{A})^{-1} \boldsymbol{A}^\top \boldsymbol{B}$ が得られる。

12.8 線形回帰の残差(右から乗算)

公式:$\displaystyle\frac{\partial}{\partial \boldsymbol{X}} \|\boldsymbol{X}\boldsymbol{A} - \boldsymbol{B}\|_F^2 = 2(\boldsymbol{X}\boldsymbol{A} - \boldsymbol{B})\boldsymbol{A}^\top$
条件:$\boldsymbol{X}$ は $M \times N$ 行列、$\boldsymbol{A}$ は $N \times P$ 定数行列、$\boldsymbol{B}$ は $M \times P$ 定数行列
証明

補助変数を導入する。

\begin{equation}\boldsymbol{U} = \boldsymbol{X}\boldsymbol{A} - \boldsymbol{B} \label{eq:12-8-1}\end{equation}

$\boldsymbol{U} \in \mathbb{R}^{M \times P}$ である。$\eqref{eq:12-8-1}$ より $U_{kl} = \sum_{n=0}^{N-1} X_{kn} A_{nl} - B_{kl}$ である。

\begin{equation}U_{kl} = \sum_{n=0}^{N-1} X_{kn} A_{nl} - B_{kl} \label{eq:12-8-2}\end{equation}

$U_{kl}$ を $X_{ij}$ で偏微分する。$\eqref{eq:12-8-2}$ において、$k = i$ かつ $n = j$ の項のみが $X_{ij}$ を含む。

\begin{equation}\frac{\partial U_{kl}}{\partial X_{ij}} = \delta_{ki} A_{jl} \label{eq:12-8-3}\end{equation}

連鎖律を適用する。$f = \|\boldsymbol{U}\|_F^2$ の $X_{ij}$ に関する微分は

\begin{equation}\frac{\partial f}{\partial X_{ij}} = \sum_{k,l} \frac{\partial f}{\partial U_{kl}} \frac{\partial U_{kl}}{\partial X_{ij}} \label{eq:12-8-4}\end{equation}

$\frac{\partial f}{\partial U_{kl}} = 2U_{kl}$ と $\eqref{eq:12-8-3}$ を $\eqref{eq:12-8-4}$ に代入する。

\begin{equation}\frac{\partial f}{\partial X_{ij}} = \sum_{k,l} 2U_{kl} \cdot \delta_{ki} A_{jl} \label{eq:12-8-5}\end{equation}

$\eqref{eq:12-8-5}$ において、$\delta_{ki}$ により $k = i$ の項のみが残る。

\begin{equation}\frac{\partial f}{\partial X_{ij}} = \sum_{l} 2U_{il} A_{jl} = 2\sum_{l} U_{il} A_{jl} \label{eq:12-8-6}\end{equation}

$\eqref{eq:12-8-6}$ の $\sum_l U_{il} A_{jl}$ は行列積 $\boldsymbol{U} \boldsymbol{A}^\top$ の $(i, j)$ 成分である。

\begin{equation}\sum_{l} U_{il} A_{jl} = \sum_{l} U_{il} (A^\top)_{lj} = (\boldsymbol{U} \boldsymbol{A}^\top)_{ij} \label{eq:12-8-7}\end{equation}

$\eqref{eq:12-8-7}$ を $\eqref{eq:12-8-6}$ に代入する。

\begin{equation}\frac{\partial f}{\partial X_{ij}} = 2(\boldsymbol{U} \boldsymbol{A}^\top)_{ij} \label{eq:12-8-8}\end{equation}

$\eqref{eq:12-8-8}$ はすべての $(i, j)$ について成り立つので、行列形式で書くと次のようになる。

\begin{equation}\frac{\partial}{\partial \boldsymbol{X}} \|\boldsymbol{U}\|_F^2 = 2\boldsymbol{U} \boldsymbol{A}^\top \label{eq:12-8-9}\end{equation}

$\eqref{eq:12-8-1}$ より $\boldsymbol{U} = \boldsymbol{X}\boldsymbol{A} - \boldsymbol{B}$ を代入して最終結果を得る。

\begin{equation}\frac{\partial}{\partial \boldsymbol{X}} \|\boldsymbol{X}\boldsymbol{A} - \boldsymbol{B}\|_F^2 = 2(\boldsymbol{X}\boldsymbol{A} - \boldsymbol{B})\boldsymbol{A}^\top \label{eq:12-8-10}\end{equation}

補足:$\eqref{eq:12-8-10}$ は 12.7 の転置版と考えることもできる。$\boldsymbol{A}$ と $\boldsymbol{X}$ の位置関係により、$\boldsymbol{A}^\top$ が左右どちらに来るかが決まる。$\boldsymbol{A}$ が $\boldsymbol{X}$ の左にあれば $\boldsymbol{A}^\top$ は左に、$\boldsymbol{A}$ が $\boldsymbol{X}$ の右にあれば $\boldsymbol{A}^\top$ は右に現れる。

12.9 回帰の重み勾配

公式:$\displaystyle\frac{\partial}{\partial \boldsymbol{w}} \|\boldsymbol{X}\boldsymbol{w} - \boldsymbol{y}\|_2^2 = 2\boldsymbol{X}^\top(\boldsymbol{X}\boldsymbol{w} - \boldsymbol{y})$
条件:$\boldsymbol{X}$ は $N \times D$ データ行列、$\boldsymbol{w}$ は $D$ 次元重みベクトル、$\boldsymbol{y}$ は $N$ 次元目標ベクトル
証明

残差ベクトルを定義する。

\begin{equation}\boldsymbol{r} = \boldsymbol{X}\boldsymbol{w} - \boldsymbol{y} \label{eq:12-9-1}\end{equation}

$\boldsymbol{r} \in \mathbb{R}^N$ である。損失関数は残差の2乗ノルムである。

\begin{equation}L = \|\boldsymbol{r}\|_2^2 = \boldsymbol{r}^\top \boldsymbol{r} \label{eq:12-9-2}\end{equation}

$\eqref{eq:12-9-2}$ を成分で展開する。

\begin{equation}L = \sum_{i=0}^{N-1} r_i^2 \label{eq:12-9-3}\end{equation}

$\eqref{eq:12-9-1}$ より、各残差成分は次のように表される。

\begin{equation}r_i = \sum_{j=0}^{D-1} X_{ij} w_j - y_i \label{eq:12-9-4}\end{equation}

$r_i$ を $w_k$ で偏微分する。$\eqref{eq:12-9-4}$ において、$j = k$ の項のみが $w_k$ を含む。

\begin{equation}\frac{\partial r_i}{\partial w_k} = X_{ik} \label{eq:12-9-5}\end{equation}

連鎖律を適用して、$L$ の $w_k$ に関する微分を計算する。

\begin{equation}\frac{\partial L}{\partial w_k} = \sum_{i=0}^{N-1} \frac{\partial L}{\partial r_i} \frac{\partial r_i}{\partial w_k} \label{eq:12-9-6}\end{equation}

$\eqref{eq:12-9-3}$ より $\frac{\partial L}{\partial r_i} = 2r_i$ である。これを $\eqref{eq:12-9-6}$ に代入する。

\begin{equation}\frac{\partial L}{\partial w_k} = \sum_{i=0}^{N-1} 2r_i \cdot X_{ik} = 2\sum_{i=0}^{N-1} X_{ik} r_i \label{eq:12-9-7}\end{equation}

$\eqref{eq:12-9-7}$ の $\sum_i X_{ik} r_i$ は行列積 $\boldsymbol{X}^\top \boldsymbol{r}$ の第 $k$ 成分である。

\begin{equation}\sum_{i=0}^{N-1} X_{ik} r_i = \sum_{i=0}^{N-1} (X^\top)_{ki} r_i = (\boldsymbol{X}^\top \boldsymbol{r})_k \label{eq:12-9-8}\end{equation}

$\eqref{eq:12-9-8}$ を $\eqref{eq:12-9-7}$ に代入する。

\begin{equation}\frac{\partial L}{\partial w_k} = 2(\boldsymbol{X}^\top \boldsymbol{r})_k \label{eq:12-9-9}\end{equation}

$\eqref{eq:12-9-9}$ はすべての $k = 0, \ldots, D-1$ について成り立つので、ベクトル形式で書くと次のようになる。

\begin{equation}\frac{\partial L}{\partial \boldsymbol{w}} = 2\boldsymbol{X}^\top \boldsymbol{r} \label{eq:12-9-10}\end{equation}

$\eqref{eq:12-9-1}$ より $\boldsymbol{r} = \boldsymbol{X}\boldsymbol{w} - \boldsymbol{y}$ を代入して最終結果を得る。

\begin{equation}\frac{\partial}{\partial \boldsymbol{w}} \|\boldsymbol{X}\boldsymbol{w} - \boldsymbol{y}\|_2^2 = 2\boldsymbol{X}^\top(\boldsymbol{X}\boldsymbol{w} - \boldsymbol{y}) \label{eq:12-9-11}\end{equation}

補足:$\eqref{eq:12-9-11}$ は機械学習で最も基本的な勾配であり、線形回帰の勾配降下法で用いる。勾配をゼロとおくと $\boldsymbol{X}^\top \boldsymbol{X} \boldsymbol{w} = \boldsymbol{X}^\top \boldsymbol{y}$ となり、$\boldsymbol{X}^\top \boldsymbol{X}$ が正則ならば最適解 $\boldsymbol{w}^* = (\boldsymbol{X}^\top \boldsymbol{X})^{-1} \boldsymbol{X}^\top \boldsymbol{y}$ が得られる。$\boldsymbol{X}^\top \boldsymbol{X}$ が正則でない場合は擬似逆行列 $\boldsymbol{X}^+ = (\boldsymbol{X}^\top \boldsymbol{X})^+ \boldsymbol{X}^\top$ を用いる。

参考文献

  • 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