556
464

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2017-08-05

機械学習の分野で頻出の

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

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

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. 公式


\begin{eqnarray*}
\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)
 &=& 2A^T \left( A \boldsymbol{x} -\boldsymbol{b} \right) \\

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

\end{eqnarray*}

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}

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

2.2. 公式


\begin{eqnarray*}

\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)\\

\frac{\partial}{\partial {\boldsymbol x}}\left( {\boldsymbol x}\odot {\boldsymbol y}\right)  &=& diag(y_1, ..., y_n)

\end{eqnarray*}


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. 公式


\begin{eqnarray*}

\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( BAB^T \right)
&=& B^TB \\

\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\\

\end{eqnarray*}

※ 最後の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)」を求める際に登場します。

参考文献

556
464
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
556
464

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?