QR分解

線形代数においてQR 分解(QR 分解またはQU 分解とも呼ばれる) は、行列Aを直交行列Q上三角行列RA  =  QR分解することです。QR 分解は、線形最小二乗(LLS) 問題を解くためによく使用され、特定の固有値アルゴリズムである QRアルゴリズムの基礎となります

事例と定義

正方行列

任意の実正方行列 Aは次のように分解できる。

ここで、Q直交行列(列は直交 単位ベクトル、つまりであり、Rは上三角行列(直角三角行列とも呼ばれる)である。A逆行列 である場合、 Rの対角要素が正であることを条件に、因数分解は一意となる。

代わりにAが複素正方行列である場合、分解A = QRが存在します。ここで、Qはユニタリ行列です(つまり共役転置です )。

A がn 個の線形独立な列を持つ場合、 Q最初のn列はA列空間直交基底を形成する。より一般的には、 Q最初のk列は、任意の1 ≤ knに対して、 Aの最初のk列のスパンの直交基底を形成する[1] Aの任意のk列がQの最初のk列のみに依存する という事実は、Rの三角形形式に対応する [1]

長方形行列

より一般的には、 mnの複素m × n行列Aを、m × mユニタリ行列Qm × n上三角行列Rの積として因数分解することができます。m × n上三角行列の一番下の行(mn)はすべてゼロで構成されるため、 R、またはRQの両方分割することが有用な場合が多くあります

ここで、R 1n × n の上三角行列、0 は( mnn の 零行列Q 1m × nQ 2m ×( mn )であり、Q 1Q 2はどちらも直交列を持ちます。

Golub & Van Loan (1996, §5.2) はQ 1 R 1をA薄いQR 分解と呼び、Trefethen と Bau はこれを簡約 QR 分解と呼んでいます。[1] Aがフルランクnで、 R 1の対角要素が正であることを要求すると、 R 1Q 1 は一意ですが、一般にQ 2 は一意ではありません。R 1は、 A * AAが実数の場合はA T A )のコレスキー分解の上三角因子に等しくなります

QL、RQ、LQ分解

同様に、 Lを三角行列として、QL、RQ、LQ 分解を定義することもできます

QR分解の計算

QR分解を実際に計算する方法はいくつかあります。例えば、グラム・シュミット過程ハウスホルダー変換ギブンズ回転などです。それぞれに長所と短所があります。

グラム・シュミット法の使用

内積を持つ複素数の場合は または )完全な列ランク行列 の列にグラム・シュミット過程を適用すること考えます。

投影を定義します:

それから:

新しく計算された直交基底上の s を次のように表すことができます。

ここでこれは行列形式で書くことができます。

どこ:

そして

次の分解を考えてみましょう

直交行列には という性質があることを思い出してください

次に、グラム・シュミットの法則を使って次のように計算します。

したがって、

RQ分解との関係

RQ分解は、行列Aを上三角行列R(直角三角行列とも呼ばれる)と直交行列Qの積に変換します。QR分解との唯一の違いは、これらの行列の順序です。

QR 分解は、 Aの最初の列から始まる列のグラム・シュミット直交化です。

RQ分解は、 Aの最後の行から始まる行のグラム・シュミット直交化です。

メリットとデメリット

グラム・シュミット過程は本質的に数値的に不安定です。投影法の適用は直交化と幾何学的に類似しているように見えますが、直交化自体は数値誤差が生じやすい傾向があります。大きな利点は実装の容易さです。

世帯主の反射を利用する

QR分解におけるハウスホルダー反射:目標は、ベクトル を と同じ長さで と共線的なベクトルに変換する線形変換を見つけることです。直交射影(グラム・シュミット射影)を使用することもできますが、ベクトルと が直交に近い場合、数値的に不安定になります。代わりに、ハウスホルダー反射は点線(の間の角度を二等分するように選択)を通ります。この変換の最大角度は45度です。

ハウスホルダー反射(またはハウスホルダー変換)は、ベクトルを平面または超平面に反射させる変換です。この演算を用いて、 mnmn列行列QR分解を計算できます

Q は、1 つの座標以外のすべての座標が消えるようにベクトルを反射するために使用できます。

を任意の実数m次元列ベクトルとし、スカラーαに対してとなるものとする。アルゴリズムが浮動小数点演算を用いて実装される場合、αはのk番目の座標と逆の符号を取るべきである。ここで、 αは行列A最終的な上三角形式において、それより後のすべての要素が0となるピボット座標となるべきであり、これにより有意性の低下が避けられる。複素数の場合、[2]と設定する。

そして、以下のQの構築では、転置を共役転置に置き換えます

