はしくれエンジニアもどきのメモ

情報系技術・哲学・デザインなどの勉強メモ・備忘録です。

ベクトル・行列の微分メモ

ベクトル・行列の微分メモ

確率・統計・グラフィカルモデリング機械学習あたりに出てきそうなベクトル・行列の微分のメモ

随時追加予定

参考:

ベクトル,行列を使った微分のパターン

ベクトル,行列を使った微分は,微分対象,被微分対象は以下のパターンになる. 出力の形式もまとめておく.

Types of matrix derivative

Types Scalar Vector Matrix
Scalar $\frac {\partial y}{\partial x}$ スカラ $\frac{\partial \vec{y}}{\partial x}$ ベクトル $\frac{\partial \mathbf{Y}}{\partial x}$行列
Vector $\frac {\partial y}{\partial \vec{x} }$ ベクトル $\frac {\partial \vec {y} }{\partial \vec{x} }$ 行列 .
Matrix $\frac {\partial y}{\partial \mathbf {X} }$ 行列 . .

参考:Matrix calculus - Wikipedia

定義

Scalar-by-vector:


\begin{eqnarray}
\frac{\partial y}{\partial \vec{x}_{n \times 1}}
&=&
\begin{pmatrix}
\frac{\partial y}{\partial x_{1}} \\
\frac{\partial y}{\partial x_{2}} \\
\vdots \\
\frac{\partial y}{\partial x_{n}} \\
\end{pmatrix} \\\\
&=&
\begin{pmatrix}
\frac{\partial y}{\partial x_{1}} & \frac{\partial y}{\partial x_{2}} & \cdots & \frac{\partial y}{\partial x_{n}}
\end{pmatrix} \\\\
\end{eqnarray}

Scalar-by-Matrix:


\begin{eqnarray}
\frac{\partial y}{\partial \mathbf{X}_{p \times q}}
&=&
\begin{pmatrix}
\frac{\partial y}{\partial x_{11}} & \frac{\partial y}{\partial x_{12}} & \cdots & \frac{\partial y}{\partial x_{1q}} \\
\frac{\partial y}{\partial x_{21}} & \frac{\partial y}{\partial x_{22}} & \cdots & \frac{\partial y}{\partial x_{2q}} \\
\vdots & \vdots & \ddots & \vdots \\
\frac{\partial y}{\partial x_{p1}} & \frac{\partial y}{\partial x_{p2}} & \cdots & \frac{\partial y}{\partial x_{pq}} \\
\end{pmatrix} \\\\
&=&
\begin{pmatrix}
\frac{\partial y}{\partial x_{11}} & \frac{\partial y}{\partial x_{21}} & \cdots & \frac{\partial y}{\partial x_{p1}} \\
\frac{\partial y}{\partial x_{12}} & \frac{\partial y}{\partial x_{22}} & \cdots & \frac{\partial y}{\partial x_{p2}} \\
\vdots & \vdots & \ddots & \vdots \\
\frac{\partial y}{\partial x_{1q}} & \frac{\partial y}{\partial x_{2q}} & \cdots & \frac{\partial y}{\partial x_{pq}} \\
\end{pmatrix} \\\\
\end{eqnarray}

Vector-by-scalar


\begin{eqnarray}
\frac{\partial \vec{y}_{m \times 1}}{\partial x}
&=&
\begin{pmatrix}
\frac{\partial y_{1}}{\partial x} \\
\frac{\partial y_{2}}{\partial x} \\
\vdots \\
\frac{\partial y_{m}}{\partial x} \\
\end{pmatrix} \\\\
&=&
\begin{pmatrix}
\frac{\partial y_{1}}{\partial x} & \frac{\partial y_{2}}{\partial x} & \cdots & \frac{\partial y_{m}}{\partial x}
\end{pmatrix} \\\\
\end{eqnarray}

Vector by Vector:ベクトルをベクトルで微分する場合は,ベクトルの


