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

提供: testwiki
ナビゲーションに移動 検索に移動
イライアキム・ムーア(1862–1932)
ロジャー・ペンローズ(1931–)

数学、特に線形代数において、行列 Aムーア・ペンローズ逆行列テンプレート:Lang-en-shortA+ は、逆行列の最もよく知られている一般化であるテンプレート:Sfnテンプレート:Sfnテンプレート:Sfnテンプレート:Sfnムーア・ペンローズ形一般逆行列とも呼ばれる[1]。1920年にE・H・ムーア[2]に、1951年にテンプレート:Ill[3]に、1955年にロジャー・ペンローズ[4]によって独立して記述された。それ以前、 エリック・イヴァル・フレドホルムは、1903年に積分演算子の擬似逆行列の概念を導入していた。行列について述べる場合、特段の指定がない限り、擬似逆行列という用語はムーア・ペンローズ逆行列を指すことが多い。一般化逆行列という用語は、擬似逆行列の同義語として用られることがある。

擬似逆行列の一般的な使用法は、解がない線形連立方程式の「最適」(テンプレート:Ill)解を計算することである(以下の応用を参照)。ほかに、複数の解を持つ線形連立方程式の最小(ユークリッド)ノルム解を求めることにも用いられる。擬似逆行列によって、線形代数での結果の表現と証明が容易になる。

擬似逆行列は、成分が実数または複素数であるすべての行列に対して定義され、一意に定まる。特異値分解を用いて計算できる。

表記

以下の説明では、次の表記規約に従うものとする。

  • はそれぞれ実数または複素数体を表し、 𝕜 はこれらのいずれかを表すものとする。 𝕜 上の m×n 行列のベクトル空間を 𝕜m×n で表す。
  • A𝕜m×n に対して、 AA* はそれぞれ、転置行列とエルミート転置行列(随伴行列とも呼ばれる)を表す。 𝕜= のときは、A*=A である。
  • A𝕜m×n に対して、ranA (「値域(range)」の略)は、 A列空間(像)(A の列ベクトルが張る空間)を表し、kerAA(零空間)を表す。
  • 最後に、任意の正の整数 n に対して In𝕜n×nn×n 単位行列を表す。

定義

A𝕜m×n に対して、 テンプレート:Mvar の擬似逆行列は、ムーア・ペンローズ条件として知られる次の4つの条件をすべて満たす行列 A+𝕜n×m として定義される[4][5]

  1. AA+A=A
    AA+は一般恒等行列である必要はないが、 テンプレート:Mvar のどの列ベクトルも テンプレート:Mvar 自身に写す。
  2. A+AA+=A+
    A+テンプレート:Illのように振る舞う。
  3. (AA+)*=AA+
    AA+エルミート行列
  4. (A+A)*=A+A
    A+Aもエルミート行列。

A+ はすべての行列 テンプレート:Mvar に対して存在するが、 テンプレート:Mvarフルランク(すなわち、 テンプレート:Mvar のランクが min{m,n} である)であるならば、A+ は単純な代数式として表される。

テンプレート:Mvar の列ベクトルが線型独立である(したがって行列 A*A は可逆である)ならば、A+ は次のように計算できる。A+=(A*A)1A*このような擬似逆行列は左逆行列となる。この場合、 A+A=In となる。 テンプレート:Mvar の行ベクトルが線型独立である(行列 AA* が可逆である)ならば、A+ は次のように計算できる。A+=A*(AA*)1これは右逆行列となり、 AA+=Im となる。

特徴

存在と一意性

擬似逆行列は存在し、一意に定まる:任意の行列 テンプレート:Mvar に対して、定義の4つの条件を満たす行列 A+ が唯一つ存在する[5]

定義の最初の条件 テンプレート:Math を満たす行列 テンプレート:Math は、 行列 テンプレート:Mvar一般逆行列(generalized inverse)として知られている[1]。定義の二条件 テンプレート:Mathテンプレート:Math を満たす行列 テンプレート:Math は、行列 テンプレート:Mvar反射形一般逆行列(reflexive generalized inverse)と呼ばれる[1]。一般逆行列は常に存在するが、一般に一意に定まらない。一意性は、最後の2つの条件から導かれる。

基本的な特徴

以下の特徴の証明は、証明サブページに記した。

恒等関係

次の恒等式を用いて、擬似逆行列を含む式の一部を簡略化したり展開できる。A=AA*A+*=A+*A*A同じことであるが、AA+ で置き換えると以下の式が得られる。A+=A+A+*A*=A*A+*A+AA* で置き換えると以下の式になる。A*=A*AA+=A+AA*