そして、ベクトル[1 0 ⋯ 0] T|| · ||ユークリッドノルムm × mの単位行列であり、

または、複雑な 場合

はmm列のハウスホルダー行列であり、対称かつ直交行列(複素数の場合はエルミートかつユニタリ行列)である。

これは、 mn列の行列Aを上三角形式に段階的に変換するのに使用できます。まず、行列Aに、行列の最初の列xを選択した際に得られるハウスホルダー行列Q 1を乗じます。これにより、左列(最初の行を除く)がゼロとなる行列Q 1 Aが得られます。

これをA ′ (Q 1 Aから最初の行と最初の列を削除したもの)に対して繰り返すと、ハウスホルダー行列Q2が得られます。Q ′ 2 は Q 1 よりも小さいことに注意してください実際AではなくQ 1 Aに作用させたいので、左上に拡張して 1 を埋める必要があります。つまり、一般的には次のように表すことができます。

このプロセスを繰り返す

は上三角行列である。したがって、

は の QR 分解です

この方法は、上記のグラム・シュミット法よりも数値的に安定しています。

数値テストでは、計算された因子とが機械精度でを満たす 。また、直交性は維持される: 。しかし、 と の精度は条件数とともに低下する:

条件付きの例()の場合:

悪条件テスト()では: [3]

次の表は、サイズがnの正方行列であると仮定して、ハウスホルダー変換による QR 分解のk番目のステップでの演算数を示しています

手術k番目のステップにおける操作の数
掛け算
追加事項
分割
平方根

これらの数値をn − 1ステップ(サイズnの正方行列の場合)にわたって合計すると、アルゴリズムの複雑さ(浮動小数点乗算の観点から)は次のように表される。

分解を計算してみましょう

まず、行列Aの最初の列であるベクトル変換する反射を見つける必要があります

今、

そして

ここ、

そして

したがって

そしてそして

次に観察します:

つまり、ほぼ三角行列が出来上がっていることになります。(3, 2)の要素をゼロにするだけで済みます。

(1, 1)マイナーを取り、このプロセスを再度適用して

上記と同じ方法で、ハウスホルダー変換の行列を得る。

1 との直和を実行して、プロセスの次のステップが適切に機能することを確認します。

さて、私たちは

あるいは、小数点4桁で、

行列Qは直交行列であり、Rは上三角行列であるため、必要な QR 分解はA = QRです。

メリットとデメリット

ハウスホルダー変換は、R行列に零点を生成するメカニズムとして反射を利用するため、数値的に安定したQR分解アルゴリズムの中で本質的に最も単純なものです。しかし、ハウスホルダー反射アルゴリズムは帯域幅を大量に消費し、並列化が困難です。これは、新しい零点を生成する反射ごとに、 Q行列R行列の両方の行列全体が変化するためです

世帯主QRの並列実装

ハウスホルダーQR法は、TSQRアルゴリズム( Tall Skinny QRの略)などのアルゴリズムと並列に実装できます。このアルゴリズムは、行列Am >> nの場合に適用できます[4]このアルゴリズムは、バイナリ縮小木を用いて、フォワードパスの各ノードにおけるローカルハウスホルダーQR分解を計算し、バックワードパスでQ行列を再構成します。バイナリ木構造は、プロセッサ間の通信量を削減することで性能を向上させることを目的としています。

ギブンズ回転の使用

QR分解は、一連のギブンズ回転によっても計算できます。各回転は行列の下対角成分をゼロにし、R行列を形成します。すべてのギブンズ回転を連結すると、直交Q行列が形成されます。

実際には、ギブンズ回転は、行列全体を構築して行列乗算を行うことによって実行されるわけではありません。代わりに、スパース要素の処理という余分な作業なしに、スパースギブンズ行列乗算と同等の処理を実行するギブンズ回転手順が使用されます。ギブンズ回転手順は、比較的少数の非対角要素をゼロにする必要がある状況で有用であり、ハウスホルダー変換よりも簡単に並列化できます。

分解を計算してみましょう

まず、左下要素 をゼロにする回転行列を作成する必要があります この行列はギブンズ回転法を用いて作成し、行列 と呼びます。まず、ベクトル を回転させてXに沿うようにします。このベクトルの角度は です 直交ギブンズ回転行列 を作成します

そして、今の結果では、要素にゼロが存在します

同様にギブンズ行列とを形成することができ、これら行列は下対角要素と をゼロにし三角行列 を形成します 直交行列 は、すべてのギブンズ行列 の積から形成されます したがって となり QR分解は となります

メリットとデメリット

