機械学習
MachineLearning
数学
線形代数

「ベクトルで微分・行列で微分」公式まとめ

機械学習の分野で頻出の

  • スカラーをベクトルで微分
  • ベクトルをベクトルで微分
  • スカラーを行列で微分

の公式をまとめました。
順次追加予定です。

1. スカラーのベクトル微分

1.1. 計算の定義

f \in \mathbb{ R } \\ 
\boldsymbol{x}  \in \mathbb{ R }^n

のとき、

\frac{ \partial f }{ \partial \boldsymbol{x} } = 
\left(
\begin{array}{ccccc}
\frac{ \partial f }{ \partial {x}_{1} }, & \cdots &
\frac{ \partial f }{ \partial {x}_{i} }, & \cdots &
\frac{ \partial f }{ \partial {x}_{n} }\
\end{array}
\right)^T
\in \mathbb{ R }^n

1.2. 公式

\frac{ \partial  }{ \partial \boldsymbol{x} }
\boldsymbol{a}^T\boldsymbol{x}
 = \boldsymbol{a} \\

\frac{ \partial  }{ \partial \boldsymbol{x} }
\boldsymbol{x}^T\boldsymbol{a}
 = \boldsymbol{a} \\

\frac{ \partial  }{ \partial \boldsymbol{x} }
\boldsymbol{x}^T\boldsymbol{x}
 = 2\boldsymbol{x} \\

\frac{ \partial }{ \partial \boldsymbol{x} }
 \boldsymbol{x}^T A\boldsymbol{x}
 = (A+A^T)\boldsymbol{x} \\

\frac{ \partial }{ \partial \boldsymbol{x} }
\left(\boldsymbol{x} - \boldsymbol{a} \right)^T
\left(\boldsymbol{x} - \boldsymbol{a} \right)
 = 2\left(\boldsymbol{x} - \boldsymbol{a} \right) \\

\frac{ \partial }{ \partial \boldsymbol{x} }
\left(A\boldsymbol{x} - \boldsymbol{b} \right)^T
\left(A\boldsymbol{x} - \boldsymbol{b} \right)
 = 2\left(A^T A \boldsymbol{x} - A^T \boldsymbol{b} \right) \\

2. ベクトルのベクトル微分

2.1. 計算の定義

\boldsymbol{y}  \in \mathbb{ R }^m \\ 
\boldsymbol{x}  \in \mathbb{ R }^n

のとき、

\frac{ \partial \boldsymbol{y} }{ \partial \boldsymbol{x} } = 
\left(
\begin{array}{ccccc}
\frac{ \partial {y}_{1} }{ \partial {x}_{1} } & \cdots & 
\frac{ \partial {y}_{j} }{ \partial {x}_{1} } & \cdots & 
\frac{ \partial {y}_{m} }{ \partial {x}_{1} }\\
\vdots & \ddots & & & \vdots \\
\frac{ \partial {y}_{1} }{ \partial {x}_{i} } & & 
\frac{ \partial {y}_{j} }{ \partial {x}_{i} } & & 
\frac{ \partial {y}_{m} }{ \partial {x}_{i} } \\
\vdots & & & \ddots & \vdots \\
\frac{ \partial {y}_{1} }{ \partial {x}_{n} } & \cdots & 
\frac{ \partial {y}_{j} }{ \partial {x}_{n} } & \cdots & 
\frac{ \partial {y}_{m} }{ \partial {x}_{n} }\end{array}
\right)
\in \mathbb{ R }^{n \times m}

※これの行と列を入れ替えたものを定義としているケースも多いようですが、個人的にはこっちの定義の方がしっくり来ます。
以下の4つの公式のうち2つ目と3つ目の式は、この定義に基づいた場合に導き出されるものです。

2.2. 公式

\frac{ \partial  }{ \partial \boldsymbol{x} }
\boldsymbol{x}
 = I \\

\frac{ \partial  }{ \partial  \boldsymbol{x} }
A\boldsymbol{x}
 = A^T \\

\frac{ \partial  }{ \partial  \boldsymbol{x} }
f \left(\boldsymbol{u} =  g\left(\boldsymbol{x}\right)\right)
 =  \frac{ \partial g\left(\boldsymbol{x}\right) }{ \partial \boldsymbol{x} }
\frac{ \partial f\left(\boldsymbol{u}\right) }{ \partial \boldsymbol{u} }
\\

\frac{ \partial }{ \partial \boldsymbol{x} } 
\left(
\begin{array}{ccccc}
f\left({x}_{1}\right), & \cdots &
f\left({x}_{i}\right), & \cdots &
f\left({x}_{n}\right)\
\end{array}
\right)
= 
\left(
\begin{array}{ccccc}
f'\left({x}_{1}\right) &  
0 & \cdots & \cdots &
0\\
0 & \ddots & & & \vdots \\
\vdots & & 
f'\left({x}_{i}\right) & & 
\vdots \\
\vdots & & & \ddots & 0 \\
0 & \cdots & 
\cdots & 0 & 
f'\left({x}_{n}\right)\end{array}
\right)

2.3. 計算の具体例

y_{i} = f\left(z_{i}\right) \left( i=1,  \cdots , m \right) \\
\boldsymbol{z} = A\boldsymbol{x} \\
\left(
\begin{array}{ccccc}
\boldsymbol{y}, \boldsymbol{z}  \in \mathbb{ R }^m \\ 
\boldsymbol{x}  \in \mathbb{ R }^n \\
A  \in \mathbb{ R }^{m \times n} 

\end{array}
\right)