エルミートの場合への還元

擬似逆行列の計算は、エルミートの場合の構成法に還元できる。これは、以下の等価性によるものである。A+=(A*A)+A*ここで、A*AAA* はエルミートである。

A𝕜m×n,B𝕜n×p とする。すると、以下は同値になる[7]

  1. (AB)+=B+A+
  2. A+ABB*A*=BB*A*,BB+A*AB=A*AB.
  3. (A+ABB*)*=A+ABB*,(A*ABB+)*=A*ABB+.
  4. A+ABB*A*ABB+=BB*A*A
  5. A+AB=B(AB)+AB,BB+A*=A*AB(AB)+.

以下は (AB)+=B+A+ の十分条件である(このうちのいずれか一つを満たせば十分である):

  1. テンプレート:Mvar が正規直交列を持つ(このときA*A=A+A=In
  2. テンプレート:Mvar が正規直交行を持つ(このときBB*=BB+=In
  3. テンプレート:Mvar の列が線型独立であり( A+A=In )、かつ テンプレート:Mvar の行が線型独立である( BB+=In
  4. B=A*
  5. B=A+

以下は (AB)+=B+A+ の必要条件である:

  1. (A+A)(BB+)=(BB+)(A+A)

最後の十分条件から以下の式が導かれる。(AA*)+=A+*A+,(A*A)+=A+A+*.注意:等式 (AB)+=B+A+ は一般には成り立たない。反例は以下の通り:((1100)(0011))+=(1100)+=(120120)(140140)=(012012)(120120)=(0011)+(1100)+

射影

A𝕜m×n とする。P=AA+Q=A+A直交射影演算子である。つまり、これらはエルミート( P=P*Q=Q* )およびべき等( P2=PQ2=Q )であり、以下の事柄が成り立つ:

最後の2つの特徴は、以下の等式を意味する。

  • A (InA+A)=(ImAA+)A  =0
  • A*(ImAA+)=(InA+A)A*=0

他の特徴は以下の通り。A𝕜n×n はエルミートかつべき等であり(正射影を表す場合かつその場合に限って真)、任意の行列 B𝕜m×n に対して以下の等式が成り立つ[8]A(BA)+=(BA)+これは、行列 C=BAD=A(BA)+ を定義することで証明できる。 テンプレート:Mvar がエルミートでべき等であるという、擬似逆行列の特徴を満たすことを確認することにより、 テンプレート:Mvar が実際に テンプレート:Mvar の擬似逆行列になっていることを確認すればよい。

最後の特徴から、 A𝕜n×n がエルミートかつべき等であるならば、任意の行列 A𝕜n×m に対して以下の式が成り立つ。(AB)+A=(AB)+最後に、 テンプレート:Mvar は直交射影行列であるならば、その擬似逆行列は元の行列と自明に一致する。つまり、 A+=A

幾何学的構成

行列 A:𝕜n𝕜m を体 𝕜 上の線型写像として見ると、 A+:𝕜m𝕜n は次のように分解できる。ここで、 直和直交補空間ker を写像の、そして ran を写像のとする。𝕜n=(kerA)kerA となり 𝕜m=ranA(ranA) となることに注意せよ。A:(kerA)ranA と制限すると、同型写像となる。これは、 ranA 上で A+ がこの同型写像の逆写像となり、 (ranA) 上で核が逆写像となることを含意する。

言い換えれば: 𝕜m の元 b が与えられたとき、A+b を探すために、まず A の値域に直交するように b を射影し、値域内の点 p(b) を探す。次に A1({p(b)}) を作る。すなわち、 𝕜n に属し、 Ap(b) に写すベクトルを探す。これは A の核に平行する 𝕜n のアフィン部分空間になる 。長さが最小の(つまり、原点に最も近い)を持つこの部分空間の元が、求めたい答え A+b になる。 A1({p(b)}) の任意の元を選び、それを A の核の直交補空間に直交して投影することで求まる。

この説明は、線型連立方程式の最小ノルム解と密接に関連する。

部分空間

kerA+=kerA*ranA+=ranA*

極限関係

擬似逆行列は以下の極限を持つ。A+=limδ0(A*A+δI)1A*=limδ0A*(AA*+δI)1チコノフ正則化を参照)。 (AA*)1(A*A)1 が存在しない場合にも、これらの極限は存在する[5]テンプレート:Rp

連続性

通常の逆行列とは対照的に、擬似逆行列を求める操作は連続的ではない。行列の列 (An) が行列 A に収束する(たとえば、最大ノルムまたはフロベニウスノルムの意味で)ならば、(An)+A+ に収束する必要はない。ただし、すべての行列 AnA と同じランクであれば、(An)+A+ に収束する[9]

導関数

ある点 x で定数のランクを持つ実数値の擬似逆行列の導関数は、元の行列の導関数で計算できる[10]ddxA+(x)=A+(ddxA)A++A+A+(ddxA)(IAA+)+(IA+A)(ddxA)A+A+

可逆行列の場合、擬似逆行列は通常の逆行列に等しいため、以下では非可逆行列の例のみを扱う。テンプレート:Bulleted list

特殊なケース

スカラー

スカラーとベクトルの擬似逆行列を定義することもできる。この場合、これらを行列として扱うことになる。スカラー x の擬似逆行列は、 x がゼロの場合はゼロになり、それ以外の場合は x の逆数となる:x+={0,if x=0;x1,otherwise.

ベクトル

零(すべてゼロ)ベクトルの擬似逆行列は、転置された零ベクトルである。非零ベクトルの擬似逆行列は、共役転置ベクトルをその2乗の大きさで割ったものになる。x+={0,if x=0;x*x*x,otherwise.

線型独立な列ベクトル

A𝕜m×n線型独立の場合(mn)、A*Aは可逆である。この場合の明示的な式は以下の通りテンプレート:SfnA+=(A*A)1A*つまり、 A+Aの左逆行列となる:A+A=In

つまり、 A+Aの右逆行列となる:AA+=Im

線型独立な行ベクトル

A𝕜m×nが線型独立の場合(mn)、AA*は可逆である。この場合の明示的な式は以下の通り。A+=A*(AA*)1これは、列フルランクまたは行フルランクの特殊なケースである(上記で扱った)。 A が正規直交列( A*A=In )または正規直交行( AA*=Im )を持つならば、以下の式が成り立つ:

つまり、 A+Aの右逆行列となる:AA+=Im

正規直交列ベクトルまたは行ベクトル

これは、列フルランクまたは行フルランクの特殊なケースである(上記で扱った)。 A𝕜m×n が正規直交列( A*A=In )または正規直交行( AA*=Im )を持つならば、以下の式が成り立つ:A+=A*

2次正方行列

2次正方行列

A=(abcd)

の擬似逆行列は adbc0 のとき、

A+=A1=1adbc(dbca)

である。 adbc=0 のとき、 AO のときは

A+=1|a|2+|b|2+|c|2+|d|2(a¯c¯b¯d¯)

となる。 A=O のときは

A+=O=(0000)

である。

正規行列

A正規行列、つまり、共役転置が可換であれば、その擬似逆行列は、それを対角化し、すべての非ゼロ固有値をそれらの逆数に、ゼロ固有値をゼロに写すことで計算できる。当然、 A が転置について可換であるとは、それがその擬似逆行列で可換であることを意味します。

直交射影行列

これは、固有値が0と1の正規行列の特殊なケースである。A が直交射影行列、つまり、 A=A* かつ A2=A であれば、擬似逆行列は行列自体と自明に一致する:A+=A

巡回行列

C巡回行列の場合、フーリエ変換で特異値分解ができる。つまり、特異値はフーリエ係数となる。離散フーリエ変換(DFT)行列とすると[11]C=Σ*C+=Σ+*

構造

ランク分解

rmin(m,n)A𝕜m×nランクを表すとする。すると AA=BC として(ランク)分解することができる。ここで、 B𝕜m×r,C𝕜r×n のランクは r である。このとき

A+=C+B+=C*(CC*)1(B*B)1B*

となる[12]

QR分解

𝕜{,} で積 AA*,A*A やそれらの逆行列を直接計算すると、実際には数値の丸め誤差や計算コストがたびたび生じる。逆行列の計算には、上記の代わりに AQR分解を用いる方法がある。

A が列フルランクの場合を考える。このとき A+=(A*A)1A* である。すると、コレスキー分解A*A=R*RR上三角行列)を用いることができる。逆行列の乗算は、複数右辺ベクトルを持つ連立方程式を解くことで簡単に行える。A+=(A*A)1A*(A*A)A+=A*R*RA+=A*これは、前進代入後退代入で解くことができる。

コレスキー分解の代わりに QR分解 A=QR を用いることで、A*A を明示的に構築せずに計算できる。ここで、 Q は正規直交列を持ち、 Q*Q=I 、そして R 上三角行列である。このときA*A=(QR)*(QR)=R*Q*QR=R*Rそれでのコレスキー因子である 。

行フルランクの場合は、式 A+=A*(AA*)1 を用い、AA* を入れ替えた同様の議論で対処可能である。

特異値分解(SVD)

計算上単純で正確な擬似逆行列を計算する方法は、特異値分解であるテンプレート:Sfn[5][13]A=UΣV*A の特異値分解とすると、 A+=VΣ+U* となる。Σ のような長方対角行列の場合、対角成分の各非ゼロ要素は逆数を取り、ゼロをそのままにして、行列を転置することにより、擬似逆行列が得られる。数値計算では、許容誤差よりも大きい要素のみが非ゼロと見なされ、他の要素はゼロに置き換えられる。たとえば、 MATLABGNUOctaveテンプレート:Mono関数の場合、許容誤差は テンプレート:Math で与えられる。ここで、εは計算機イプシロンである。

この方法の計算コストは、SVDの計算コストが支配的である。これは、最先端の実装(LAPACKなど)が使用されている場合でも、行列同士の乗算よりも数倍重い。

上記の手順は、擬似逆行列の計算が連続演算ではない理由を示している。元の行列 A が特異値0(上記行列 Σ の対角成分)を持つ場合、A のわずかな変更によってこのゼロが小さな正の数に変わる可能性があり、それによって、小さな数の逆数を求める必要が生じ、擬似逆行列に大きな影響を与えうる。

ブロック行列

ブロック構造化された行列の擬似逆行列を計算するためのテンプレート:Illが存在する。

ベン・イスラエル(Ben-Israel)とコーエン(Cohen)の反復法

他に、再帰を用いて擬似逆行列を計算する方法(テンプレート:Illを参照)がある。Ai+1=2AiAiAAiこれは、超べき列(hyper-power sequence)と呼ばれることもある。この再帰は、適切な A0 から始まり、 A0A=(A0A)* を満足する場合、A の擬似逆行列に2次的に収束する列を生成する。A0=αA* という選び方(ここで0<α<2/σ12(A) であり、 σ1(A)A の最大の特異値を示す)[14]は、上記のSVDを使用する方法と競合しないと主張されている。これは、適度に悪条件の行列であっても、Ai が二次収束の領域に入る前に長い時間がかかるためである[15]。ただし、A0 がすでにムーア・ペンローズ逆行列に近く、 A0A=(A0A)* ならば、 例えばA0:=(A*A+δI)1A* ならば、収束は高速である(二次)。

擬似逆行列の更新

A が行または列フルランクで、かつ相関行列の逆行列(A が行フルランクの場合は AA*、列フルランクの場合はA*A)がすでに既知であるならば、A に関連する行列の擬似逆行列は、テンプレート:Illを適用して相関行列の逆行列を更新することで計算できる。これにより、必要な作業が少なて済む可能性がある。特に関連する行列について、変更、追加、または削除された行・列のみが元の行列と異なる場合、その関係を利用する増分アルゴリズムが存在する [16]

同様に、行または列が追加されたときに、相関行列の逆行列を明示的に作成せずに、コレスキー係数を更新することができる。ただし、一般のランク不足の場合、擬似逆行列の更新は非常に複雑である[17] [18]

ソフトウェアライブラリ

SVD、QR、および後方代入の高品質な実装は、 LAPACKなどの標準ライブラリで利用できる。 SVDの独自実装の作成には、高度な数値計算の専門知識を必要とする。ただし、並列コンピューティング組み込みコンピューティングなどの特殊な状況では、QRによる代替実装、または明示的な逆行列の使用が望ましい場合があり、独自実装は避けられない場合がある。

PythonパッケージNumPyでは、関数matrix.Ilinalg.pinvを利用できる。pinvはSVDベースのアルゴリズムを使用する。 SciPyでは、最小二乗ソルバーを使用する関数scipy.linalg.pinvを利用できる。

RのMASSパッケージでは、 ginv関数でムーア・ペンローズ逆行列の計算が行える[19]ginv関数は、ベースRパッケージのsvd関数による特異値分解を使用して擬似逆行列を計算する。他に、pracmaパッケージで利用可能なpinv関数を使用する方法もある。

Octaveプログラミング言語は、標準パッケージ関数pinvおよびpseudo_inverse()メソッドを介して擬似逆行列を計算できる。

Julia(プログラミング言語)では、標準ライブラリのLinearAlgebraパッケージが、特異値分解を介して実装されたムーア・ペンローズ逆行列の実装 pinv() を提供する[20]

応用

線型最小二乗法

擬似逆行列によって、連立一次方程式最小二乗解が求まる[21]A𝕜m×n を係数行列とする以下の連立一次方程式が与えられた場合を考える。Ax=b一般的に、連立方程式を解くベクトル x が存在しないか、存在する場合は一意ではない可能性がある。擬似逆行列は、「最小二乗」問題を次のように解く。

  • 任意の x𝕜n について、 Axb2Azb2 となる。ここで、 z=A+b であり、 2ユークリッドノルムを表す。等号は、任意のベクトル w𝕜nx=A+b+(InA+A)w を満たすとき、またそのときに限って成り立つ。 A が列フルランク((InA+A) が零行列)でない限り、これは無数の最小解を与える。[22] 最小ユークリッドノルムの解は z である。[22]

ユークリッドノルムをフロベニウスノルムに置き換えると、複数右辺ベクトルを持つ連立方程式に簡単に拡張できる。B𝕜m×p とすると、次のようになる。

  • 任意の X𝕜n×p について、AXBFAZBF となる。ここで Z=A+B であり、Fフロベニウスノルムを表す。

線型連立方程式のすべての解の求解

A𝕜m×n を係数行列とする以下の線型連立方程式が複数の解を持つとする。Ax=bするとすべての解は、任意のベクトル w𝕜n に対して以下の式で与えられる[23]x=A+b+[InA+A]w解は、AA+b=b のとき、またそのときに限り存在する[23]。後者の場合、解は、A が列フルランク([InA+A] が零行列)のとき、またそのときに限り一意に定まる。解は存在するが A が列フルランクでないならば、テンプレート:Illとなり、その無数のすべての解は最後の方程式によって与えられる。

線型連立方程式の最小ノルム解

一意でない解(劣決定系など)を持つ線型連立方程式 Ax=b では、擬似逆行列を使用して、すべての解の中で最小のユークリッドノルム x2 の解を構築できる。

  • Ax=b ならば、ベクトル z=A+b は解であり、すべての解に対して z2x2 が成り立つ。

ユークリッドノルムをフロベニウスノルムに置き換えると、複数右辺ベクトルを持つ連立方程式に簡単に拡張できる。B𝕜m×p とすると、次のようになる。

  • AX=B ならば、行列 Z=A+B は解であり、すべての解に対して ZFXF が成り立つ。

条件数

擬似逆行列と行列ノルムを使用して、任意の行列の条件数を定義できる。cond(A)=AA+条件数が大きい場合、線型連立方程式の最小二乗解を求める問題で、A の要素の小さな誤差が解の要素の大きな誤差につながるという意味で、悪条件であることを意味する[24]

一般化

実数と複素数の行列に加えて、条件は「複素数四元数」とも呼ばれるテンプレート:Illの行列にも当てはまる[25]

より一般的な最小二乗問題を解くためには、すべての連続線型演算子に対して、2つのヒルベルト空間 H1,H2の間でムーア・ペンローズ逆演算子 A:H1H2 を定義できる。その際、上記の定義と同じ4つの条件を用いる。ここから、すべての連続線型演算子が連続線型擬似逆演算子を持つわけではないことがわかる[24]。擬似逆演算子を持つのは、値域が H2閉じている場合に限られる。

擬似逆行列の概念は、任意の対合自己同型を備えた任意の上の行列に存在する。このような一般的な前提では、特定の行列に対して常に擬似逆行列があるとは限らない。擬似逆行列が存在するための必要十分条件は、 rankA=rankA*A=rankAA* であり、ここで A*A の転置に対合演算を適用した結果を表す。擬似逆行列が存在するならば、それは一意に定まる[26]

:(記事の他の場所で検討されている対合とは対照的に)恒等対合を備えた複素数体を考える。この意味で擬似逆行列を持たない行列は存在するだろうか?行列 A=(1i) を考えると、 rankAA=1 である一方 rankAA=0 であることがわかる。したがって、行列 A には、この意味での擬似逆行列は存在しない。

抽象代数では、ムーア・ペンローズ逆行列は*-正則半群で定義できる。この抽象的な定義は、線型代数の定義と一致する。

関連項目

脚注

テンプレート:Reflist

参考文献

外部リンク