ベクトル・行列の微分メモ
ベクトル・行列の微分メモ
確率・統計・グラフィカルモデリング・機械学習あたりに出てきそうなベクトル・行列の微分のメモ
随時追加予定
参考:
- ベクトル・行列の微分メモ
ベクトル,行列を使った微分のパターン
ベクトル,行列を使った微分は,微分対象,被微分対象は以下のパターンになる. 出力の形式もまとめておく.
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:
Scalar-by-Matrix:
Vector-by-scalar
Vector by Vector:ベクトルをベクトルで微分する場合は,ベクトルの
Scalar by Scalar
行列式をスカラ―変数で微分
$$ \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}}$の関係より,
2次の場合の例は以下になる.
$$ |\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
多次元の場合も同様に変形できる.
内積をベクトルで微分
二次形式をベクトルで微分
$\mathbf{A}$が対称行列の場合,
これは,多次元正規分布のpdfを平均ベクトルで微分するときに使える.
二次形式(一方のベクトルが異なる)をベクトルで微分
転置されていないベクトルで微分する場合:
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$として
これは,対数変換した多次元正規分布の係数にある共分散行列の微分の時に使える.
トレースを行列で微分
行列式の要素で表した式は以下になる.
$$ \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} $$
逆行列の二次形式を行列で微分
二次形式に当てはめると
$(\mathbf{A}^{-1})^{T} \vec{x} = \vec{a}$, $\mathbf{A}^{-1} \vec{x} = \vec{b}$とおく. 行列で微分すると,
special case: $\mathbf{A}$を対称行列とすると, 対称行列の逆行列も対称行列になるので,
Matrix by Scalar
行列を要素で微分
https://en.wikipedia.org/wiki/Single-entry_matrix
$$ \frac{d X}{d x_{ij}} = \mathbf{J}^{ij} $$
ex. $x_{12}$で微分
左からかけるとj行目をi行目に移動させた行列
右からかけるとi列目をj列目に移動させた行列
逆行列をスカラー変数で微分
単位行列の式は
$$ \mathbf{A}^{-1}\mathbf{A} = \mathbf{I} $$