ムーア・ペンローズ逆行列
数学、特に線形代数において、行列 A のムーア・ペンローズ逆行列(Moore–Penrose inverse) A^+ は、逆行列の最もよく知られている一般化である。 ムーア・ペンローズ形一般逆行列とも呼ばれる。1920年にE・H・ムーアに、1951年にArne Bjerhammarに、1955年にロジャー・ペンローズによって独立して記述された。それ以前、 エリック・イヴァル・フレドホルムは、1903年に積分演算子の擬似逆行列の概念を導入していた。行列について述べる場合、特段の指定がない限り、擬似逆行列という用語はムーア・ペンローズ逆行列を指すことが多い。一般化逆行列という用語は、擬似逆行列の同義語として用られることがある。
擬似逆行列の一般的な使用法は、解がない線形連立方程式の「最適」(最小二乗)解を計算することである(以下の応用を参照)。ほかに、複数の解を持つ線形連立方程式の最小(ユークリッド)ノルム解を求めることにも用いられる。擬似逆行列によって、線形代数での結果の表現と証明が容易になる。
擬似逆行列は、成分が実数または複素数であるすべての行列に対して定義され、一意に定まる。特異値分解を用いて計算できる。
以下の説明では、次の表記規約に従うものとする。
\mathbb{R} と \mathbb{C} はそれぞれ実数体または複素数体を表し、 \mathbb{k} はこれらのいずれかを表すものとする。 \mathbb{k} 上の m \times n 行列のベクトル空間を \mathbb{k}^{m\times n} で表す。
A \in \mathbb{k}^{m\times n} に対して、 A^\intercal と A^* はそれぞれ、転置行列とエルミート転置行列(随伴行列とも呼ばれる)を表す。 \mathbb{k} = \mathbb{R} のときは、A^* = A^\intercal である。
A \in \mathbb{k}^{m\times n} に対して、\operatorname A (「値域(range)」の略)は、 A の列空間(像)(A の列ベクトルが張る空間)を表し、\ker A は A の核(零空間)を表す。
最後に、任意の正の整数 n に対して I_n \in \mathbb{k}^{n\times n} は n \times n 単位行列を表す。
A \in \mathbb{k}^{m\times n} に対して、 A の擬似逆行列は、ムーア・ペンローズ条件として知られる次の4つの条件をすべて満たす行列 A^+ \in \mathbb{k}^{n\times m} として定義される:
A A^+ A = A
A A^+は一般恒等行列である必要はないが、 A のどの列ベクトルも A 自身に写す。
A^+ A A^+ = A^+
A^+は弱逆行列のように振る舞う。
\left(A A^+\right)^*=A A^+
A A^+はエルミート行列。
\left(A^+ A\right)^*=A^+ A
A^+Aもエルミート行列。
A^+ はすべての行列 A に対して存在するが、 A がフルランク(すなわち、 A のランクが \min\{m,n\} である)であるならば、A^+ は単純な代数式として表される。
A の列ベクトルが線型独立である(したがって行列 A^*A は可逆である)ならば、A^+ は次のように計算できる。 A^+ = \left(A^* A\right)^{-1} A^*このような擬似逆行列は左逆行列となる。この場合、  A^+A = I_n  となる。
A の行ベクトルが線型独立である(行列 AA^* が可逆である)ならば、A^+ は次のように計算できる。 A^+ = A^* \left(A A^*\right)^{-1}これは右逆行列となり、  A A^+ = I_m となる。
擬似逆行列は存在し、一意に定まる:任意の行列 A に対して、定義の4つの条件を満たす行列 A^+ が唯一つ存在する。
定義の最初の条件 AA−A  A を満たす行列 A− は、 行列 A の一般逆行列(generalized inverse)として知られている。定義の二条件 AA×A  A と A×AA×  A× を満たす行列 A× は、行列 A の反射形一般逆行列(reflexive generalized inverse)と呼ばれる。一般逆行列は常に存在するが、一般に一意に定まらない。一意性は、最後の2つの条件から導かれる。
以下の特徴の証明は、証明サブページに記した。
A が実行列であれば、 A^+ も実行列である。
A が可逆ならば、A の擬似逆行列は A の逆行列である。A^+ = A^{-1} 。
零行列の擬似逆行列は零行列の転置となる。
擬似逆行列の擬似逆行列は、元の行列になる。 \left(A^+\right)^+ = A 。
擬似逆行列の操作は、転置、複素共役、および共役転置の各操作と交換できる。
\begin{align}
\left(A^\intercal\right)^+ &= \left(A^+\right)^\intercal \\
\left(\overline{A}\right)^+ &= \overline{A^+} \\
\left(A^*\right)^+ &= \left(A^+\right)^*
\end{align}
A の定数倍行列の擬似逆行列は、定数の逆数をかけたものになる:
\left(\alpha A\right)^+ = \alpha^{-1} A^+ ただし \alpha \neq 0。
次の恒等式を用いて、擬似逆行列を含む式の一部を簡略化したり展開できる。
A = AA^*A^{+*} = A^{+*}A^*A
同じことであるが、A を A^+ で置き換えると以下の式が得られる。
A^+ =A^+A^{+*}A^* = A^*A^{+*}A^+
A を A^* で置き換えると以下の式になる。
A^* =A^*AA^+=A^+AA^*
擬似逆行列の計算は、エルミートの場合の構成法に還元できる。これは、以下の等価性によるものである。A^+ = \left(A^*A\right)^+ A^*ここで、A^*A と AA^* はエルミートである。
A \in \mathbb{k}^{m\times n}, B \in \mathbb{k}^{n\times p} とする。すると、以下は同値になる。
(AB)^+=B^+A^+
\begin{align}
A^+ A BB^* A^* & = BB^* A^*, \\
BB^+ A^* A B & = A^* A B.
\end{align}
\begin{align}
\left(A^+ A BB^*\right)^* & = A^+ A BB^*, \\
\left(A^* A BB^+\right)^* & = A^* A BB^+.
\end{align}
A^+ A BB^* A^* A BB^+ = BB^* A^* A
\begin{align}
A^+ A B & = B (AB)^+ AB, \\
BB^+ A^* & = A^* A B (AB)^+.
\end{align}
以下は (AB)^+=B^+A^+ の十分条件である(このうちのいずれか一つを満たせば十分である):
A が正規直交列を持つ(このときA^*A = A^+ A = I_n )
B が正規直交行を持つ(このときBB^* = BB^+ = I_n )
A の列が線型独立であり( A^+ A = I_n )、かつ B の行が線型独立である( BB^+ = I_n )
B = A^*
B = A^+
以下は (AB)^+=B^+A^+ の必要条件である:
(A^+ A) (BB^+) = (BB^+) (A^+ A)
最後の十分条件から以下の式が導かれる。\begin{align}
\left(A A^*\right)^+ &= A^{+*} A^+, \\
\left(A^* A\right)^+ &= A^+ A^{+*}.
\end{align}注意:等式 (AB)^+=B^+A^+ は一般には成り立たない。反例は以下の通り:\Biggl( \begin{pmatrix} 1 & 1 \\ 0 & 0 \end{pmatrix} \begin{pmatrix} 0 & 0 \\ 1 & 1 \end{pmatrix} \Biggr)^+ = \begin{pmatrix} 1 & 1 \\ 0 & 0 \end{pmatrix}^+ = \begin{pmatrix}
\tfrac12 & 0 \\ \tfrac12 & 0 \end{pmatrix} \quad \neq \quad \begin{pmatrix}
\tfrac14 & 0 \\ \tfrac14 & 0 \end{pmatrix} = \begin{pmatrix} 0 & \tfrac12 \\ 0 & \tfrac12 \end{pmatrix} \begin{pmatrix} \tfrac12 & 0 \\ \tfrac12 & 0 \end{pmatrix} = \begin{pmatrix} 0 & 0 \\ 1 & 1 \end{pmatrix}^+ \begin{pmatrix} 1 & 1 \\ 0 & 0 \end{pmatrix}^+
A \in \mathbb{k}^{m\times n} とする。P = A A^+ と Q = A^+A は直交射影演算子である。つまり、これらはエルミート( P = P^* 、 Q = Q^* )およびべき等( P^2 = P と Q^2 = Q )であり、以下の事柄が成り立つ:
PA = AQ = A かつ A^+ P = QA^+ = A^+
P が A の値域への直交射影作用素である(これは、 A^* の核の直交補空間に等しい)。
Q が A^* の値域への直交射影作用素である(これは、 A の核の直交補空間に等しい)。
I_n - Q = I_n - A^+A は A の核への直交射影作用素である。
I_m - P = I_m - A A^+ は A^* の核の直交射影作用素である。
最後の2つの特徴は、以下の等式を意味する。
A\,\ \left(I_n - A^+ A\right)= \left(I_m - A A^+\right)A\ \ = 0
A^*\left(I_m - A A^+\right) = \left(I_n - A^+A\right)A^* = 0
他の特徴は以下の通り。A \in \mathbb{k}^{n\times n} はエルミートかつべき等であり(正射影を表す場合かつその場合に限って真)、任意の行列 B \in \mathbb{k}^{m\times n} に対して以下の等式が成り立つ。 A(BA)^+ = (BA)^+ これは、行列 C = BA 、 D = A(BA)^+ を定義することで証明できる。 A がエルミートでべき等であるという、擬似逆行列の特徴を満たすことを確認することにより、 D が実際に C の擬似逆行列になっていることを確認すればよい。
最後の特徴から、 A \in \mathbb{k}^{n\times n} がエルミートかつべき等であるならば、任意の行列 A \in \mathbb{k}^{n\times m} に対して以下の式が成り立つ。(AB)^+A = (AB)^+ 最後に、 A は直交射影行列であるならば、その擬似逆行列は元の行列と自明に一致する。つまり、 A^+ = A 。
行列 A\colon \mathbb{k}^n \to \mathbb{k}^m を体 \mathbb{k} 上の線型写像として見ると、 A^+\colon \mathbb{k}^m \to \mathbb{k}^n は次のように分解できる。ここで、 \oplus を直和、 \perp  を直交補空間、 \operatorname{ker} を写像の核、そして \operatorname{ran} を写像の像とする。\mathbb{k}^n = \left(\ker A\right)^\perp \oplus \ker A となり \mathbb{k}^m = \operatorname{ran} A \oplus \left(\operatorname{ran} A\right)^\perp となることに注意せよ。 A\colon \left(\ker A\right)^\perp \to \operatorname{ran} A と制限すると、同型写像となる。これは、 \operatorname{ran} A  上で A^+ がこの同型写像の逆写像となり、 \left(\operatorname{ran} A\right)^\perp  上で核が逆写像となることを含意する。
言い換えれば: \mathbb{k}^m の元 b が与えられたとき、A^+b を探すために、まず A の値域に直交するように b を射影し、値域内の点 p(b) を探す。次に A^{-1}(\{p(b)\}) を作る。すなわち、 \mathbb{k}^n に属し、 A を p(b) に写すベクトルを探す。これは A の核に平行する \mathbb{k}^n のアフィン部分空間になる 。長さが最小の(つまり、原点に最も近い)を持つこの部分空間の元が、求めたい答え A^+b になる。 A^{-1}(\{p(b)\}) の任意の元を選び、それを A の核の直交補空間に直交して投影することで求まる。
この説明は、線型連立方程式の最小ノルム解と密接に関連する。
\begin{align}
\ker A^+ &= \ker A^* \\
\operatorname{ran} A^+ &= \operatorname{ran} A^*
\end{align}
擬似逆行列は以下の極限を持つ。A^+ = \lim_{\delta \searrow 0} \left(A^* A + \delta I\right)^{-1} A^*
= \lim_{\delta \searrow 0} A^* \left(A A^* + \delta I\right)^{-1}
(チコノフ正則化を参照)。 (AA^*)^{-1}
や (A^*A)^{-1}
が存在しない場合にも、これらの極限は存在する。
通常の逆行列とは対照的に、擬似逆行列を求める操作は連続的ではない。行列の列 (A_n) が行列 A に収束する(たとえば、最大ノルムまたはフロベニウスノルムの意味で)ならば、(A_n)^+ が A^+ に収束する必要はない。ただし、すべての行列 A_n が A と同じランクであれば、(A_n)^+ は A^+ に収束する。
ある点 x で定数のランクを持つ実数値の擬似逆行列の導関数は、元の行列の導関数で計算できる:
\frac{\mathrm d}{\mathrm d x} A^+(x) =
-A^+ \left( \frac{\mathrm d}{\mathrm d x} A \right) A^+ ~+~
A^+ A^{+\intercal} \left(\frac{\mathrm d}{\mathrm d x} A^\intercal\right) \left(I - A A^+\right) ~+~
\left(I - A^+ A\right) \left(\frac{\text{d}{\text{d} x} A^\intercal\right) A^{+\intercal} A^+
可逆行列の場合、擬似逆行列は通常の逆行列に等しいため、以下では非可逆行列の例のみを扱う。 \begin{pmatrix} 0 & 0 \\ 0 & 0 \end{pmatrix} について、疑似逆行列は A^+ = \begin{pmatrix} 0 & 0 \\ 0 & 0 \end{pmatrix} である(一般に、零行列の疑似逆行列は元の行列の転置となる)。この疑似逆行列の一意性は、零行列の積は常に零行列であるため、条件 A^+ = A^+ A A^+ からわかる。
スカラーとベクトルの擬似逆行列を定義することもできる。この場合、これらを行列として扱うことになる。スカラー x の擬似逆行列は、 x がゼロの場合はゼロになり、それ以外の場合は x の逆数となる:x^+ = \begin{cases}
0,      & \mbox{if }x = 0; \\
x^{-1}, & \mbox{otherwise}.
\end{cases}
零(すべてゼロ)ベクトルの擬似逆行列は、転置された零ベクトルである。非零ベクトルの擬似逆行列は、共役転置ベクトルをその2乗の大きさで割ったものになる。\vec{x}^+ = \begin{cases}
\vec{0}^\intercal,       & \mbox{if } \vec{x} = \vec{0}; \\
\dfrac{\vec{x}^*}{\vec{x}^* \vec{x}, & \mbox{otherwise}.
\end{cases}
A \in \mathbb k^{m \times n} の列が線型独立の場合(m \geq n)、A^*Aは可逆である。この場合の明示的な式は以下の通り。A^+ = \left(A^*A\right)^{-1}A^* つまり、 A^+ は Aの左逆行列となる:A^+ A = I_n
つまり、 A^+ は Aの右逆行列となる:AA^+ = I_m
A \in \mathbb k^{m \times n} の行が線型独立の場合(m \leq n)、AA^*は可逆である。この場合の明示的な式は以下の通り。A^+ = A^*\left(A A^*\right)^{-1} これは、列フルランクまたは行フルランクの特殊なケースである(上記で扱った)。 A が正規直交列( A^*A = I_n )または正規直交行( A A^* = I_m )を持つならば、以下の式が成り立つ:
つまり、 A^+ は Aの右逆行列となる:AA^+ = I_m
これは、列フルランクまたは行フルランクの特殊なケースである(上記で扱った)。 A \in \mathbb k^{m \times n} が正規直交列( A^*A = I_n )または正規直交行( A A^* = I_m )を持つならば、以下の式が成り立つ:A^+ = A^*
A=
\begin{pmatrix}
a&b\\
c&d
\end{pmatrix}
の擬似逆行列は ad-bc\ne 0 のとき、
A^+=A^{-1}=
\frac{1}{ad-bc}
\begin{pmatrix}
d&-b\\
-c&a
\end{pmatrix}
である。 ad-bc=0 のとき、 A\ne O のときは
A^+=
\frac{1}〔a|^2+|b|^2+|c|^2+|d|^2}
\begin{pmatrix}
\bar{a}&\bar{c}\\
\bar{b}&\bar{d}
\end{pmatrix}
となる。 A=O のときは
A^+=O=
\begin{pmatrix}
0&0\\
0&0
\end{pmatrix}
である。
A が 正規行列、つまり、共役転置が可換であれば、その擬似逆行列は、それを対角化し、すべての非ゼロ固有値をそれらの逆数に、ゼロ固有値をゼロに写すことで計算できる。当然、 A が転置について可換であるとは、それがその擬似逆行列で可換であることを意味します。
これは、固有値が0と1の正規行列の特殊なケースである。A が直交射影行列、つまり、 A = A^* かつ A^2 = A であれば、擬似逆行列は行列自体と自明に一致する:A^+ = A
C が巡回行列の場合、フーリエ変換で特異値分解ができる。つまり、特異値はフーリエ係数となる。\mathcal{F} を離散フーリエ変換(DFT)行列とすると、
\begin{align}
C &= \mathcal{F}\cdot\Sigma\cdot\mathcal{F}^* \\
C^+ &= \mathcal{F}\cdot\Sigma^+\cdot\mathcal{F}^*
\end{align}
r\leq \min(m,n) で A \in \mathbb{k}^{m\times n} の ランクを表すとする。すると A は A = BC として(ランク)分解することができる。ここで、 B \in \mathbb{k}^{m\times r},
C \in \mathbb{k}^{r\times n} のランクは r である。このとき
A^+ = C^+B^+ = C^*\left(CC^*\right)^{-1}\left(B^*B\right)^{-1}B^*
となる。
\mathbb{k} \in \{ \mathbb{R}, \mathbb{C}\} で積 AA^*, A^*A やそれらの逆行列を直接計算すると、実際には数値の丸め誤差や計算コストがたびたび生じる。逆行列の計算には、上記の代わりに A のQR分解を用いる方法がある。
A が列フルランクの場合を考える。このとき A^+ = \left(A^*A\right)^{-1}A^* である。すると、コレスキー分解A^*A = R^*R (R は上三角行列)を用いることができる。逆行列の乗算は、複数右辺ベクトルを持つ連立方程式を解くことで簡単に行える。A^+ = \left(A^*A\right)^{-1}A^* \quad \Leftrightarrow \quad \left(A^*A\right)A^+ = A^* \quad \Leftrightarrow \quad R^*RA^+ = A^*  これは、前進代入と後退代入で解くことができる。
コレスキー分解の代わりに  QR分解  A = Q R を用いることで、A^*A を明示的に構築せずに計算できる。ここで、 Q は正規直交列を持ち、  Q^*Q = I  、そして R 上三角行列である。このとき A^*A \,=\, (Q R)^*(Q R) \,=\, R^*Q^*Q R \,=\, R^*R それでのコレスキー因子である 。
行フルランクの場合は、式 A^+ = A^*\left(A A^*\right)^{-1} を用い、A と A^* を入れ替えた同様の議論で対処可能である。
計算上単純で正確な擬似逆行列を計算する方法は、特異値分解である。A = U\Sigma V^*を A の特異値分解とすると、 A^+ = V\Sigma^+ U^* となる。\Sigma のような長方対角行列の場合、対角成分の各非ゼロ要素は逆数を取り、ゼロをそのままにして、行列を転置することにより、擬似逆行列が得られる。数値計算では、許容誤差よりも大きい要素のみが非ゼロと見なされ、他の要素はゼロに置き換えられる。たとえば、 MATLABやGNUOctaveのpinv関数の場合、許容誤差は t = ε⋅max(m, n)⋅max(Σ) で与えられる。ここで、εは計算機イプシロンである。
この方法の計算コストは、SVDの計算コストが支配的である。これは、最先端の実装(LAPACKなど)が使用されている場合でも、行列同士の乗算よりも数倍重い。
上記の手順は、擬似逆行列の計算が連続演算ではない理由を示している。元の行列 A が特異値0(上記行列 \Sigma の対角成分)を持つ場合、A のわずかな変更によってこのゼロが小さな正の数に変わる可能性があり、それによって、小さな数の逆数を求める必要が生じ、擬似逆行列に大きな影響を与えうる。
ブロック構造化された行列の擬似逆行列を計算するためのブロック行列の疑似逆行列が存在する。
他に、再帰を用いて擬似逆行列を計算する方法(ドラジン逆行列を参照)がある。 A_{i+1} = 2A_i - A_i A A_i  これは、超べき列(hyper-power sequence)と呼ばれることもある。この再帰は、適切な A_0 から始まり、 A_0 A = \left(A_0 A\right)^* を満足する場合、A の擬似逆行列に2次的に収束する列を生成する。A_0 = \alpha A^* という選び方(ここで0 < \alpha < 2/\sigma^2_1(A) であり、 \sigma_1(A)は A の最大の特異値を示す)は、上記のSVDを使用する方法と競合しないと主張されている。これは、適度に悪条件の行列であっても、A_i が二次収束の領域に入る前に長い時間がかかるためである。ただし、A_0 がすでにムーア・ペンローズ逆行列に近く、 A_0 A = \left(A_0 A\right)^* ならば、 例えばA_0 := \left(A^* A + \delta I\right)^{-1} A^* ならば、収束は高速である(二次)。
A が行または列フルランクで、かつ相関行列の逆行列(A が行フルランクの場合は AA^*、列フルランクの場合はA^*A)がすでに既知であるならば、A に関連する行列の擬似逆行列は、行列の反転補題を適用して相関行列の逆行列を更新することで計算できる。これにより、必要な作業が少なて済む可能性がある。特に関連する行列について、変更、追加、または削除された行・列のみが元の行列と異なる場合、その関係を利用する増分アルゴリズムが存在する 。
同様に、行または列が追加されたときに、相関行列の逆行列を明示的に作成せずに、コレスキー係数を更新することができる。ただし、一般のランク不足の場合、擬似逆行列の更新は非常に複雑である 。
SVD、QR、および後方代入の高品質な実装は、 LAPACKなどの標準ライブラリで利用できる。 SVDの独自実装の作成には、高度な数値計算の専門知識を必要とする。ただし、並列コンピューティングや組み込みコンピューティングなどの特殊な状況では、QRによる代替実装、または明示的な逆行列の使用が望ましい場合があり、独自実装は避けられない場合がある。
PythonパッケージNumPyでは、関数matrix.Iとlinalg.pinvを利用できる。pinvはSVDベースのアルゴリズムを使用する。 SciPyでは、最小二乗ソルバーを使用する関数scipy.linalg.pinvを利用できる。
RのMASSパッケージでは、 ginv関数でムーア・ペンローズ逆行列の計算が行える。 ginv関数は、ベースRパッケージのsvd関数による特異値分解を使用して擬似逆行列を計算する。他に、pracmaパッケージで利用可能なpinv関数を使用する方法もある。
Octaveプログラミング言語は、標準パッケージ関数pinvおよびpseudo_inverse()メソッドを介して擬似逆行列を計算できる。
Julia(プログラミング言語)では、標準ライブラリのLinearAlgebraパッケージが、特異値分解を介して実装されたムーア・ペンローズ逆行列の実装 pinv() を提供する。
擬似逆行列によって、連立一次方程式の最小二乗解が求まる。 A \in \mathbb{k}^{m\times n} を係数行列とする以下の連立一次方程式が与えられた場合を考える。A x = b一般的に、連立方程式を解くベクトル x が存在しないか、存在する場合は一意ではない可能性がある。擬似逆行列は、「最小二乗」問題を次のように解く。
任意の x \in \mathbb{k}^n について、 \left\|Ax - b\right\|_2 \ge \left\|Az - b\right\|_2 となる。ここで、 z = A^+b であり、 \|\cdot\|_2 はユークリッドノルムを表す。等号は、任意のベクトル w \in \mathbb k^n が x = A^+b + \left(I_n - A^+A\right)w を満たすとき、またそのときに限って成り立つ。 A が列フルランク((I_n-A^+A) が零行列)でない限り、これは無数の最小解を与える。 最小ユークリッドノルムの解は z である。