射影行列とは
射影行列は、あるベクトルに作用させると、そのベクトルの部分空間成分を取り出すような行列である。
射影行列がなぜ重要かというと、線型方程式系の最小二乗解と密接に関係しているからである。
最小二乗解は一般逆行列を使って求められるが、一般逆行列の表式の意味を理解しようとすると、射影行列を知っておくのが一番てっとり早いのである。
射影行列の表式
ストラングの教科書1に従って、行列$A$の列ベクトルたちの張る空間を列空間と呼ぶことにする2。
このとき、$A$の列空間への射影行列は $ A (A^T A)^{-1} A^T $ であることが知られている3。
この記事ではこの表式を導出したいと思う。
導出の前置き
前出のストラングの教科書では、直交性を使って示されている。
しかし、ここでは、双対基底というものを使うことで、射影行列がより簡潔かつ一般的に書けることを示した上で、元々の表式も導出してみる。
双対基底については簡単に説明するが、後半で、計量テンソルを使った反変・共変成分の変換計算4を説明なしに使う。
導出
(Step1) 双対基底
$A$の列ベクトルたち $ \{a_i\} $ が張る空間(列空間)の基底を $ \{a_i\} $ にとる。
これに対して、正規直交性 $$ a^i a_j = \delta ^i_j $$ を満たすような基底を双対基底 $ \{a^i\} $ と呼ぶ。
この式は、$a^i$ と $a_j$ の内積を表しており、$ \{a_i\} $ を縦ベクトルとすると、$ \{a^i\} $ は横ベクトルであることに注意。
双対基底と区別する意味を込めて、元の基底 $ \{a_i\}$ の方を自然基底と呼ぶこともある。
(Step2) 双対基底を使った射影行列の表式
正規直交性から、任意の(縦)ベクトル $x$ に、$a^i$ を掛けると $x$ の $a_i$ 成分が得られることが分かる。
つまり、Aの列空間への射影成分は
$$ x_{\mathrm{span}\{a_i\}} = \sum_i (a^i x) a_i $$ である。この式は
$$ x_{\mathrm{span}\{a_i\}} = \sum_i a_i(a^i x) = \sum_i (a_i a^i) x
$$ と書き換えられるので、射影行列は
$$ P=\sum_i a_i a^i $$ である5。
このように、射影行列は、双対基底を入れることで、非常に簡潔な形で表せる。
ここまで来れば、あとは計量テンソルによる添字の上げ下げをするだけである。
(Step3) Aを使った式に直す
計量テンソルで双対基底を自然基底に戻す(添え字を「下げる」)と
$$ P=\sum_{i,j} a_i g^{ij} a_j $$ であり、行列で書くと、$ P = A G^{-1} A^T $ と書ける。
ここで、$ g^{ij} $は $G = (g_{ij})$ の逆行列の行列要素であることを使った。
自然基底の作る計量テンソルである $ g_{ij} $ は、$ g_{ij} = a_i \cdot a_j $であり、行列で書くと、$ G = A^T A $ であるから、結局、射影行列は、
$$ P = A (A^T A)^{-1} A^T $$ となる。
補足:行空間への射影行列
$A$の行ベクトルたちが張る空間は行空間と呼び、同様に射影行列を作ることができる。
列空間の場合と対比的に書くと、
- $A$の列空間への射影行列は $ A (A^T A)^{-1} A^T $
- $A$の行空間への射影行列は $ A^T (A A^T)^{-1} A $
行空間への射影行列の表式は、列空間への射影行列の式において、$ A \rightarrow A^T $と置き換えれば得られる。これは、$A$の行空間は、$ A^T $ の列空間と言い換えられるからである。
行空間への射影行列は、線形方程式系のノルム最小解と関連している。