🕌

Moore-Penrose の逆行列(擬逆行列)

2023/08/31に公開

導入

正方行列 A が与えられたとき、これと掛け合わせることで単位行列 I になるような行列 A^{-1} を逆行列と呼んだ(AA^{-1} = A^{-1}A = I)。

しかし、逆行列が存在するのは A が full-rank の正方行列である場合に限られ、A が full-rank でない場合やそもそも正方行列でない場合は上記の定義でいう逆行列を作ることができない。

しかし、逆行列を一般化したものとして、m \times n行列 A \in \mathbb{R}^{m \times n} が与えられたとき以下の性質を持つ行列A^g \in \mathbb{R}^{n \times m}を、一般化逆行列 (generalized inverse) と呼ぶ:

AA^g A = A.

このお気持ちは、「 A にある行列 A^g をかけたもの AA^g, \, A^g A は単位行列 I に必ずしもならないものの、 (AA^g) A = A(A^g A) = A が成り立つ」である。

一般化逆行列にはいくつか種類があるものの、本投稿ではその中でも科学計算などでよく使われる Moore-Penrose の逆行列[1] について紹介する。

なお、以降では n \times n の単位行列を I_n と表記する。

定義

行列 A が与えられたとき、以下の4つの条件を満たすものを、Moore-Penrose の逆行列もしくは擬逆行列 (pseudo inverse) と呼び、A^+ と表す:

  1. AA^+ A = A
  2. A^+ A A^+ = A^+
  3. (A A^+)^\top = A A^+
  4. (A^+ A)^\top = A^+ A

特異値分解を用いた構成方法

Am \times n 行列とし、さらに階数({\rm rank} \,A)が r だったとする。
このとき、下記の投稿で紹介した特異値分解

https://zenn.dev/tatamiya/articles/3c4ede00f870b5c8d1fa

により

A = U \Sigma V^\top
\quad U \in \mathbb{R}^{m \times r}, \quad V \in \mathbb{R}^{n \times r}\\ \Sigma = {\rm diag}\left( \sqrt{\lambda_1}, \sqrt{\lambda_2}, ..., \sqrt{\lambda_r}\right) \in \mathbb{R}^{r \times r}

と表すことができる。
これを用いて Moore-Penrose の逆行列は、

A^+ = V \Sigma^{-1} U^\top

のように求められる。
なお、

\Sigma^{-1} = {\rm diag}\left( 1/\sqrt{\lambda_1}, 1/\sqrt{\lambda_2}, ..., 1/\sqrt{\lambda_r}\right) \in \mathbb{R}^{r \times r}

行列 A が full-rank のときの性質

冒頭で述べた通り AA^+, \, A^+ A ともに一般には単位行列と一致しない。
しかし、行列 A \in \mathbb{R}^{m \times n} が full-rank、つまり {\rm rank} A = \min (m, n) の場合は、A^+A = I_n \, (n \le m) または AA^+ = I_m \, (m \le n) が成り立ち、さらに A^+ を特異値分解を使わない簡単な形で表すことができる。

以下、mn の大小関係で場合分けして見てみる。

1. m > n のとき

この場合、{\rm rank} A = n であると同時に、行列 A^\top A \in \mathbb{R}^{n \times n} の階数も n になる[2]ため逆行列 (A^\top A)^{-1} が存在する。

このとき、

A^+ A = I_n

であり、また

A^+ = (A^\top A)^{-1} A^\top

のように表すことができる(証明は補足参照)。

2. m < n のとき

この場合は {\rm rank} A = m であり、行列 A A^\top \in \mathbb{R}^{m \times m} が非特異で逆行列 (A A^\top)^{-1} を持つ(一方、行列 A^\top A \in \mathbb{R}^{n \times n} は階数 m < n で特異なため逆行列を持たない)。

このときは

AA^+ = I_m

であり、また

A^+ = A^\top (AA^\top)^{-1}

と表すことができる。

3. m = n のとき

この場合は 行列 A 自身が逆行列 A^{-1} を持ち、さらにこれが Moore-Penrose の逆行列 A^+ と一致する:

A^+ = A^{-1}.

当然のことながら、 A^+A = AA^+ = I_n であり AA^+A=A も成立する。

具体例

full-rank 行列の Moore-Penrose 逆行列

上記の「1.」、m \times n 行列 A(ただし m>n)が full-rank となるケースの例として、以下の行列 A \in \mathbb{R}^{3 \times 2} を考える:

A = \begin{pmatrix} 0 & 1\\ 1 & 2\\ 2 & 0 \end{pmatrix}.