\begin{eqnarray}
\frac{\partial \vec{y}_{m \times 1}}{\partial \vec{x}_{n \times 1}}
&=&
\begin{pmatrix}
\frac{\partial y_{1}}{\partial x_{1}} & \frac{\partial y_{2}}{\partial x_{1}} & \cdots & \frac{\partial y_{m}}{\partial x_{1}} \\
\frac{\partial y_{1}}{\partial x_{2}} & \frac{\partial y_{2}}{\partial x_{2}} & \cdots & \frac{\partial y_{m}}{\partial x_{2}} \\
\vdots & \vdots & \ddots & \vdots \\\\
\frac{\partial y_{1}}{\partial x_{n}} & \frac{\partial y_{2}}{\partial x_{n}} & \cdots & \frac{\partial y_{m}}{\partial x_{n}} \\
\end{pmatrix} \\\\
&=&
\begin{pmatrix}
\frac{\partial y_{1}}{\partial x_{1}} & \frac{\partial y_{1}}{\partial x_{2}} & \cdots & \frac{\partial y_{1}}{\partial x_{n}} \\
\frac{\partial y_{2}}{\partial x_{1}} & \frac{\partial y_{2}}{\partial x_{2}} & \cdots & \frac{\partial y_{2}}{\partial x_{n}} \\
\vdots & \vdots & \ddots & \vdots \\
\frac{\partial y_{m}}{\partial x_{1}} & \frac{\partial y_{m}}{\partial x_{2}} & \cdots & \frac{\partial y_{m}}{\partial x_{n}}
\end{pmatrix}
\end{eqnarray}

Scalar by Scalar

行列式をスカラ―変数で微分

qiita.com

$$ \frac{d | \mathbf{A}(x) | }{d x} = | \mathbf{A}(x) | \text{tr}(\mathbf{A}^{-1}(x) \frac{\partial \mathbf{A}(x)}{\partial x} ) $$

行列式を要素で微分

http://www.ee.ic.ac.uk/hp/staff/dmb/matrix/proof002.html#d_detx_p

逆行列と余因子行列$\mathbf{\tilde{A}}$の関係より,


A^{-1} = |A|^{-1}\tilde{A}\\
|A| A^{-1} = \tilde{A} \\
|A| I = A\tilde{A} \\

2次の場合の例は以下になる.


|A| \mathbf{I} =
\begin{pmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22}
\end{pmatrix}
\begin{pmatrix}
a_{22} & -a_{12} \\
-a_{21} & a_{11}
\end{pmatrix}\\

$$ |\mathbf{A}| = \sum_{j} a_{ij}\mathbf{\tilde{A}}_{ji} $$

$a_{ij}$で微分すると

$$ \frac{d | \mathbf{A} |}{d a_{ij}} = \mathbf{\tilde{A}}_{ji} = \mathbf{\tilde{A}}^{T}_{ij} $$

二次形式を行列の要素で微分

$$ \frac{\partial \vec{x}^{T}\mathbf{A}\vec{x}}{\partial a_{ij}} = \frac{\partial \sum_{i} \sum_{j} a_{ij}x_{i}x_{j} }{\partial a_{ij}} = x_{i}x_{j} $$

二次形式(片方のベクトルが異なる)を行列の要素で微分

$$ \frac{\partial \vec{a}^{T}\mathbf{X}\vec{b}}{\partial x_{ij}} = \frac{\partial \sum_{i} \sum_{j} x_{ij} a_{i} b_{j} }{\partial x_{ij}} = a_{i}b_{j} $$

Scalar by vector

多次元の場合も同様に変形できる.

内積をベクトルで微分


\begin{eqnarray}
\frac{\partial \vec{a}^{T}\vec{x}}{\partial \vec{x}}
&=&
\begin{pmatrix}
\frac{\partial \vec{a}^{T}\vec{x} }{\partial x_{1} } \\
\frac{\partial \vec{a}^{T}\vec{x} }{\partial x_{2} } \\
\vdots \\
\frac{\partial \vec{a}^{T}\vec{x} }{\partial x_{n} } \\
\end{pmatrix} \\\\
&=&
\begin{pmatrix}
a_{1} \\
a_{2} \\
\vdots \\
a_{n} \\
\end{pmatrix} \\\\
&=& \vec{a}
\end{eqnarray}

\begin{eqnarray}
\frac{\partial \vec{x}^{T}\vec{a}}{\partial \vec{x}}
&=&
\begin{pmatrix}
\frac{\partial \vec{x}^{T}\vec{a} }{\partial x_{1} } \\
\frac{\partial \vec{x}^{T}\vec{a} }{\partial x_{2} } \\
\vdots \\
\frac{\partial \vec{x}^{T}\vec{a} }{\partial x_{n} } \\
\end{pmatrix} \\\\
&=&
\begin{pmatrix}
a_{1} \\
a_{2} \\
\vdots \\
a_{n} \\
\end{pmatrix} \\\\
&=& \vec{a}
\end{eqnarray}

