行列の便利な公式

概要

本記事は 「Matrix Cookbook」 の内容を参考に、行列計算の有用な公式を整理する。 あくまでも私個人が必要した公式のみを抜粋しているため、全ての公式を網羅しているわけではない。

元の論文のリンクは以下の通り。

個人的に重要だと思われる公式をまとめる。 行列計算に関する公式がトピック毎にまとめられており、とても便利である。

行列計算の基本概念

行列計算は機械学習の核である。

数値計算や深層学習では、行列演算を多用する。

入力ベクトルを $\mathbf{x}$ とし、線形変換 $\mathbf{A}$ を考える。

$\mathbf{y} = \mathbf{A}\mathbf{x}$ のような単純な変換が多用される。

ここで、$\mathbf{A}$ は $ \mathbb{R}^{m \times n} \to \mathbb{R}^{m \times n} $ の写像とみなせる。

要素ごとの加算やスカラー倍、転置、逆行列、固有値問題などが基本操作である。 行列微分、行列分解、テンソル計算なども重要である。

大規模な行列計算では、数値的安定性や計算コストが問題となる。実装時にはNumPyやSciPyなどのPythonライブラリが有効である。

以下、Matrix Cookbookを参照した有用な公式を列挙する。


転置行列と随伴行列

$$ \begin{aligned} (\mathbf{A B})^{-1} & =\mathbf{B}^{-1} \mathbf{A}^{-1} \\ (\mathbf{A B C} \ldots)^{-1} & =\ldots \mathbf{C}^{-1} \mathbf{B}^{-1} \mathbf{A}^{-1} \\ \left(\mathbf{A}^T\right)^{-1} & =\left(\mathbf{A}^{-1}\right)^T \\ (\mathbf{A}+\mathbf{B})^T & =\mathbf{A}^T+\mathbf{B}^T \\ (\mathbf{A B})^T & =\mathbf{B}^T \mathbf{A}^T \\ (\mathbf{A B C} \ldots)^T & =\ldots \mathbf{C}^T \mathbf{B}^T \mathbf{A}^T \\ \left(\mathbf{A}^H\right)^{-1} & =\left(\mathbf{A}^{-1}\right)^H \\ (\mathbf{A}+\mathbf{B})^H & =\mathbf{A}^H+\mathbf{B}^H \\ (\mathbf{A B})^H & =\mathbf{B}^H \mathbf{A}^H \\ (\mathbf{A B C} \ldots)^H & =\ldots \mathbf{C}^H \mathbf{B}^H \mathbf{A}^H \end{aligned} $$


トレースと基本的な性質

$$ \begin{aligned} \operatorname{Tr}(\mathbf{A}) & =\sum_i A_{i i} \\ \operatorname{Tr}(\mathbf{A}) & =\sum_i \lambda_i, \quad \lambda_i=\operatorname{eig}(\mathbf{A}) \\ \operatorname{Tr}(\mathbf{A}) & =\operatorname{Tr}\left(\mathbf{A}^T\right) \\ \operatorname{Tr}(\mathbf{A B}) & =\operatorname{Tr}(\mathbf{B} \mathbf{A}) \\ \operatorname{Tr}(\mathbf{A}+\mathbf{B}) & =\operatorname{Tr}(\mathbf{A})+\operatorname{Tr}(\mathbf{B}) \\ \operatorname{Tr}(\mathbf{A B C}) & =\operatorname{Tr}(\mathbf{B C A})=\operatorname{Tr}(\mathbf{C A B}) \\ \end{aligned} $$


行列式

基本的な行列式の計算式

$$ \begin{aligned} \operatorname{det}(\mathbf{A}) & =\prod_i \lambda_i \quad \lambda_i=\operatorname{eig}(\mathbf{A}) \\ \operatorname{det}(c \mathbf{A}) & =c^n \operatorname{det}(\mathbf{A}), \quad \text { if } \mathbf{A} \in \mathbb{R}^{n \times n} \\ \operatorname{det}\left(\mathbf{A}^T\right) & =\operatorname{det}(\mathbf{A}) \\ \operatorname{det}(\mathbf{A B}) & =\operatorname{det}(\mathbf{A}) \operatorname{det}(\mathbf{B}) \\ \operatorname{det}\left(\mathbf{A}^{-1}\right) & =1 / \operatorname{det}(\mathbf{A}) \\ \operatorname{det}\left(\mathbf{A}^n\right) & =\operatorname{det}(\mathbf{A})^n \\ \operatorname{det}\left(\mathbf{I}+\mathbf{u v}^T\right) & =1+\mathbf{u}^T \mathbf{v} \end{aligned} $$

$n=2$の場合:

$$ \operatorname{det}(\mathbf{I}+\mathbf{A})=1+\operatorname{det}(\mathbf{A})+\operatorname{Tr}(\mathbf{A}) $$

$n=3$の場合:

$$ \operatorname{det}(\mathbf{I}+\mathbf{A})=1+\operatorname{det}(\mathbf{A})+\operatorname{Tr}(\mathbf{A})+\frac{1}{2} \operatorname{Tr}(\mathbf{A})^2-\frac{1}{2} \operatorname{Tr}\left(\mathbf{A}^2\right) $$

$n=4$の場合:

$$ \begin{aligned} \operatorname{det}(\mathbf{I}+\mathbf{A})= & 1+\operatorname{det}(\mathbf{A})+\operatorname{Tr}(\mathbf{A})+\frac{1}{2} \\ & +\operatorname{Tr}(\mathbf{A})^2-\frac{1}{2} \operatorname{Tr}\left(\mathbf{A}^2\right) \\ & +\frac{1}{6} \operatorname{Tr}(\mathbf{A})^3-\frac{1}{2} \operatorname{Tr}(\mathbf{A}) \operatorname{Tr}\left(\mathbf{A}^2\right)+\frac{1}{3} \operatorname{Tr}\left(\mathbf{A}^3\right) \end{aligned} $$