このとき {\rm rank} A = 2A は full-rank である。

ここでは

\begin{aligned} A^+ &= (A^\top A)^{-1} A^\top\\ &= \frac{1}{21} \begin{pmatrix} -2 & 1 & 10\\ 5 & 8 & -4 \end{pmatrix} \end{aligned}

であり、これを用いると確かに

A^+A = \frac{1}{21} \begin{pmatrix} -2 & 1 & 10\\ 5 & 8 & -4 \end{pmatrix} \begin{pmatrix} 0 & 1\\ 1 & 2\\ 2 & 0 \end{pmatrix} = \begin{pmatrix} 1 & 0\\ 0 & 1 \end{pmatrix}

から A^+A = I_2 が成り立ち、当然 A (A^+ A) = A となることも確認できる。

なお、この場合 AA^+ は単位行列I_3 にならない。

実際、

AA^+ = \begin{pmatrix} 0 & 1\\ 1 & 2\\ 2 & 0 \end{pmatrix} \frac{1}{21} \begin{pmatrix} -2 & 1 & 10\\ 5 & 8 & -4 \end{pmatrix} = \frac{1}{21} \begin{pmatrix} 5 & 8 & -4\\ 8 & 17 & 2\\ -4 & 2 & 20 \end{pmatrix}

である。

ただし、

(AA^+) A = \frac{1}{21} \begin{pmatrix} 5 & 8 & -4\\ 8 & 17 & 2\\ -4 & 2 & 20 \end{pmatrix} \begin{pmatrix} 0 & 1\\ 1 & 2\\ 2 & 0 \end{pmatrix} = \begin{pmatrix} 0 & 1\\ 1 & 2\\ 2 & 0 \end{pmatrix} =A

なので、たしかに (AA^+) A = A は成立している。

full-rank ではない行列の Moore-Penrose 逆行列

以前の投稿でも具体例として用いた以下の {\rm rank}\,A = 23 \times 4 行列を考える:

A= \begin{pmatrix} 0 & 1 & 0 & 1\\ 0 & 2 & 0 & 2\\ 1 & 0 & 1 & 0 \end{pmatrix}

https://zenn.dev/tatamiya/articles/3c4ede00f870b5c8d1fa#具体例

このときの A^+ を実際に求めてみるとともに、A^+ A \ne I_4, \, AA^+ \ne I_3 であるものの AA^+A が成り立つことを確認する。

まず、特異値分解を用いて A の Moore-Penrose の逆行列 A^+ を作ってみる。
A の特異値分解は上記の投稿により

A = \begin{pmatrix} 1/\sqrt{5} & 0\\ 2/\sqrt{5} & 0\\ 0 & 1 \end{pmatrix} \begin{pmatrix} \sqrt{10} & 0\\ 0 & \sqrt{2}\\ \end{pmatrix} \begin{pmatrix} 0 & 1/\sqrt{2} & 0 & 1/\sqrt{2}\\ 1/\sqrt{2} & 0 & 1/\sqrt{2} & 0 \end{pmatrix}

であったので、 Moore-Penrose 逆行列 A^+ は、

\begin{aligned} A^+ &= \begin{pmatrix} 0 & 1/\sqrt{2}\\ 1/\sqrt{2} & 0\\ 0 & 1/\sqrt{2}\\ 1/\sqrt{2} & 0 \end{pmatrix} \begin{pmatrix} 1/\sqrt{10} & 0\\ 0 & 1/\sqrt{2}\\ \end{pmatrix} \begin{pmatrix} 1/\sqrt{5} & 2/\sqrt{5} & 0\\ 0 & 0 & 1 \end{pmatrix}\\ &= \frac{1}{2} \begin{pmatrix} 0 & 0 & 1\\ 1/5 & 2/5 & 0\\ 0 & 0 & 1\\ 1/5 & 2/5 & 0 \end{pmatrix} \end{aligned}

のように求まる。
これを用いると、

