ほぼ特異なシステムに適用される反復線形ソルバーの停止基準


16

検討Ax=bとの固有値があることを意味し、ほぼ特異の非常に小さいです。反復法の通常の停止基準は、残差おり、が反復数のときに反復が停止できると見なします。しかし、検討しているケースでは、小さな固有値\ lambda_0に関連付けられた固有空間に大きな誤差vが存在する可能性があり、小さな残留Av = \ lambda_0vが得られます。初期残差r_0を仮定しますAλ0Arn:=bAxnrn/r0<tolnvλ0Av=λ0vr0が大きい場合、\ | r_n \ | / \ | r_0 \ | <tolで停止する可能性rn/r0<tolがありますが、エラーxnxはまだ大きいです。この場合のより良いエラーインジケータは何ですか?あるxnxn1良い候補者ですか?


3
「ほぼ単数形」の定義について考えてください。行列Iϵϵ1Iの単位行列)は非常に小さな固有値を持ちますが、任意の行列が可能な限り特異ではありません。
デビッドケッチャソン

1
また、||rn/r0||間違った表記のようです。||rn||/||r0||より典型的ですか?
ビル・バルト

はい、あなたは正しい、ビル!この間違いを修正します。
ホイ張

1
どうですか ?そして、あなたのアルゴリズムは正確に何ですか?bAx/b
-shuhalo

2
補遺:次の論文は、少なくともCGを使用している場合、心配している悪条件のシステムをかなり解決していると思います。DOI:10.1002 / nla.244
shuhalo

回答:


13

連続する反復の違いを使用して停止基準を定義しないでください。これは、収束の停滞を誤診します。ほとんどの非対称行列の反復は単調ではなく、再起動を伴わない正確な算術のGMRESでさえ、突然収束する前に任意の反復回数(行列の次元まで)停滞することがあります。Nachtigal、Reddy、およびTrefethen(1993)の例を参照してください。

収束を定義するより良い方法

通常、残差のサイズよりもソリューションの精度に関心があります。具体的には、近似解と厳密解xの差が||を満たすことを保証したい場合がありますx nx | < c(ユーザー指定のcの場合)||のようなx nを見つけることでこれを達成できることがわかりますA x nb | < C εここでεは最小特異値であるAに起因します、xnx

|xnx|<c
cxn
|Axnb|<cϵ
ϵA

|xnx|=|A1A(xnx)|1ϵ|AxnAx|=1ϵ|Axnb|<1ϵcϵ=c

ここで、我々は、使用している最大の特異値であり、A - 1(第2ライン)とそのXが正確に解決A X = B(3行目)。1/ϵA1xAx=b

最小特異値の推定ϵ

通常、最小特異値の正確​​な推定値は問題から直接得られませんが、共役勾配またはGMRES反復の副産物として推定できます。最大固有値と特異値の推定値は、通常は数回の反復の後にはかなり良いですが、最小の固有値/特異値の正確な推定することを注意収束に達すると、通常は得られます。収束する前に、推定値は通常、真の値よりも大幅に大きくなります。これは、あなたが正しい許容範囲を定義することができます前に、あなたが実際に方程式を解く必要があることを示唆しているのC εを。ユーザー提供の精度cを取る自動収束許容値ϵcϵcソリューションや見積りのための最小特異値の推定のでクリロフ法の現在の状態とは、あまりにも早く収束する可能性があるεが真の値よりもはるかに大きかったです。ϵϵ

ノート

  1. 上記の説明は、左前処理済み演算子P 1 Aと前処理済み残差P 1A x nb )で置き換えるか、右前処理済み演算子A P 1とエラーP x nx P 1の場合AP1AP1AバツnbAP1PバツnバツP1は、適切な前提条件です。前提条件演算子は、条件がよくなります。左前処理の場合、これは、前処理された残差を小さくできるが、真の残差は小さくできないことを意味します。正しい前提条件のために、で簡単に小さく、しかし、真のエラー| x nx | ではないかもしれません。これは、エラーを小さくするのに左前提条件が優れているのに対し、残差を小さくする(および不安定な前提条件をデバッグする)には右前提条件が優れている理由を説明しています。|Pバツnバツ||バツnバツ|
  2. GMRESとCGによって最小化された規範の詳細については、この回答を参照してください。
  3. 極値特異値の推定値は-ksp_monitor_singular_value、PETScプログラムを使用して監視できます。コードから特異値を計算するには、KSPComputeExtremeSingularValues()を参照してください。
  4. GMRESを使用して特異値を推定する場合、再起動を使用しないことが重要です(たとえば-ksp_gmres_restart 1000、PETScで)。

