Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo

1

はじめてのKrylov部分空間法
前原 貴憲 (@tmaehara)

2

線型計算の主なタスク
• 線型方程式(linear solver)
Ax = b
• 固有値問題(eigenvalue problem)
Ax = λx
Krylov部分空間法:現代線型計算の基本手法
• 行列・ベクトル積が効率的に計算可能な場合に強い
(eg., Aが疎行列,関数として与えられる,etc)
• 綺麗な理論評価 ⇒ 収束改善法などが明確
1/ 9

3

Krylov部分空間Kd [Krylov 1931]
Kd(A, b) := span{b, Ab, A2
b, . . . , Ad−1
b}
Krylov部分空間法とは:
1. 問題を小さい次元のKrylov部分空間に射影して
2. そちらで解いた解を元の空間に引き戻す手法の総称
主な特徴:
• 次元を増やすと誤差減(反復法的側面)
• 十分大きな次元で厳密解(直接法的側面)
• 実用的には誤差の累積が問題(cf., CG法冬の時代)
– 前処理・リスタートなどと組み合わせる
2/ 9

4

行列多項式による誤差・残差評価
Kd(A, b) := span{b, Ab, A2
b, . . . , Ad−1
b}
= {p(A)b : pはd − 1次多項式}
誤差・残差は行列多項式p(A)の解析で見積もる
適用例(逆行列): d反復目まででの誤差が小さい
⇐⇒ A−1
がd次多項式p(A)で近似しやすい
⇐⇒ (λi, 1/λi)がd次多項式で近似しやすい
slow fast
3/ 9

5

Krylov空間への射影
• Arnoldi反復(一般行列)
• Lanczos反復(対称行列)
(Arnoldi反復の特殊ケース)
4/ 9

6

Arnoldi反復
{b, Ab, A2
b, . . .}のGram-Schmidt直交化(QR分解)
⇒ AQd = QdHd + rde⊤
d (Arnoldi関係式)
(∥rd∥が十分小さくなったら打ち切る)
• Qd:直交(Kd(A, b)の正規直交基底を並べたもの)
• Hd:Hessenberg形(上三角+下副対角)
※A対称のとき自動的にH 三重対角(Lanczos反復)
○ Hessenberg形なので各種計算が簡単
× Gram-Schmidtなので数値誤差が累積する
5/ 9

7

Krylov空間法の具体例
線型方程式:GMRES / 固有値問題:Arnoldi法
射影・引戻し・前処理の組み合わせで大量の手法が存在
• 基本的な性質はどれも類似
• 細かい部分の良し悪しは問題依存
⇒ 問題に応じて手法選択が必要
• 紹介する2つはベースライン;最初に試すべき手法
6/ 9

8

線型方程式:GMRES (Generalized Minimum RESidual)
Step 0. 初期解x0 設定.r0 ← Ax0 − b
Step 1. AをKd(A, r0)に射影:A ≃ V ⊤
HV
Step 2. 残差最小解を計算:min ∥H ˜x − ˜b∥
Step 3. 引き戻す:x = V ⊤
˜x
収束定理:Aが対角化可能(S−1
AS = Λ)のとき
∥rd∥
∥r0∥
≤ κ(S) min
p
max
λi
|p(λi)|
※Step 2 はQR分解で可能(Hessenberg形なので軽い)
7/ 9

9

固有値問題:Arnoldi法
Step 0. 適当なx0 設定
Step 1. AをKd(A, x0)に射影:A ≃ V ⊤
HV
Step 2. H の固有対(˜λi, ˜ui)を計算(QR法等)
Step 3. 引き戻す:(˜λi, V ⊤
˜ui)
収束定理:Aが適当な条件を満たすとき
∥˜u − u∥ = O(κ(A) min
p
max
λi
|p(λi)|)
(雑な評価,H ˜u = λuとして見積もる)
※外側の固有値から順番に収束していく
8/ 9

10

おまけ:線型方程式の解法選択
• CG, CGS, CGR, PCG, BiCG, BiCGStab, QMR, TFQMR,
MINRES, GMRES, LGMRES, CAGMRES, LSQR,
SYMMLQ, Orthomin, . . .
• 扱う問題に応じて手法の振る舞いが違う
• 問題を固定するとマイナー改良で既存手法に勝てる
⇒ 毎月数個以上新しいKrylov系手法が登場
(行列計算の専門家でもフォローするのは不可能)
• 非専門家が使う側の心得
– 複数の手法で検証(CG系 + GMRES系)
– 複数の前処理(小規模問題で固有値分布を観察する)
9/ 9