\begin{aligned} A^+ A &= \frac{1}{2} \begin{pmatrix} 0 & 0 & 1\\ 1/5 & 2/5 & 0\\ 0 & 0 & 1\\ 1/5 & 2/5 & 0 \end{pmatrix} \begin{pmatrix} 0 & 1 & 0 & 1\\ 0 & 2 & 0 & 2\\ 1 & 0 & 1 & 0 \end{pmatrix} = \frac{1}{2} \begin{pmatrix} 1 & 0 & 1 & 0\\ 0 & 1 & 0 & 1\\ 1 & 0 & 1 & 0\\ 0 & 1 & 0 & 1 \end{pmatrix} \\ A A^+ &= \begin{pmatrix} 0 & 1 & 0 & 1\\ 0 & 2 & 0 & 2\\ 1 & 0 & 1 & 0 \end{pmatrix} \frac{1}{2} \begin{pmatrix} 0 & 0 & 1\\ 1/5 & 2/5 & 0\\ 0 & 0 & 1\\ 1/5 & 2/5 & 0 \end{pmatrix} = \begin{pmatrix} 1/5 & 2/5 & 0\\ 2/5 & 4/5 & 0\\ 0 & 0 & 1 \end{pmatrix} \end{aligned}

であることがわかり、確かに A^+ A \ne I_4, \, AA^+ \ne I_3である。
しかし、

\begin{aligned} A (A^+ A) &= \begin{pmatrix} 0 & 1 & 0 & 1\\ 0 & 2 & 0 & 2\\ 1 & 0 & 1 & 0 \end{pmatrix} \frac{1}{2} \begin{pmatrix} 1 & 0 & 1 & 0\\ 0 & 1 & 0 & 1\\ 1 & 0 & 1 & 0\\ 0 & 1 & 0 & 1 \end{pmatrix} = \begin{pmatrix} 0 & 1 & 0 & 1\\ 0 & 2 & 0 & 2\\ 1 & 0 & 1 & 0 \end{pmatrix}\\ &= A\\ (A A^+) A &= \begin{pmatrix} 1/5 & 2/5 & 0\\ 2/5 & 4/5 & 0\\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} 0 & 1 & 0 & 1\\ 0 & 2 & 0 & 2\\ 1 & 0 & 1 & 0 \end{pmatrix} = \begin{pmatrix} 0 & 1 & 0 & 1\\ 0 & 2 & 0 & 2\\ 1 & 0 & 1 & 0 \end{pmatrix}\\ &=A \end{aligned}

より、確かに A(A^+A) = (AA^+)A= AA^+A = A が成り立っていることがわかる。

補足: full-rank な行列の Moore-Penrose 逆行列に関する性質の証明

m \times n 行列 A (ただし、m > n)が full-rank、つまり {\rm rank} A = n であるとき、

A^+ A = I_n
A^+ = (A^\top A)^{-1} A^\top

が成り立つことを証明する。

A^+ A = I_n の証明

A^+ の定義より、AA^+A = A である。

この両辺に左から A^\top をかけると、

A^\top AA^+A = A^\top A

が成り立つ。

ここで、本文中で述べたように行列 A^\top A は full-rank で逆行列 (A^\top A)^{-1} が存在するので、上記の式に左からこの逆行列をかけることにより、

A^+ A = I_n

が示された。

A^+ = (A^\top A)^{-1} A^\top の証明

AA^+A = A の両辺について転置をとる:

(AA^+A)^\top = A^\top.

この左辺は (AA^+A)^\top = \{ (AA^+) A \}^\top = A^\top (AA^+)^\top のように変形できるが、
ここで Moore-Penrose の定義より (AA^+)^\top = AA^+ であるので、(AA^+A)^\top = A^\top AA^+ となることがわかる。

したがって、

A^\top AA^+ = A^\top

より両辺に左から逆行列 (A^\top A)^{-1} をかけることで、

A^+ = (A^\top A)^{-1} A^\top

が得られる。

なお、同様の手順で m < n の場合の関係式 AA^+=I_m, \, A^+ = A^\top (AA^\top)^{-1} を示すこともできる。

参考文献

  • Moore–Penrose inverse (in Wikipedia)

https://en.wikipedia.org/wiki/Moore–Penrose_inverse

  • Generalized inverse (in Wikipedia)

https://en.wikipedia.org/wiki/Generalized_inverse

  • D. A. Harville, Matrix Algebra From a Statistician's Perspective (2006, Springer)
    • 日本語訳: D. A. ハーヴィル(伊理正夫監訳)、統計のための行列代数 上・下(丸善、2012)

https://amzn.asia/d/eFLLrNg
https://amzn.asia/d/h5awcqR
https://amzn.asia/d/fRgKunk

脚注
  1. 例えば Python の科学計算ライブラリ NumPy では、numpy.linalg.pinv として実装されている https://numpy.org/doc/stable/reference/generated/numpy.linalg.pinv.html ↩︎

  2. https://zenn.dev/link/comments/116bc995370fff を参照 ↩︎

Discussion