330
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

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

機械学習の分野で頻出の

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

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

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

参考文献

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
330
Help us understand the problem. What are the problem?