大人になってからの再学習

2012-08-11 [数学]一般逆行列・ムーア・ペンローズ逆行列

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


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

簡単な例として

¥left{¥begin{array}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の二つの直線の交点を求めたことになる。

f:id:Zellij:20120810202010p:image

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

=====

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

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


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

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

f:id:Zellij:20120810202012p:image

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

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


=====
上記の連立方程式を  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つの関係が成り立つ。

f:id:Zellij:20120810092336p:image

無理に理解する必要はないけど、この関係が成り立つという性質はとても嬉しいことで、また行列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

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

f:id:Zellij:20120810203535p:image

なんとなく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

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

f:id:Zellij:20120810210225p:image

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




最後に、 ¥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

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

f:id:Zellij:20120810210226p:image

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


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


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


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

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

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

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

リンク元