二次形式をベクトルで微分


\begin{eqnarray}
\frac{\partial \vec{x}^{T} \mathbf{A} \vec{x} }{\partial \vec{x}}
&=&
\begin{pmatrix}
\frac{\partial \sum\sum a_{ij}x_{i}x_{j} }{\partial x_{1} } \\
\frac{\partial  \sum\sum a_{ij}x_{i}x_{j} }{\partial x_{2} } \\
\vdots \\
\frac{\partial  \sum\sum a_{ij}x_{i}x_{j} }{\partial x_{n} } \\
\end{pmatrix} \\\\
&=&
\begin{pmatrix}
\sum_{ j } a_{1j }x_{ j } + \sum_{ i } a_{i1}x_{i} \\
\sum_{ j } a_{2j }x_{ j } + \sum_{ i } a_{i2}x_{i} \\
\vdots \\
\sum_{ j } a_{n j }x_{ j } + \sum_{ i } a_{i n}x_{i} \\
\end{pmatrix} \\\\
&=&
\begin{pmatrix}
\sum_{ i } (a_{1i } + a_{i1}) x_{ i }  \\
\sum_{ i } (a_{2i } + a_{i2}) x_{ i }  \\
\vdots \\
\sum_{ i } (a_{n i } + a_{i n}) x_{ i }  \\
\end{pmatrix} \\\\
&=&
\begin{pmatrix}
a_{11} + a_{11}   & a_{12} + a_{21} & \cdots & a_{1n} + a_{n1} \\
a_{2 1} + a_{1 2} & a_{2 2} + a_{1 2} & \cdots & a_{2 n} + a_{n 2}  \\
\vdots & \vdots & \ddots & \vdots \\
a_{n 1} + a_{1 n} & a_{n 2} + a_{2 n} & \cdots & a_{n n} + a_{n n} \\
\end{pmatrix}
\begin{pmatrix}
 x_{ 1 }  \\
x_{ 2 }  \\
\vdots \\
x_{ n }  \\
\end{pmatrix} \\\\
&=&
(\mathbf{A} + \mathbf{A}^{T})\vec{x}
\end{eqnarray}

$\mathbf{A}$が対称行列の場合,


\begin{eqnarray}
\frac{\partial \vec{x}^{T} \mathbf{A} \vec{x} }{\partial \vec{x}}
&=&
(\mathbf{A} + \mathbf{A}^{T})\vec{x}
&=&
(\mathbf{A} + \mathbf{A})\vec{x}
&=& 2 \mathbf{A} \vec{x}
\end{eqnarray}

これは,多次元正規分布のpdfを平均ベクトルで微分するときに使える.

二次形式(一方のベクトルが異なる)をベクトルで微分


\begin{eqnarray}
\frac{\partial \vec{a}^{T} \mathbf{X} \vec{b} }{\partial \vec{a}}
&=&
\begin{pmatrix}
\frac{\partial \sum \sum x_{ij}a_{i}b_{j} }{\partial a_{1} } \\
\frac{\partial  \sum \sum x_{ij}a_{i}b_{j} }{\partial a_{2} } \\
\vdots \\
\frac{\partial  \sum \sum x_{ij}a_{i}b_{j} }{\partial a_{n} } \\
\end{pmatrix} \\\\
&=&
\begin{pmatrix}
\sum_{j} x_{ 1 j } b_{j} \\
\sum_{j} x_{ 2 j } b_{j} \\
\vdots \\
\sum_{ j } x_{ n j } b_{ j }  \\
\end{pmatrix} \\\\
&=&
\begin{pmatrix}
x_{ 1 1 } & x_{1 2} & \cdots & x_{1 n}  \\
x_{ 2 1 } & x_{2 2} & \cdots & x_{2 n}  \\
\vdots & \vdots & \ddots & \vdots \\
x_{ n 1 } & x_{n 2} & \cdots & x_{n n}  \\
\end{pmatrix} 
\begin{pmatrix}
b_{1} \\
b_{2} \\
\vdots \\
b_{n}
\end{pmatrix} \\\\
&=&
\mathbf{X}\vec{b}
\end{eqnarray}

転置されていないベクトルで微分する場合:


\begin{eqnarray}
\frac{\partial \vec{a}^{T} \mathbf{X} \vec{b} }{\partial \vec{b}}
&=&
\begin{pmatrix}
\frac{\partial \sum \sum x_{ij}a_{i}b_{j} }{\partial b_{1} } \\
\frac{\partial  \sum \sum x_{ij}a_{i}b_{j} }{\partial b_{2} } \\
\vdots \\
\frac{\partial  \sum \sum x_{ij}a_{i}b_{j} }{\partial b_{n} } \\
\end{pmatrix} \\\\
&=&
\begin{pmatrix}
\sum_{i} x_{ i 1 } a_{i} \\
\sum_{i} x_{ i 2 } a_{i} \\
\vdots \\
\sum_{ i } x_{ i n } a_{ i }  \\
\end{pmatrix} \\\\
&=&
\begin{pmatrix}
x_{ 1 1 } & x_{2 1} & \cdots & x_{n 1}  \\
x_{  1 2 } & x_{2 2} & \cdots & x_{n 2}  \\
\vdots & \vdots & \ddots & \vdots \\
x_{ 1 n } & x_{2 n} & \cdots & x_{n n}  \\
\end{pmatrix} 
\begin{pmatrix}
a_{1} \\
 a_{2} \\
\vdots \\
a_{n}
\end{pmatrix} \\\\
&=& \mathbf{X}^{T} \vec{a}
\end{eqnarray}

Scalar by Matrix

行列式を行列で微分

http://www.ee.ic.ac.uk/hp/staff/dmb/matrix/proof002.html#d_detx_p

$$ \frac{d |A| }{d a_{ij}} = \mathbf{\tilde{A}}_{ji} = \mathbf{\tilde{A}}^{T}_{ij} $$

より,行列での微分

$$ \frac{d|A|}{d A} = \mathbf{\tilde{A}}^{T} = |\mathbf{A}| (\mathbf{A}^{-1})^{T} $$

これは,多次元正規分布の係数にある共分散行列の微分の時に使える.

対数行列式を行列で微分

$| \mathbf{A} | = x$として


\begin{eqnarray}
\frac{d \log{| \mathbf{A} |}}{d \mathbf{A}}
&=& \frac{d \log{ x }}{d x} \frac{d x}{d \mathbf{ A }} \\\\
&=& \frac{1}{x} \frac{d |\mathbf{A}|}{d \mathbf{ A }} \\\\
&=& |\mathbf{A}|^{-1} \mathbf{\tilde{A}}^{T} \\\\
&=& |\mathbf{A}|^{-1} |\mathbf{A}| (\mathbf{A}^{-1})^{T} \\\\
&=& (\mathbf{A}^{-1})^{T} \\\\
\end{eqnarray}

これは,対数変換した多次元正規分布の係数にある共分散行列の微分の時に使える.

トレースを行列で微分

行列式の要素で表した式は以下になる.

$$ \text{Tr}{\mathbf{A}} = \sum_{i} a_{ii} $$

各要素での微分

$$ \frac{d \text{Tr} \mathbf{A}}{ d (a_{ i j })_{ i \neq j } } = 0, \frac{d \text{Tr} \mathbf{A}}{ d (a_{ i i })} = 1 $$

よって,対角成分のみ残るので行列で微分単位行列になる.

$$ \frac{d \text{Tr}{\mathbf{A}}}{d \mathbf{A}} = \mathbf{ I } $$

二次形式を行列で微分

$$ \frac{\partial \vec{x}^{T}\mathbf{A} \vec{ x } }{\partial a_{ i j } } = x_{i} x_{j} $$

より,

$$ \frac{\partial \vec{x}^{T}\mathbf{A}\vec{x}}{\partial \mathbf{A}} = \vec{x}\vec{x}^{T} $$

二次形式(一方のベクトルが異なる)を行列で微分

$$ \frac{\partial \vec{a}^{T}\mathbf{X}\vec{b}}{\partial x_{ij}} = a_{i}b_{j} $$

より,

$$ \frac{\partial \vec{a}^{T}\mathbf{X}\vec{b}}{\partial \mathbf{X}} = \vec{a}\vec{b}^{T} $$

逆行列の二次形式を行列で微分

逆行列の要素での微分


\begin{eqnarray}
\frac{d \mathbf{A}^{-1} }{d a_{ij}}
&=& - \mathbf{A}^{-1}\frac{d \mathbf{A}}{d a_{ij} }\mathbf{A}^{-1}
\end{eqnarray}

二次形式に当てはめると


