QR分解

提供: testwiki
2024年4月11日 (木) 02:52時点における126.114.83.232 (トーク)による版 (ハウスホルダー変換の使用)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

テンプレート:参照方法 テンプレート:ページ番号 テンプレート:翻訳直後 QR分解(キューアールぶんかい、テンプレート:Lang-en-short)とは、m × n 実行列 Aを、 m直交行列 Qm × n 上三角行列 R との積への分解により表すこと、またはそう表した表現をいうテンプレート:Sfn。このような分解は常に存在するテンプレート:Sfn

QR分解は線型最小二乗問題を解くために使用される。また、固有値問題の数値解法の1つであるQR法の基礎となっている。

定義

正方行列

すべての実正方行列 A直交行列Qと上三角行列(別名右三角行列)Rを用いて

A=QR

と分解できる。もしA正則ならば、Rの対角成分が正になるような因数分解は一意に定まる。

もしAが複素正方行列ならば、Qユニタリ行列 (つまりQ*Q=QQ*=I)となるような分解A = QRが存在する。

もしAn個の線形独立な列を持つなら、Qの最初のn列はA列空間正規直交基底をなす。より一般的に、1 ≤ k ≤ nの任意のkについて、Qの最初のk列はAの最初のk列の線型包をなす[1]。Aの任意の列kQの最初のk列にのみ依存するということは、Rが三角行列であることから明らかである[1]

矩形行列

より一般的に、m ≥ nである複素m×n行列Aを、m×mユニタリ行列Qm×n上三角行列Rに分解することができる。m×n上三角行列の下から(mn)行はすべてゼロであるため、Rや、RQ両方の分割を簡単に行うことができる。

A=QR=Q[R10]=[Q1,Q2][R10]=Q1R1