More Related Content

はじめてのKrylov部分空間法

  • 2. 線型計算の主なタスク • 線型方程式(linear solver) Ax = b • 固有値問題(eigenvalue problem) Ax = λx Krylov部分空間法:現代線型計算の基本手法 • 行列・ベクトル積が効率的に計算可能な場合に強い (eg., Aが疎行列,関数として与えられる,etc) • 綺麗な理論評価 ⇒ 収束改善法などが明確 1/ 9
  • 3. Krylov部分空間Kd [Krylov 1931] Kd(A, b) := span{b, Ab, A2 b, . . . , Ad−1 b} Krylov部分空間法とは: 1. 問題を小さい次元のKrylov部分空間に射影して 2. そちらで解いた解を元の空間に引き戻す手法の総称 主な特徴: • 次元を増やすと誤差減(反復法的側面) • 十分大きな次元で厳密解(直接法的側面) • 実用的には誤差の累積が問題(cf., CG法冬の時代) – 前処理・リスタートなどと組み合わせる 2/ 9
  • 4. 行列多項式による誤差・残差評価 Kd(A, b) := span{b, Ab, A2 b, . . . , Ad−1 b} = {p(A)b : pはd − 1次多項式} 誤差・残差は行列多項式p(A)の解析で見積もる 適用例(逆行列): d反復目まででの誤差が小さい ⇐⇒ A−1 がd次多項式p(A)で近似しやすい ⇐⇒ (λi, 1/λi)がd次多項式で近似しやすい slow fast 3/ 9
  • 6. Arnoldi反復 {b, Ab, A2 b, . . .}のGram-Schmidt直交化(QR分解) ⇒ AQd = QdHd + rde⊤ d (Arnoldi関係式) (∥rd∥が十分小さくなったら打ち切る) • Qd:直交(Kd(A, b)の正規直交基底を並べたもの) • Hd:Hessenberg形(上三角+下副対角) ※A対称のとき自動的にH 三重対角(Lanczos反復) ○ Hessenberg形なので各種計算が簡単 × Gram-Schmidtなので数値誤差が累積する 5/ 9
  • 7. Krylov空間法の具体例 線型方程式:GMRES / 固有値問題:Arnoldi法 射影・引戻し・前処理の組み合わせで大量の手法が存在 • 基本的な性質はどれも類似 • 細かい部分の良し悪しは問題依存 ⇒ 問題に応じて手法選択が必要 • 紹介する2つはベースライン;最初に試すべき手法 6/ 9
  • 8. 線型方程式:GMRES (Generalized Minimum RESidual) Step 0. 初期解x0 設定.r0 ← Ax0 − b Step 1. AをKd(A, r0)に射影:A ≃ V ⊤ HV Step 2. 残差最小解を計算:min ∥H ˜x − ˜b∥ Step 3. 引き戻す:x = V ⊤ ˜x 収束定理:Aが対角化可能(S−1 AS = Λ)のとき ∥rd∥ ∥r0∥ ≤ κ(S) min p max λi |p(λi)| ※Step 2 はQR分解で可能(Hessenberg形なので軽い) 7/ 9
  • 9. 固有値問題:Arnoldi法 Step 0. 適当なx0 設定 Step 1. AをKd(A, x0)に射影:A ≃ V ⊤ HV Step 2. H の固有対(˜λi, ˜ui)を計算(QR法等) Step 3. 引き戻す:(˜λi, V ⊤ ˜ui) 収束定理:Aが適当な条件を満たすとき ∥˜u − u∥ = O(κ(A) min p max λi |p(λi)|) (雑な評価,H ˜u = λuとして見積もる) ※外側の固有値から順番に収束していく 8/ 9
  • 10. おまけ:線型方程式の解法選択 • CG, CGS, CGR, PCG, BiCG, BiCGStab, QMR, TFQMR, MINRES, GMRES, LGMRES, CAGMRES, LSQR, SYMMLQ, Orthomin, . . . • 扱う問題に応じて手法の振る舞いが違う • 問題を固定するとマイナー改良で既存手法に勝てる ⇒ 毎月数個以上新しいKrylov系手法が登場 (行列計算の専門家でもフォローするのは不可能) • 非専門家が使う側の心得 – 複数の手法で検証(CG系 + GMRES系) – 複数の前処理(小規模問題で固有値分布を観察する) 9/ 9