ギブンズ回転によるQR分解は、実装が最も複雑です。アルゴリズムを最大限に活用するために必要な行の順序を決定するのは容易ではないためです。しかし、この方法には大きな利点があります。新しいゼロ要素は、ゼロにする要素がある行 ( i ) とその上の行 ( j ) にのみ影響します。これにより、ギブンズ回転アルゴリズムは、ハウスホルダー反射法よりも帯域幅効率が高く、並列化が容易です。

行列式または固有値の積との関連

QR分解を用いて正方行列の行列式を求めることができます。行列を次のように分解するとします。

となるように選ぶことができる。したがって、

ここで、は の対角要素である。さらに、行列式は固有値の積に等しいので、

ここでは の固有値です

非正方複素行列の QR 分解の定義を導入し、固有値を特異値に置き換えることで、上記の性質を非正方複素行列に拡張できます。

非正方行列Aの QR 分解から始めます。

ここで、 は零行列、はユニタリ行列です。

特異値分解(SVD)と行列の行列式の性質から、

ここで、は の特異値です

との特異値は同じであるが、複素固有値は異なる場合があることに注意する。しかし、Aが正方行列の場合、

したがって、QR 分解は、行列の固有値または特異値の積を効率的に計算するために使用できます。

列ピボット

ピボットQR法は、通常のグラム・シュミット法とは異なり、各ステップの開始時に残っている最大の列(列ピボット)を取り、それによって置換行列Pを導入する。 [5]

列ピボットは、 Aが(ほぼ)ランク落ちである、またはランク落ちの疑いがある場合に有用です。また、数値精度を向上させることもできます。Pは通常、 Rの対角要素が非増加となるように選択されます: 。これは、特異値分解よりも低い計算コストでAの(数値的)ランクを求めるために使用でき、いわゆるランク開示QRアルゴリズムの基礎となります。

線形逆問題の解法に用いる

直接行列逆行列解と比較すると、QR分解を用いた逆行列解は条件数が減少することからもわかるように数値的に安定している。[6]

行列が次元、階数である劣決定( )線型問題を解くにはまず の転置行列 の QR 分解を求めますここQは直交行列 (つまり) であり、 R特殊な形式 です。ここではは正方三角行列で、零行列の次元は です。代数計算を行うと、逆問題の解は次のように表せることが示されます。ここで、 はガウスの消去法求めるか、前方代入によって直接計算することができます。後者の手法の方が数値精度が高く、計算量が少なくて済みます。

ノルム を最小化する過剰決定問題( )の解を求めるにはまず のQR分解を求めます。この解は表すことができますここでは完全な直交基底の最初の列を含む行列でありは前述と同じです。劣決定問題と同様に、を明示的に逆行列化することなく、後退代入法を使用してこれを迅速かつ正確に求めることができます (数値計算ライブラリによって「経済的な」QR分解として提供されることがよくあります。)

一般化

岩澤分解は、 QR 分解を半単純リー群に一般化します。

参照

参考文献

  1. ^ abc Trefethen, Lloyd N. ; Bau, David III (1997).数値線形代数. フィラデルフィア, PA: Society for Industrial and Applied Mathematics . ISBN 978-0-898713-61-9
  2. ^ Stoer, Josef ; Bulirsch, Roland (2002) 『数値解析入門』(第3版)、Springer、p. 225、ISBN 0-387-95452-X
  3. ^ Holmes, Mark H. (2023). 『科学計算とデータ分析入門』第2版. Springer. ISBN 978-3-031-22429-4
  4. ^ デメル、ジェームズグリゴリ、ローラ(2008年6月12日)「通信最適化並列および逐次QRおよびLU因数分解:理論と実践」arXiv0806.2159 [cs.NA]。
  5. ^ ストラング、ギルバート(2019). 『線形代数とデータからの学習』(第1版). ウェルズリー: ウェルズリー・ケンブリッジ・プレス. p. 143. ISBN 978-0-692-19638-0
  6. ^ パーカー、ロバート・L. (1994).地球物理学的逆理論. プリンストン、ニュージャージー州: プリンストン大学出版局. セクション1.13. ISBN 978-0-691-20683-7. OCLC  1134769155.

さらに読む

  • オンライン行列計算機は行列の QR 分解を実行します。
  • LAPACKユーザーマニュアルには、QR分解を計算するためのサブルーチンの詳細が記載されています。
  • Mathematicaのユーザーマニュアルには、QR分解を計算するルーチンの詳細と例が記載されています。
  • ALGLIB には、LAPACK の C++、C#、Delphi などへの部分的な移植が含まれています。
  • Eigen::QR には、QR 分解の C++ 実装が含まれています。
Retrieved from "https://en.wikipedia.org/w/index.php?title=QR_decomposition&oldid=1319759113"