$\varepsilon$が小さい場合の近似式:

$$ \operatorname{det}(\mathbf{I}+\varepsilon \mathbf{A}) \cong 1+\operatorname{det}(\mathbf{A})+\varepsilon \operatorname{Tr}(\mathbf{A})+\frac{1}{2} \varepsilon^2 \operatorname{Tr}(\mathbf{A})^2-\frac{1}{2} \varepsilon^2 \operatorname{Tr}\left(\mathbf{A}^2\right) $$


微分

$$ \frac{\partial \mathbf{Y}^{-1}}{\partial x}=-\mathbf{Y}^{-1} \frac{\partial \mathbf{Y}}{\partial x} \mathbf{Y}^{-1} $$

証明メモ

  1. $\mathbf{Y} \mathbf{Y}^{-1} = \mathbf{I}$(単位行列)であるという性質を利用する。

    両辺を $x$ に関して偏微分すると、 $$ \frac{\partial}{\partial x} (\mathbf{Y} \mathbf{Y}^{-1}) = \frac{\partial \mathbf{I}}{\partial x} = 0 $$

  2. 左辺を展開します。 $$ \frac{\partial \mathbf{Y}}{\partial x} \mathbf{Y}^{-1} + \mathbf{Y} \frac{\partial \mathbf{Y}^{-1}}{\partial x} = 0 $$

  3. この式を $\mathbf{Y}$ の逆行列を使って整理。両辺に左から $\mathbf{Y}^{-1}$ をかける。 $$ \mathbf{Y}^{-1} \frac{\partial \mathbf{Y}}{\partial x} \mathbf{Y}^{-1} + \frac{\partial \mathbf{Y}^{-1}}{\partial x} = 0 $$

  4. 最後に、$\frac{\partial \mathbf{Y}^{-1}}{\partial x}$ について解く。 $$ \frac{\partial \mathbf{Y}^{-1}}{\partial x} = -\mathbf{Y}^{-1} \frac{\partial \mathbf{Y}}{\partial x} \mathbf{Y}^{-1} $$


逆行列

Woodbury公式

$$ \begin{aligned} \left(\mathbf{A}+\mathbf{C B C}^T\right)^{-1} & =\mathbf{A}^{-1}-\mathbf{A}^{-1} \mathbf{C}\left(\mathbf{B}^{-1}+\mathbf{C}^T \mathbf{A}^{-1} \mathbf{C}\right)^{-1} \mathbf{C}^T \mathbf{A}^{-1} \\ (\mathbf{A}+\mathbf{U B V})^{-1} & =\mathbf{A}^{-1}-\mathbf{A}^{-1} \mathbf{U}\left(\mathbf{B}^{-1}+\mathbf{V A}^{-1} \mathbf{U}\right)^{-1} \mathbf{V} \mathbf{A}^{-1} \end{aligned} $$

$\mathbf{P}$と$\mathbf{R}$が正定値行列の場合

以下の公式はガウス分布の条件付き分布やカルマンフィルタなどで利用される。

$$ \left(\mathbf{P}^{-1}+\mathbf{B}^T \mathbf{R}^{-1} \mathbf{B}\right)^{-1} \mathbf{B}^T \mathbf{R}^{-1}=\mathbf{P B}^T\left(\mathbf{B P B^T}+\mathbf{R}\right)^{-1} $$


近似

とある論文執筆の際によく利用した。

$$ (\mathbf{I}-\mathbf{A})^{-1}=\sum_{n=0}^{\infty} \mathbf{A}^n $$

$$ (\mathbf{I}+\mathbf{A})^{-1}=\sum_{n=0}^{\infty}(-1)^n \mathbf{A}^n $$

すべての固有値の絶対値が1未満の場合

$$ \begin{aligned} (\mathbf{I}-\mathbf{A})^{-1} & \cong \mathbf{I}+\mathbf{A}+\mathbf{A}^2 \\ (\mathbf{I}+\mathbf{A})^{-1} & \cong \mathbf{I}-\mathbf{A}+\mathbf{A}^2 \end{aligned} $$

$\mathbf{A}$が非常に大きい場合

$$ \mathbf{A}-\mathbf{A}(\mathbf{I}+\mathbf{A})^{-1} \mathbf{A} \cong \mathbf{I}-\mathbf{A}^{-1} $$


指数

こちらもいつぞやお世話になった公式。

$$ \begin{aligned} e^{\mathbf{A}} & \equiv \sum_{n=0}^{\infty} \frac{1}{n!} \mathbf{A}^n=\mathbf{I}+\mathbf{A}+\frac{1}{2} \mathbf{A}^2+\ldots \\ e^{-\mathbf{A}} & \equiv \sum_{n=0}^{\infty} \frac{1}{n!}(-1)^n \mathbf{A}^n=\mathbf{I}-\mathbf{A}+\frac{1}{2} \mathbf{A}^2-\ldots \\ e^{t \mathbf{A}} & \equiv \sum_{n=0}^{\infty} \frac{1}{n!}(t \mathbf{A})^n=\mathbf{I}+t \mathbf{A}+\frac{1}{2} t^2 \mathbf{A}^2+\ldots \\ \ln (\mathbf{I}+\mathbf{A}) & \equiv \sum_{n=1}^{\infty} \frac{(-1)^{n-1}}{n} \mathbf{A}^n=\mathbf{A}-\frac{1}{2} \mathbf{A}^2+\frac{1}{3} \mathbf{A}^3-\ldots \end{aligned} $$


結論

他にも数多くの公式が記載されている。 随時、必要な公式を追加していく予定である。