一般逆行列・ムーア・ペンローズ逆行列

連立方程式を解くために、行列の逆行列が用いられる。

簡単な例として

 \begin{array}{c} x+y=4 \\ x-y=0 \end{array}

で表されるxとyの関係を行列を使って表せば次のようになる。

\left(\begin{array}{cc}1 & 1 \\ 1 & -1 \end{array} \right) \left( \begin{array}{c}x \\ y \end{array} \right) = \left( \begin{array}{c}4 \\ 0 \end{array} \right)

ここで
A = \left(\begin{array}{cc}1 & 1 \\ 1 & -1 \end{array} \right) , {\bf x} = \left( \begin{array}{c}x \\ y \end{array} \right), {\bf b} = \left( \begin{array}{c}4 \\ 0 \end{array} \right)
とすると、最初の式は

 A{\bf x}={\bf b}

という線形代数でおなじみの式で表されるから、
両辺にA逆行列A^{-1}をかけて

 {\bf x}=A^{-1}{\bf b}

として解が求まる。
つまり、行列Aの逆行列を求めれば解を求めることができる。
今回の例だと、

A^{-1} = \left(\begin{array}{cc}\frac{1}{2} & \frac{1}{2} \\ \frac{1}{2} & -\frac{1}{2} \end{array} \right)

なので、

{\bf x} = \left( \begin{array}{c}x \\ y \end{array} \right) = \left(\begin{array}{cc}\frac{1}{2} & \frac{1}{2} \\ \frac{1}{2} & -\frac{1}{2} \end{array} \right) \left( \begin{array}{c}4 \\ 0 \end{array} \right) = \left( \begin{array}{c}2 \\ 2 \end{array} \right)

となって、x =2 , y = 2 が求まる。

これはグラフに表すと、次のようになって、つまりx+y=4, x-y=0の二つの直線の交点を求めたことになる。

さて、このように、きれいに連立方程式が解ける場合はいいけど、
現実問題として解が求まらないことは多くある。

=====

■ 例1) 式が多すぎて解が存在しない。
 \begin{array}{l}x+y=4 \\ x-y=0 \\ y=1 \end{array}

このような3つの式を満たす解は存在しない。
グラフに表すと次のような感じ。
3つの直線は1つの点で交わらないため、解が無いことがわかる。


■ 例2) 式が少なすぎて解が1つに定まらない。
x+y=4

このような1つだけ式が与えられた場合、この条件を満たすx,yの組は無数に存在する。
グラフに表すと次のような感じ。直線上のx,yの組は無数に存在する。

■ 例3) 式が矛盾していて解が存在しない。
\begin{array}{l}x+y=4 \\ x+y=2 \end{array}

グラフに表すと次のような感じ。
2つの直線は平行なので、交わる点は存在しない。つまり解は存在しない。


=====
上記の連立方程式 A{\bf x}={\bf b}の形で表すと、それぞれ次のようになる。

例1) \left(\begin{array}{cc}1 & 1 \\ 1 & -1 \\ 0 & 1 \end{array} \right) \left( \begin{array}{c}x \\ y \end{array} \right) = \left( \begin{array}{c}4 \\ 0 \\ 1\end{array} \right)

例2) \left(\begin{array}{cc}1 & 1 \end{array} \right) \left( \begin{array}{c}x \\ y \end{array} \right) = \left( \begin{array}{c}4 \end{array} \right)

例3) \left(\begin{array}{cc}1 & 1 \\ 1 & 1 \end{array} \right) \left( \begin{array}{c}x \\ y \end{array} \right) = \left( \begin{array}{c}4 \\ 2 \end{array} \right)

行列Aに相当する、\left(\begin{array}{cc}1 & 1 \\ 1 & -1 \\ 0 & 1 \end{array} \right), \left(\begin{array}{cc}1 & 1 \end{array} \right),\left(\begin{array}{cc}1 & 1 \\ 1 & 1 \end{array} \right)
は、逆行列を持たない。このような行列を「正則でない」と表現する。


さて、それじゃあ、しかたない。と諦めてしまえばいいのだが、
現実問題として、そう簡単にあきらめるわけにはいかないので、
このような問題のある場合でも、どうにしかして、もっともらしい解を求めたい。ということがある。

このような目的で使用されるのが一般逆行列
一般逆行列とは、本来、逆行列は無いのにかかわらず、もっともらしい解を得るために頑張って作り出した逆行列のこと。

では、「もっともらしい解」の「もっともらしい」ってどういうこと?
この解釈のしかたによって、一般逆行列は様々に定義されて一意に定まらない。まあ、そうだよね。

このような一般逆行列の中でも、もっとも「もっともらしさ」が適当と言えそうなのが Moore Penrose 逆行列(ムーア・ペンローズ逆行列)で、広く用いられている。
行列Aのムーア・ペンローズ逆行列A^{+}と表すと、次の4つの関係が成り立つ。

無理に理解する必要はないけど、この関係が成り立つという性質はとても嬉しいことで、また行列A^{+}はただ1つに決まる。

このムーア・ペンローズ逆行列A^{+}を使って、求めた解は、Aが縦長の場合は||A {\bf x} - {\bf b}||^2を最小にし、Aが横長の場合はノルム||{\bf x}||を最小にするという性質がある。
つまり、この意味において、もっとも誤差が小さい解を求められる、ということになる。

すでに書いたように、一般逆行列には様々なものが考えられるのだけど、ムーア・ペンローズ逆行列があまりに広く使われているので、
単に「一般逆行列」と書いて「ムーア・ペンローズ逆行列」を指すこともある。
また、ムーア・ペンローズ逆行列は擬逆行列(疑逆行列)と呼ばれることもある。