のとき、

\begin{eqnarray}
\frac{ \partial \boldsymbol{y} }{ \partial \boldsymbol{x} } &=& 
\frac{ \partial  \boldsymbol{z}}{ \partial  \boldsymbol{x} }
\frac{ \partial  \boldsymbol{y}}{ \partial  \boldsymbol{z} } \\
&=&
\frac{ \partial  A\boldsymbol{x}}{ \partial  \boldsymbol{x} }
\frac{ \partial  f\left(\boldsymbol{z}\right)}{ \partial  \boldsymbol{z} } \\
&=&
A^T
\left(
\begin{array}{ccccc}
f'\left({z}_{1}\right) &  
0 & \cdots & \cdots &
0\\
0 & \ddots & & & \vdots \\
\vdots & & 
f'\left({z}_{i}\right) & & 
\vdots \\
\vdots & & & \ddots & 0 \\
0 & \cdots & 
\cdots & 0 & 
f'\left({z}_{m}\right)\end{array}
\right)
\in \mathbb{ R }^{n \times m}

\end{eqnarray}

3. スカラーの行列微分

3.1. 計算の定義

f  \in \mathbb{ R } \\ 
A  \in \mathbb{ R }^{n \times m}

のとき、

\frac{ \partial f }{ \partial A } = 
\left(
\begin{array}{ccccc}
\frac{ \partial f }{ \partial {A}_{11} } & \cdots & 
\frac{ \partial f }{ \partial {A}_{1j} } & \cdots & 
\frac{ \partial f }{ \partial {A}_{1m} }\\
\vdots & \ddots & & & \vdots \\
\frac{ \partial f }{ \partial {A}_{i1} } & & 
\frac{ \partial f }{ \partial {A}_{ij} } & & 
\frac{ \partial f }{ \partial {A}_{im} } \\
\vdots & & & \ddots & \vdots \\
\frac{ \partial f }{ \partial {A}_{n1} } & \cdots & 
\frac{ \partial f }{ \partial {A}_{nj} } & \cdots & 
\frac{ \partial f }{ \partial {A}_{nm} }\end{array}
\right)
\in \mathbb{ R }^{n \times m}

3.2. 公式

\frac{ \partial  }{ \partial A }
tr \left( A \right)
= I \\

\frac{ \partial  }{ \partial A }
tr \left( AB \right)
= B^T \\

\frac{ \partial  }{ \partial A }
tr \left( BA \right)
= B^T \\

\frac{ \partial  }{ \partial A }
tr \left( ABA^T \right)
= A\left(B + B^T \right)\\

\frac{ \partial  }{ \partial  A }
tr \left(f \left(U = g\left(A\right)\right)\right)
 =  \frac{ \partial }{ \partial U }
tr \left(f \left(U\right)\right)
\frac{ \partial }{ \partial A } tr\left(g\left(A\right)\right) 
\\


\frac{ \partial  }{ \partial A^T }
f \left( A \right)
= \left(\frac{ \partial  }{ \partial A }
f \left( A \right) \right)^T\\

\frac{ \partial  }{ \partial A } |A|
= |A|\left(A^{-1} \right)^T\\
\frac{ \partial  }{ \partial A } \ln|A|
= \left(A^{-1} \right)^T\\
\frac{ \partial  }{ \partial X } ||AX - B||_F^2
= 2A^T\left(AX - B \right)\\
\frac{ \partial  }{ \partial X } ||XA - B||_F^2
= 2\left(XA - B \right) A^T\\

※ 最後の2式だけ、$X$で微分しているので注意してください。

3.3. 計算の具体例

P = \left(I - KH\right)B\left(I - KH\right)^T + KRK^T  \\
\left(
\begin{array}{ccccc}
P, B  \in \mathbb{ R }^{n \times n}\\ 
R  \in \mathbb{ R }^{m \times m} \\ 
H  \in \mathbb{ R }^{m \times n} \\
K  \in \mathbb{ R }^{n \times m} \\
B^T=B \\
R^T=R
\end{array}
\right)

のとき、

\begin{eqnarray}
\frac{ \partial  }{ \partial K } tr \left( P \right) &=& 
\frac{ \partial  }{ \partial K } tr \left( \left(I - KH\right)B\left(I - KH\right)^T\right) + \frac{ \partial  }{ \partial K }tr\left(KRK^T \right) \\
&=& 
\frac{ \partial  }{ \partial U } tr \left( UBU^T \right)\frac{ \partial  }{ \partial K } tr \left( I-KH \right) + \frac{ \partial  }{ \partial K } tr \left( KRK^T \right) \\
&=& 
U\left(B + B^T \right) \left(-H^T\right) + K\left(R + R^T\right) \\
&=& 
-2UBH^T + 2KR \\ 
&=& 
-2\left(I - KH\right)BH^T + 2KR \\ 
&=& 
-2BH^T+2K\left(HBH^T + R\right)
\in \mathbb{ R }^{n \times m}
\end{eqnarray}

なお、途中で、

U = I - KH

としています。
因みに、この計算は、カルマンフィルタにおいて「解析誤差共分散行列(P)の対角成分を最小にするカルマンゲイン(K)」を求める際に登場します。

参考文献