Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
274
Help us understand the problem. What is going on with this article?
@AnchorBlues

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

More than 1 year has passed since last update.

機械学習の分野で頻出の

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

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

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

参考文献

274
Help us understand the problem. What is going on with this article?
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
AnchorBlues
大学時代は地球惑星科学を専攻していました。世の中のデータサイエンスを促進できるような記事を書きたい。
ntt-data-msi
数理科学とコンピュータサイエンスの融合!!

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
274
Help us understand the problem. What is going on with this article?