1
''また、前処理された演算子に置き換えられたAで動作します ''-ただし、それは、P - 1 Aが使用される場合、前処理された残差のみ適用されます。前処理エラーにP - 1 δ X場合A P - 1に使用されます。P1rP1AP1δxAP1
アーノルドノイマイアー

1
良い点は、答えを編集したことです。右予め調整ケースはあなたが制御与えることに留意されたい(適用前処理巻き戻し、P - 1)は、典型的にエラーに低エネルギーモードを増幅します。PδバツP1
ジェドブラウン

6

この問題を見るもう1つの方法は、離散逆問題、つまりまたはmin | | A x b | | 2 Aは非常に悪条件(すなわち、最初と最後の特異値との比σ 1 / σ N大きいです)。Ax=bmin||Axb||2Aσ1/σn

ここでは、停止基準を選択するためのいくつかの方法があり、反復方法については、すでに利用可能な数量のみを含むため、L曲線基準をお勧めします(免責事項:アドバイザーがこの方法を開拓したので、間違いなくそれ)。私はこれを反復法で成功裏に使用しました。

アイデアは残差ノルム監視することであるおよびソリューションノルムη K = | | x k | | 2、ここでx kk番目の反復です。繰り返しながら、これはloglog(rho、eta)プロットにLの形を描き始め、そのLの角の点が最適な選択です。ρk=||Axkb||2ηk=||xk||2xkk

これは、あなたはあなたが(すなわちの勾配を見コーナー経過しているときに目を維持基準実装することができます)、その後、コーナーに位置していた反復を選択してください。(ρk,ηk)

私がした方法は、それが最後の20回の反復を格納関与し、勾配もしB S ログη K- ログη K - 120回の連続する反復のためにいくつかの閾値よりも大きかった、私は曲線の垂直部分にあったと私はコーナーを通過したことをことを知っていました。次に、ソリューションで最初の反復(20回前の反復)を解きました。abs(log(ηk)log(ηk1)log(ρk)log(ρk1))

コーナーを見つけるためのより詳細な方法もあります。これらはより効果的ですが、かなりの数の反復を保存する必要があります。少し遊んでみてください。matlabを使用している場合は、この一部を実装するツールボックスRegularization Toolsを使用できます(具体的には、「コーナー」機能が適用可能です)。

このアプローチは、関連する余分な計算時間が非常に短いため、大規模な問題に特に適していることに注意してください。


1
どうもありがとう!それで、loglog(rho、eta)プロットでは、L曲線の右から始まり、Lの一番上で終わりますか?私はこの基準の背後にある原理を知らないだけです。Lカーブのように常に動作する理由と、コーナーを選択する理由を説明できますか?
ホイ張

||Aバツb||2=||e||2ebeバツact=b+e。詳細な分析については、ハンセン、PC、およびオレアリー、DP(1993)を参照してください。離散的な不適切な問題の正則化におけるL曲線の使用。SIAM Journal on Scientific Computing、14。投稿を少し更新しただけです。
OscarB

4
@HuiZhang:常に L ではない (そしてもちろん、複雑な形状が現れるかもしれません。)
アーノルドノイマイアー

L曲線は、独自の解決策が必要な悪条件の問題に適用されますか?つまり、Ax = bという問題に興味があります。ここで、bは「正確に」既知であり、Aはほぼ特異ですが、技術的には可逆です。GMRESのようなものを使用する場合、特に最初の反復の後でも、xの現在の推定の基準は時間とともにあまり変化しないように思えます。不適切な問題にはユニーク/有効な解決策がないため、Lカーブの垂直部分が発生するように思えます。この縦の特徴は、すべての悪条件の問題に存在するでしょうか?
nukeguy

通常、解法の数値誤差により|| Ax-b ||が生じるため、ある時点でこのような垂直線に到達します。減少していません。ただし、このようなノイズのない問題では、曲線が常にL字に見えるとは限らないので、通常いくつかのコーナーを選択できます。上記のコメントで参照した論文では、ノイズのないシナリオについて簡単に説明しています。
OscarB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.