ここで、R1n×n上三角行列、0は(m − nn零行列、Q1m×n行列、Q2m×(m − n)行列で、Q1Q2は両方直交する列を持つ。

Q1R1テンプレート:HarvtxtはAの薄い(thin)QR分解と呼び、 Trefethen & Bauは軽減(reduced)QR分解と呼んでいる[1]。もしAが最大階数nであり、R1の対角成分を正にするならば、R1Q1は一意に定まる。しかし一般的にQ2はそうではない。R1A* A (Aが実行列の場合ATAに等しい)のコレスキー分解の上三角部分に等しい。

QL・RQ・LQ分解

同様に、Lを下(lower)三角行列として、QL、RQ、LQ分解を定義することができる。

QR分解の計算

QR分解を計算する手法として、グラム・シュミット分解ハウスホルダー変換ギブンス回転などがある。それぞれ利点と欠点がある。

グラム・シュミットの正規直交化法の使用

テンプレート:Details グラム・シュミットの正規直交化法を最大階数行列の列A=[𝒂1,,𝒂n]に適用することを考える。内積𝒗,𝒘=𝒗T𝒘 (複素ベクトルの場合 𝒗,𝒘=𝒗*𝒘)とする。

射影の定義より、

proj𝒖𝒂=𝒖,𝒂𝒖,𝒖𝒖

したがって、

𝒖1=𝒂1,𝒆1=𝒖1𝒖1𝒖2=𝒂2proj𝒖1𝒂2,𝒆2=𝒖2𝒖2𝒖3=𝒂3proj𝒖1𝒂3proj𝒖2𝒂3,𝒆3=𝒖3𝒖3𝒖k=𝒂kj=1k1proj𝒖j𝒂k,𝒆k=𝒖k𝒖k

ここで𝒂iを新しく計算された正規直交基底上に表すことができ、𝒆i,𝒂i=𝒖iであるから、

𝒂1=𝒆1,𝒂1𝒆1𝒂2=𝒆1,𝒂2𝒆1+𝒆2,𝒂2𝒆2𝒂3=𝒆1,𝒂3𝒆1+𝒆2,𝒂3𝒆2+𝒆3,𝒂3𝒆3𝒂k=j=1k𝒆j,𝒂k𝒆j

これは行列の形に書くことができ、

A=QR

ただし、

Q=[𝒆1,,𝒆n],
R=[𝒆1,𝒂1𝒆1,𝒂2𝒆1,𝒂30𝒆2,𝒂2𝒆2,𝒂300𝒆3,𝒂3]

A=[1251461676842441]

の分解を考える。

正規直交行列Qに対して、

QTQ=I

が常に成り立つから、グラム・シュミット法により以下の手順でQを計算できる。

U=[𝒖1𝒖2𝒖3]=[126958/561586/543033];Q=[𝒖1𝒖1𝒖2𝒖2𝒖3𝒖3]=[6/769/17558/1753/7158/1756/1752/76/3533/35]

したがって、

QTA=QTQR=R;R=QTA=[1421140175700035]

RQ分解との関係

RQ分解は行列Aを上三角行列R(別名右三角)と直交行列Qに変換する。QR分解との違いはこれらの行列の順番だけである。

QR分解はグラム・シュミットの正規直交化法をA最初の列から最後の列の順に適用する。

RQ分解はグラム・シュミットの正規直交化法をA最後の行から最初の行の順に適用する。

利点と欠点

グラム・シュミットの正規直交化法は本来、数値的に不安定である。射影の応用として直交化との幾何学的な類似性があるが、直交化自体は数値的な差異が生じやすい。しかしながら、実装が簡単という大きな利点があり、外部線形代数ライブラリが利用できない場合のプロトタイピングに便利なアルゴリズムである。

ハウスホルダー変換の使用

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

ハウスホルダー変換 (またはハウスホルダー鏡映)はベクトルを取り、平面または超平面に関する鏡映をする変換である。この演算はm×n行列A (m ≥ n)のQR変換の計算に使うことができる。

Qは一つの座標を除いたすべての座標が未知でもベクトルを鏡映するために使用できる。

スカラαに対して𝒙=|α|を満たすようなAの任意の実m次元列ベクトル𝒙を考える。もしこのアルゴリズムが浮動小数点演算を用いて実装されている場合、桁落ち(による誤差の拡大)を防ぐため、行列Aの最終的な上三角部分においてすべての要素が0である後のピボット座標xkに対し、α𝒙k番目の座標の逆符号とする。複素行列の場合には、

α=exp(iargxk)𝒙

テンプレート:Harvとして、さらに以下のQの導出において転置を共役転置に読み替えること。

ここで、𝒆1をベクトル(1 0 … 0)T、||·||をユークリッド距離Im×m単位行列とし、

𝒖=𝒙α𝒆1,𝒗=𝒖𝒖,Q=I2𝒗𝒗T

あるいは、Aが複素行列ならば、

Q=I2𝒗𝒗*

とおく。

Qm×mハウスホルダー行列であり、

Q𝒙=[α00]T 

これによりm×n行列Aを上三角の形に漸次変換できる。まず、xの最初の列を選んで得られるハウスホルダー行列Q1Aを乗算する。この結果、行列Q1Aは左の列が(最初の行を除き)ゼロになる。

Q1A=[α10A0]

この操作をA′ (Q1Aから最初の列と最初の行を除いたもの)に繰り返すと、ハウスホルダー行列Q2が得られる。Q2Q1より小さいということに注意すること。A′の代わりにQ1Aで計算したいため、A′を左上に拡張し、ひとつの1を埋める必要がある。つまり、一般的には

Qk=[Ik100Qk]

とする。 t回このプロセスを繰り返すと、t=min(m1,n)のとき、

R=QtQ2Q1A

は上三角行列である。そこで、

Q=Q1TQ2TQtT

とすると、 A=QRAのQR分解である。

この鏡映変換を用いた計算方法は先述のグラム・シュミット法よりも数値的安定性がある。

下表にサイズnの正方行列を仮定したときの、ハウスホルダー変換によるQR分解のk番目のステップにおける計算量を示す。

演算 k番目のステップにおける計算量
乗算 2(nk+1)2
加算 (nk+1)2+(nk+1)(nk)+2
除算 1
平方根 1

これらの数をn − 1ステップ(サイズnの正方行列であるため)まで合計して、このアルゴリズムの(浮動小数点演算の観点からの)複雑さは

23n3+n2+13n2=O(n3)

と表せる。

A=[1251461676842441]

の分解を考える。

まず、行列Aの最初の列、ベクトル𝒂1=[1264]Tを、𝒂1𝒆1=[100]Tに変換する鏡映を見つける必要がある。

今、

𝒖=𝒙α𝒆1,𝒗=𝒖𝒖

とする。

ここで、

α=14であり、𝒙=𝒂1=[1264]T

であるから、

𝒖=[264]T=[2][132]T and 𝒗=114[132]Tであり、
Q1=I21414[132][132]=I17[132396264]=[6/73/72/73/72/76/72/76/73/7]

である。

今、

Q1A=[14211404914016877]

を見てみると、すでにほぼ三角行列である。あとは(3, 2)要素を零にするだけでよい。

(1, 1)における小行列を取り、同じプロセスを

A=M11=[491416877]

に再び適用する。

先述のメソッドと同様にして、このプロセスの次のステップが正しく動作するために、1で直和を取ることにより、ハウスホルダー変換

Q2=[10007/2524/25024/257/25]

を得る。

今、

Q=Q1TQ2T=[6/769/17558/1753/7158/1756/1752/76/3533/35]

または、有効数字四桁で、

Q=Q1TQ2T=[0.85710.39430.33140.42860.90290.03430.28570.17140.9429]R=Q2Q1A=QTA=[1421140175700035]

を得た。

行列Qは直交行列であり、Rは上三角行列であるため、A = QRは求めるべきQR分解である。

利点と欠点

ハウスホルダー変換の使用は、R行列のゼロを生成するメカニズムに鏡映を利用しているため、最もシンプルでかつ数値的に安定したQR分解アルゴリズムである。しかしながら、新しい零要素を生成する毎回の鏡映変化において行列QR両方の行列全体を書き換えるため、ハウスホルダー変換は必要とするメモリ帯域幅が多く、並列化できない。(ただし鏡映変換のブロック化に基づくブロック化ハウスホルダ変換を使えばメモリ帯域幅への要求を低減することができる)

ギブンス回転の使用

QR分解はギブンス回転を使用しても計算できる。各回転により行列の亜対角要素がゼロになり、R行列を構成できる。すべてのギブンス回転を結合することで直交行列Qを構成できる。

実際には、行列全体を構成して乗算をするようなギブンス回転は行われない。代わりに、疎な要素を計算するような無駄な計算をしない、疎なギブンス行列乗算と同等なあるギブンス回転の手順が採られる。そのギブンス回転の手順は少しの非対角成分をゼロにするだけで済み、ハウスホルダー変換よりも容易に並列化できる。

A=[1251461676842441]

の分解を考える。

まず、左下隅の要素、𝒂31=4をゼロにする回転行列を構成する必要がある。この行列G1はギブンス回転で求めることができる。まずベクトル[124]を、X軸に沿って回転させる。このベクトルは角度θ=arctan[(4)12]を持つ。直交ギブンス回転行列G1を次のように作る。

G1=[cos(θ)0sin(θ)010sin(θ)0cos(θ)][0.9486800.316220100.3162200.94868]

ここでG1Aの結果は𝒂31要素がゼロである。

G1A[12.6491155.9723116.7600761676806.6407837.6311]

同様にしてそれぞれ非対角要素a21a32要素がゼロであるようなギブンス行列G2G3を構成し、三角行列Rを構成する。直交行列QTはすべてのギブンス行列の積QT=G3G2G1で表される。したがって、G3G2G1A=QTA=Rであり、QR分解はA=QRである。

利点と欠点

ギブンス回転によるQR分解は、アルゴリズムを完全に動かすのに必要な行の順序を決定するのが簡単ではないため、実装に最も手間がかかる。しかしながら、新しいゼロ要素aijがゼロになる予定の要素の行(i)とその上の行(j)にしか影響しないという特筆すべき利点がある。これにより、ギブンス回転アルゴリズムはハウスホルダー変換手法よりも帯域幅効率が良く、容易に並列化できる。

行列式や固有値の積との関係

QR分解を正方行列の行列式の絶対値を求めるのに利用できる。ある行列がA=QRと分解できるとする。このとき

det(A)=det(Q)det(R)

である。

Qはユニタリであるため、|det(Q)|=1である。したがって、riiRの対角要素とすると、

|det(A)|=|det(R)|=|irii|

となる。

さらに、行列式は固有値の積に等しいため、λiAの固有値とすると、

|irii|=|iλi|

となる。

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

非正方行列AのQR分解を

A=Q[RO],Q*Q=I

とする。ただし、Oは零行列、Qはユニタリ行列。

特異値分解と行列式の性質から、σiAの特異値として、

|irii|=iσi

ARの特異値は同じであるが、複素固有値が異なる場合があることに注意すること。しかしながら、Aが正方ならば、下記は真である。

iσi=|iλi|

結論として、QR分解を使うことによって行列の固有値や特異値の積を効率よく計算することができる。

列のピボット

ピボットQRは列のピボット[2]の新しいステップにおいて、それぞれ初めに残りの列で最も大きいものを取るという点で、通常のグラム・シュミット法とは異なっている。したがって、置換行列Pを次のように導入する。

AP=QRA=QRPT

列のピボットはAが(ほぼ)階数落ちである、またはその疑いがある場合に便利である。また、数値的精度を向上させることもできる。通常、Rの対角成分が非増加、つまり|r11||r22||rnn|となるようにPを選ぶ。この手段により特異値分解よりも低い計算コストでAの(数値的な)階数を求めることができ、いわゆるテンプレート:仮リンクの基礎となっている。

線形逆問題への利用

行列の逆行列を直接求めるのに比べ、QR分解を利用した逆問題の解法は、条件数が減少していることからも分かるように、数値的に安定している[3]

次元がm×nで階数がmであるような行列Aに対して、劣決定(m<n)線形問題Ax=bを解くためには、まずAの転置行列のQR分解AT=QRを求める。ただし、Qは直交行列(つまり、QT=Q1)であり、RはR=[R10]という特殊な形である。ここで、R1m×m正方右三角行列、零行列は(nm)×m次元である。計算すると、この逆問題の解を次のように表すことができる。x=Q[(R1T)1b0]

ここで、R11ガウスの消去法で計算でき、(R1T)1bテンプレート:仮リンクを用いることで直接計算できる。後者の手法の方が数値的精度が高く、計算量も少ないという利点がある。

ノルムAx^bを最小にするような過決定(mn)問題Ax=bの解x^を求めるためには、まずAのQR分解A=QRを求める。Q1を直交行列Q全体のうち最初のn列を含むm×n行列、R1を先述の通りに置くと、この問題の解はx^=R11(Q1Tb)と表せる。劣決定の場合と同様に、R1の逆行列を直接計算しなくても、テンプレート:仮リンクを用いることで早く正確にx^を求めることができる。(Q1R1は数値ライブラリによっては高速な(economic)QR分解として実装されている。)

一般化

テンプレート:仮リンクはQR分解を半単純リー群に一般化している。

脚注

テンプレート:脚注ヘルプ テンプレート:Reflist

参考文献

和文

テンプレート:Refbegin

テンプレート:Refend

英文

テンプレート:Refbegin

テンプレート:Refend

関連項目

外部リンク

テンプレート:Linear algebra

  1. 1.0 1.1 1.2 L. N. Trefethen and D. Bau, Numerical Linear Algebra (SIAM, 1997).
  2. テンプレート:Cite book
  3. Parker, Geophysical Inverse Theory, Ch1.13.