\begin{eqnarray}
\frac{d \vec{x}^{T} \mathbf{A}^{-1} \vec{x} }{d a_{ij}}
&=& \vec{x}^{T}(- \mathbf{A}^{-1}\frac{d \mathbf{A}}{d a_{ij} }\mathbf{A}^{-1} )\vec{x} \\
&=& - \vec{x}^{T} \mathbf{A}^{-1}\frac{d \mathbf{A}}{d a_{ij} }\mathbf{A}^{-1} \vec{x} \\
&=& - ((\mathbf{A}^{-1})^{T} \vec{x})^{T} \frac{d \mathbf{A}}{d a_{ij} }\mathbf{A}^{-1} \vec{x} \\
\end{eqnarray}

$(\mathbf{A}^{-1})^{T} \vec{x} = \vec{a}$, $\mathbf{A}^{-1} \vec{x} = \vec{b}$とおく. 行列で微分すると,


\begin{eqnarray}
\frac{d \vec{x}^{T} \mathbf{A}^{-1} \vec{x} }{d \mathbf{A}}
&=& - \vec{a}^{T} \frac{d \mathbf{A}}{d \mathbf{A} } \vec{b} \\
&=& - \frac{d \vec{a}^{T} \mathbf{A} \vec{b}}{d \mathbf{A} }  \\
&=& - \vec{a}\vec{b}^{T} \\
&=& - (\mathbf{A}^{-1})^{T} \vec{x} \vec{x}^{T}(\mathbf{A}^{-1})^{T} \\
\end{eqnarray}

special case: $\mathbf{A}$を対称行列とすると, 対称行列の逆行列も対称行列になるので,


\begin{eqnarray}
\frac{d \vec{x}^{T} \mathbf{A}^{-1} \vec{x} }{d \mathbf{A}}
&=& - \mathbf{A}^{-1} \vec{x} \vec{x}^{T} \mathbf{A}^{-1} \\
\end{eqnarray}

これは,多次元正規分布の共分散行列での微分の時に使える.

Matrix by Scalar

行列を要素で微分

https://en.wikipedia.org/wiki/Single-entry_matrix

$$ \frac{d X}{d x_{ij}} = \mathbf{J}^{ij} $$

ex. $x_{12}$で微分


\frac{d \mathbf{X}}{d x_{12}}
=
\begin{pmatrix}
\frac{d x_{11}}{d x_{12}} & \frac{d x_{12}}{d x_{12}}\\
\frac{d x_{21}}{d x_{12}} & \frac{d x_{22}}{d x_{12}} \\
\end{pmatrix}
=
\begin{pmatrix}
0 & 1 \\
0 & 0 \\
\end{pmatrix}
= \mathbf{J}^{12}

左からかけるとj行目をi行目に移動させた行列


\mathbf{J}_{12} \mathbf{A}
=
\begin{pmatrix}
0 & 1 \\
0 & 0 \\
\end{pmatrix}
\begin{pmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22} \\
\end{pmatrix}
=
\begin{pmatrix}
a_{21} & a_{22} \\
0 & 0 \\
\end{pmatrix}

右からかけるとi列目をj列目に移動させた行列


\mathbf{A} \mathbf{J}_{12}
=
\begin{pmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22} \\
\end{pmatrix}
\begin{pmatrix}
0 & 1 \\
0 & 0 \\
\end{pmatrix}
=
\begin{pmatrix}
0 & a_{11} \\
0 & a_{21} \\
\end{pmatrix}

逆行列スカラー変数で微分

単位行列の式は

$$ \mathbf{A}^{-1}\mathbf{A} = \mathbf{I} $$

両辺を微分する. 行列の積の微分になる.


\begin{eqnarray}
\frac{d}{d x }\mathbf{A}^{-1}\mathbf{A} &=& \frac{d}{d x } \mathbf{I}\\
\frac{d \mathbf{A}^{-1}}{d x }\mathbf{A} + \mathbf{A}^{-1}\frac{d \mathbf{A}}{d x } &=& \mathbf{O}\\
\frac{d \mathbf{A}^{-1}}{d x }\mathbf{A}\mathbf{A}^{-1} + \mathbf{A}^{-1}\frac{d \mathbf{A}}{d x }\mathbf{A}^{-1} &=& \mathbf{O}\\
\frac{d \mathbf{A}^{-1}}{d x } &=& - \mathbf{A}^{-1}\frac{d \mathbf{A}}{d x }\mathbf{A}^{-1} \\
\end{eqnarray}