つまり、
・擬逆行列(疑逆行列
・ムーア・ペンローズ(Moore Penrose)逆行列
・一般逆行列
・一般化逆行列
という、さまざまな呼び名がありながら、結局どれも同じ行列のことを言っていることが多い。

では、このムーア・ペンローズ逆行列によって得られる解には、どのような性質があるだろうか。実験してみよう。


統計ソフトRには、行列計算を行う機能が備わっていて、ライブラリ library(MASS) の中の ginv 関数を使うことで、一般逆行列を求めることができる。

これまでに登場した、逆行列が存在しない行列Aの例、\left(\begin{array}{cc}1 & 1 \\ 1 & -1 \\ 0 & 1 \end{array} \right)\left(\begin{array}{cc}1 & 1 \end{array} \right)\left(\begin{array}{cc}1 & 1 \\ 1 & 1 \end{array} \right) それぞれについて実行してみる。


\left(\begin{array}{cc}1 & 1 \\ 1 & -1 \\ 0 & 1 \end{array} \right)の場合、ムーア・ペンローズ逆行列は次のようになる。

> ginv(matrix(c(1, 1, 0, 1, -1, 1), 3, 2))
          [,1]       [,2]      [,3]
[1,] 0.5000000  0.5000000 0.0000000
[2,] 0.3333333 -0.3333333 0.3333333

次のようにしてA^{+}{\bf b}を計算すれば、この結果を使ったx,yの値が求まる。

> ginv(matrix(c(1, 1, 0, 1, -1, 1), 3, 2)) %*% matrix(c(4,0,1), 3, 1)
         [,1]
[1,] 2.000000
[2,] 1.666667

つまり、本来は解が無いはずなのに、ムーア・ペンローズ逆行列を使うことで、次の「もっともらしい」解が得られたことになる。
x = 2
y = 1.666667

グラフ上に、この点を打つと次のようになる。

なんとなく3つの直線の交点と見なせそうな場所が得られたことを確認できる。
ところで、ムーア・ペンローズ逆行列で求めた解は誤差||A {\bf x} - {\bf b}||^2を最小にするのだった。

検証してみよう。

A {\bf x} - {\bf b} = \left(\begin{array}{cc}1 & 1 \\ 1 & -1 \\ 0 & 1 \end{array} \right) \left( \begin{array}{c}x \\ y \end{array} \right) - \left( \begin{array}{c}4 \\ 0 \\ 1 \end{array} \right) \\ = \left(\begin{array}{c}x+y-4\\x-y\\y-1 \end{array} \right)

なので

||A {\bf x} - {\bf b}||^2 = (x+y-4)^2 +(x-y)^2+(y-1)^2 \\= 2x^2-8x+3y^2-10y+17=2(x-2)^2+3(y-\frac{5}{3})^2+\frac{2}{3}

この値を最小にするx,yは
x=2, y=\frac{5}{3}
であることから、先ほどのRで求めた解と一致することが確認できる。



さて続いて、\left(\begin{array}{cc}1 & 1 \end{array} \right) \left( \begin{array}{c}x \\ y \end{array} \right) = \left( \begin{array}{c}4 \end{array} \right)
についてみてみよう。

\left(\begin{array}{cc}1 & 1 \end{array} \right)の場合、ムーア・ペンローズ逆行列は次のようになる。

> ginv(matrix(c(1, 1), 1, 2))
     [,1]
[1,]  0.5
[2,]  0.5

次のようにしてA^{+}{\bf b}を計算すれば、この結果を使ったx,yの値が求まる。

> ginv(matrix(c(1, 1), 1, 2)) %*% matrix(c(4), 1, 1)
     [,1]
[1,]    2
[2,]    2

つまり、本来は解が無数にあるはずなのに、ムーア・ペンローズ逆行列を使うことで、次の「もっともらしい」解が得られたことになる。
x = 2
y = 2

グラフ上に、この点を打つと次のようになる。

直線上に無数に存在する解の中から、最も原点に近い点が「もっともらしい」解として選ばれたことを確認できる。




最後に、 \left(\begin{array}{cc}1 & 1 \\ 1 & 1 \end{array} \right) \left( \begin{array}{c}x \\ y \end{array} \right) = \left( \begin{array}{c}4 \\ 2 \end{array} \right)
についてみてみよう。
これは、平行な2直線で、解が存在しないケースだった。

\left(\begin{array}{cc}1 & 1 \\ 1 & 1 \end{array} \right)のムーア・ペンローズ逆行列は次のようになる。

> ginv(matrix(c(1, 1, 1, 1), 2, 2))
     [,1] [,2]
[1,] 0.25 0.25
[2,] 0.25 0.25

次のようにしてA^{+}{\bf b}を計算すれば、この結果を使ったx,yの値が求まる。

> ginv(matrix(c(1, 1, 1, 1), 2, 2)) %*% matrix(c(4, 2), 2, 1)
     [,1]
[1,]  1.5
[2,]  1.5

つまり、本来は解が存在しないはずなのに、ムーア・ペンローズ逆行列を使うことで、次の「もっともらしい」解が得られたことになる。
x = 1.5
y = 1.5

グラフ上に、この点を打つと次のようになる。

平行な2直線の中間で、最も原点に近い点が解となっている。


というわけで、ムーア・ペンローズ逆行列を使うことで、本来なら解の存在しない連立方程式に対して、もっともらしい解が得られることを確認できた。


■ 参考
一般逆行列 (川上一郎)
Mastering PLS regression YUGI, Katsuyuki



なっとくする行列・ベクトル (なっとくシリーズ)

なっとくする行列・ベクトル (なっとくシリーズ)

ベクトル・行列がビジュアルにわかる線形代数と幾何

ベクトル・行列がビジュアルにわかる線形代数と幾何