kensuke aihara

40
クリロフ部分空間法における丸め誤差の 収束性への影響 相原 研輔 東京理科大学 2017/1/27 20回数理人セミナー @ 早稲田大学

Upload: suurist

Post on 17-Mar-2018

169 views

Category:

Science


0 download

TRANSCRIPT

クリロフ部分空間法における丸め誤差の収束性への影響

相原研輔

東京理科大学

2017/1/27

第20回数理人セミナー@ 早稲田大学

自己紹介

相原研輔(Kensuke AIHARA)

• 東京理科大学理学部第一部数理情報科学科助教

➔来年度から「応用数学科」へ改名

• 学位:博士(理学) in 2014

研究分野

• 数値解析 / 数値線形代数– 大規模連立一次方程式に対する反復法

– 最小二乗問題に対する数値解法 with Prof. Hosoda and Mr. Ozawa

– 多様体上の最適化への数値線形代数の応用 with Dr. Sato

– 構造を持つ非対称行列の固有値・固有ベクトル計算 with Dr. Fukuda

• ざっくりいえば線形計算における高速・高精度なアルゴリズムの開発と改良

2017/1/27 第20回数理人セミナー@ 早稲田大学 1 / 39

発表の流れ

はじめに

• 連立一次方程式とクリロフ部分空間法

丸め誤差について

• 収束速度と近似解精度

収束性の改善

• 誤差解析と漸化式の修正

数値実験

まとめ

2017/1/27 第20回数理人セミナー@ 早稲田大学 2 / 39

はじめに

正則行列を係数に持つ連立一次方程式

• 厳密解は だが・・・

行列の特徴

• 大規模(数万~数千万次)

• 疎(成分のほとんどは零)

➔コンピュータによる数値計算が不可欠!

応用分野

• 流体力学,電磁場解析,熱問題,画像復元,etc…

2017/1/27 第20回数理人セミナー@ 早稲田大学 3 / 39

連立一次方程式の出現例

(自然)現象などに対する数値シミュ―レション

2017/1/27 第20回数理人セミナー@ 早稲田大学

シミュレーションの流れ

cf. 高橋大輔著,数値計算,岩波書店,1996.

4 / 39

数値解法

大規模疎行列を係数に持つ連立一次方程式

反復法

• 適当な初期近似解 から出発してそれを更新しながら徐々に厳密解 に近づける計算法

– 多くは漸化式を用いる(後述)

• 目標は・・・

– 速い(収束性)

– 安い(計算コスト)

– 旨い(近似解精度)

➔牛丼屋?

2017/1/27 第20回数理人セミナー@ 早稲田大学 5 / 39

(非定常)反復法

クリロフ部分空間法

• Growing subspace

• 空間条件(簡単のため )

帰納的次元縮小(Induced Dimension Reduction, IDR)法

• Shrinking subspace

• 空間条件(残差)

2017/1/27 第20回数理人セミナー@ 早稲田大学 6 / 39

共役勾配(Conjugate Gradient, CG)法 [’52 Hestenes and Stiefel]

係数行列が正定値対称の場合に有効

• 空間条件に加えて残差の直交条件を課す

➔漸化式の係数(ステップ幅)の決定

2017/1/27 第20回数理人セミナー@ 早稲田大学

探索方向

近似解

残差

7 / 39

共役残差(Conjugate Residual, CR)法 [’55 Stiefel]

係数行列が(正定値)対称の場合に有効

• 空間条件に加えて残差の最小条件を課す

➔漸化式の係数(ステップ幅)の決定

2017/1/27 第20回数理人セミナー@ 早稲田大学

探索方向

近似解

残差

8 / 39

アルゴリズム

2017/1/27 第20回数理人セミナー@ 早稲田大学

CG法

CR法

9 / 39

クリロフ部分空間法

短い漸化式を用いる算法

• CG [’52 Hestenes and Stiefel]

• Bi-CG [’76 Fletcher]

対称化された以下の方程式に前処理付きCG, CR法を形式的に適用することでBi-CG, Bi-CR法が導出される

– 前処理行列

, :単位行列

– これは,2つの方程式 を同時に解くイメージ

2017/1/27 第20回数理人セミナー@ 早稲田大学

• CR [’55 Stiefel]

• Bi-CR [’09 Sogabe et al.]

<--- 対称向け --->

<-- 非対称向け -->

10 / 39

アルゴリズム

2017/1/27 第20回数理人セミナー@ 早稲田大学

Bi-CG法

B-CR法

11 / 39

クリロフ部分空間法

短い漸化式を用いる算法

• CG [’52 Hestenes and Stiefel]

• Bi-CG [’76 Fletcher]

• Hybrid Bi-CG– CGS [’89 Sonneveld]

– Bi-CGSTAB [’92 van der Vorst]

– Bi-CGStab2 [’93 Gutknecht]

– Bi-CGstab(ℓ) [’93 Sleijpen and Fokkema]

– GCGS [’96 Fokkema et al.]

– GPBi-CG [’97 Zhang]

• QMR [’91 Freund and Nachtigal]

– TFQMR [’93 Freund]

– QMRCGSTAB [’94 Chan et al.]

長い漸化式の算法と restart / truncated 版は割愛

2017/1/27 第20回数理人セミナー@ 早稲田大学

• CR [’55 Stiefel]

• Bi-CR [’09 Sogabe et al.]

• Hybrid Bi-CR [’10 Abe and Sleijpen]

– CRS

– Bi-CRSTAB

– Bi-CRstab(2)

– GPBi-CR

• IDR [’89 Wesseling and Sonneveld]

– IDR(s) [’08 Sonneveld and van Gijzen]

– GBi-CGSTAB(s, ℓ) [’10 Tanio and Sugihara]

– IDRstab [’10 Sleijpen and van Gijzen]

<--- 対称向け --->

<-- 非対称向け -->

and many variants …

12 / 39

発表の流れ

はじめに

• 連立一次方程式とクリロフ部分空間法

丸め誤差について

• 収束速度と近似解精度

収束性の改善

• 誤差解析と漸化式の修正

数値実験

まとめ

2017/1/27 第20回数理人セミナー@ 早稲田大学 13 / 39

丸め誤差について

倍精度浮動小数点数

• 符号部 1bit,指数部 11bit,仮数部 52bitで表現

• (0.1)10 = (0.000110011 ・・・ )2➔ + 1.10011001 ・・・ 11010× 2−4

仮数部は52bitに丸める

指数部はバイアスを加えて −4 + 1023 = 1019 = (01111111011)2

計算精度

• を実数, を倍精度浮動小数点数とすると

: 相対精度(unit round off:倍精度では )

2017/1/27 第20回数理人セミナー@ 早稲田大学

s e1 e2 ・・・ e11 d1 d2 ・・・ ・・・ ・・・ ・・・ ・・・ d52

14 / 39

理想的な反復法(丸め誤差の観点から)

収束速度

• 丸め誤差の影響により残差が減少する速さは低下する

• ひどいときは残差が停滞 or 発散して収束しない

➔残差の(理論的な)減少の速さを維持できる解法が望ましい

近似解精度

2017/1/27 第20回数理人セミナー@ 早稲田大学 15 / 39

数値例1

Cyclic行列に対するBi-CG法の収束性

2017/1/27 第20回数理人セミナー@ 早稲田大学

0 50 100 150-12

-10

-8

-6

-4

-2

0

2

4

6

反復回数 k

相対

残差

2ノ

ルム

(対

数)

擬似8倍精度

倍精度

0 50 100 150-12

-10

-8

-6

-4

-2

0

2

4

6

反復回数 k

相対

残差

2ノ

ルム

(対

数)

擬似8倍精度

倍精度

0 500 1000 1500-12

-8

-4

0

4

8

12

16

20

24

反復回数 k

相対

残差

2ノ

ルム

(対

数)

擬似8倍精度

倍精度

0 500 1000 1500-12

-8

-4

0

4

8

12

16

20

24

反復回数 k

相対

残差

2ノ

ルム

(対

数)

擬似8倍精度

倍精度

-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

固有値

16 / 39

固有値分布

成分:乱数

理想的な反復法(丸め誤差の観点から)

収束速度

• 丸め誤差の影響により残差が減少する速さは低下する

• ひどいときは残差が停滞 or 発散して収束しない

➔残差の(理論的な)減少の速さを維持できる解法が望ましい

近似解精度

• 誤差 ⇔残差 「真」⇔漸化式から求まる残差

(条件数) (Residual gap)

➔要求精度をきちんと満たす解法が望ましい

2017/1/27 第20回数理人セミナー@ 早稲田大学 17 / 39

Residual gapとは?

一般的な収束判定

• 漸化式から求まる残差 が以下を満たすとき終了する

反復が終了したとき真の残差 は以下を満たすか?

• 無限精度ならYes,丸め誤差のある世界ではNo!

Residual gap( )を小さくすることが大事

真の残差 漸化式から求まる残差

2017/1/27 第20回数理人セミナー@ 早稲田大学 18 / 39

数値例2

行列af23560に対するBi-CR法の収束性

• 収束判定:

2017/1/27 第20回数理人セミナー@ 早稲田大学

0 1000 2000 3000 4000 5000

-10

-8

-6

-4

-2

0

2

4

6

反復回数 k

相対

残差

2ノ

ルム

(対

数)

||rk||

2

||b-Axk||

2

0 1000 2000 3000 4000 5000

-10

-8

-6

-4

-2

0

2

4

6

反復回数 k

相対

残差

2ノ

ルム

(対

数)

||rk||

2

||b-Axk||

2

19 / 39

収束性を改善するには?

• 多倍長計算の利用

– 収束速度,residual gapともに改善される➔コストは大きい

– 経験的に部分的な利用(混合精度演算)では改善は難しい

– 多倍長演算は解析の際に有効活用できる

• リスタート手法

– 丸め誤差を排除できる➔反復回数(計算コスト)は増加

• 真の残差を計算

– Residual gapを改善できる➔収束速度の低下

• ベクトル更新のグループ化

– 丸め誤差の影響を抑制するよう漸化式を修正

– 低コストで収束速度を維持しつつresidual gapを改善

2017/1/27 第20回数理人セミナー@ 早稲田大学 20 / 39

発表の流れ

はじめに

• 連立一次方程式とクリロフ部分空間法

丸め誤差について

• 収束速度と近似解精度

収束性の改善

• 誤差解析と漸化式の修正

数値実験

まとめ

2017/1/27 第20回数理人セミナー@ 早稲田大学 21 / 39

浮動小数点演算による行列ベクトル積

• : 浮動小数点演算の結果

• : 一行あたりの最大非零要素数

• : 相対精度(unit round off:倍精度では )

• に対して

以降の誤差解析は文献[1]に倣う.また,行列ベクトル積以外の演算における丸め誤差の影響は無視する

[1] G.L.G. Sleijpen and H.A. van der Vorst, Reliable updated residuals in hybrid Bi-CG methods, Computing, 56 (1996), 141--163.

準備

2017/1/27 第20回数理人セミナー@ 早稲田大学 22 / 39

丸め誤差の影響(1/2)

近似解と残差を更新する漸化式

行列ベクトル積

• 局所的な誤差の上限

• ただし, であり, の項は無視する

のとき, は相対的に大きな誤差を含む

残差ノルムの急激な減少による大幅な桁落ち➔収束速度の低下

2017/1/27 第20回数理人セミナー@ 早稲田大学 23 / 39

丸め誤差の影響(2/2)

近似解と残差を更新する漸化式

Residual gapの上限

残差ノルムの振動により となるような中間残差があると,上限は相対的に大きくなり得る

➔近似解精度の劣化

相対的に大きな局所誤差の蓄積を避け,さらにresidual gap

を小さくするためには,残差ノルムが滑らかに減少することが理想的である

2017/1/27 第20回数理人セミナー@ 早稲田大学 24 / 39

4パターンの振動と収束性

第20回数理人セミナー@ 早稲田大学2017/1/27 25 / 39

理想的

最悪

残差更新のグループ化 cf. [’94 Neumaier, ’96 Sleijpen and van der Vorst]

近似解と残差の漸化式

• 単調増加数列 を選び, のとき,近似解と残差を以下で置き換える(再計算する)

ただし,

2017/1/27 第20回数理人セミナー@ 早稲田大学

元の列

置き換え

26 / 39

数列 の選択

理想的な収束振る舞い

① 大きな中間残差ノルムを回避➔ Residual gapの抑制

② 残差ノルムの大きな振動(減少)を回避➔局所誤差の抑制

①新しい残差列 が「滑らか」

になるよう選ぶ

注)残差の再計算には余分な行列ベクトル積が必要

• 実際にはパラメータを用いて適当な条件を満たした場合のみ再計算する様々な手法が開発されている

2017/1/27 第20回数理人セミナー@ 早稲田大学 27 / 39

数列 の選択

理想的な収束振る舞い

① 大きな中間残差ノルムを回避➔ Residual gapの抑制

② 残差ノルムの大きな振動(減少)を回避➔局所誤差の抑制

②大きな振動があれば局所的に

残差のみ再計算

注)残差の再計算には余分な行列ベクトル積が必要

• 実際にはパラメータを用いて適当な条件を満たした場合のみ再計算する様々な手法が開発されている

2017/1/27 第20回数理人セミナー@ 早稲田大学

28 / 39

以上の考え方はCR法(Bi-CR法)など漸化式の形式が異なる場合にも適用できる

[2] Kensuke Aihara, Variants of the groupwise update strategy for

short-recurrence Krylov subspace methods, Numer. Algorithms,

2016, doi:10.1007/s11075-016-0183-y.

29 / 39

対象とする漸化式

Bi-CG系統

行列ベクトル積を行う箇所が異なれば,丸め誤差の影響も異なるはず

2017/1/27 第20回数理人セミナー@ 早稲田大学

Bi-CR系統

探索方向

近似解

残差

30 / 39

漸化式による違い

Bi-CG [’96 Sleijpen and van der Vorst]

• 行列ベクトル積による局所誤差

• Residual gap

Bi-CR [2016 Aihara]

• 行列ベクトル積による局所誤差

• Residual gap

➔補助ベクトルの振動を回避するようにグループ化!

2017/1/27 第20回数理人セミナー@ 早稲田大学 31 / 39

発表の流れ

はじめに

• 連立一次方程式とクリロフ部分空間法

丸め誤差について

• 収束速度と近似解精度

収束性の改善

• 誤差解析と漸化式の修正

数値実験

まとめ

2017/1/27 第20回数理人セミナー@ 早稲田大学 32 / 39

計算条件

実験環境

• GNU C++ 4.8.2 compiler

• Intel Xeon CPU E5-1620 v2

• 32 GB RAM

初期値

収束判定条件

➔従来のBi-CR法とベクトル更新のグループ化を適用したBi-CR法

の収束性を比較

2017/1/27 第20回数理人セミナー@ 早稲田大学 33 / 39

数値実験1

テスト行列

• af23560 (from University of Florida Sparse Matrix Collection)

• 構造: 実非対称

• 行列サイズ n = 23560

• 非零要素数 460598

• 行あたりの最大非零要素数 21

• 条件数 2.0e+04

• 応用分野:流体力学

右辺項

• 正規化された乱数ベクトル

2017/1/27 第20回数理人セミナー@ 早稲田大学

非零要素分布

34 / 39

0 1000 2000 3000 4000 5000

-10

-8

-6

-4

-2

1

2

4

6

反復回数 k

相対

残差

2ノ

ルム

(対

数)

||rk||

2

||b-Axk||

2

従来のBi-CR法の収束履歴

収束判定

2017/1/27 第20回数理人セミナー@ 早稲田大学 35 / 39

0 1000 2000 3000 4000 5000

-10

-8

-6

-4

-2

1

2

4

6

反復回数 k

相対

残差

2ノ

ルム

(対

数)

||rk||

2

||b-Axk||

2

提案法(グループ化を行った場合)の収束履歴

収束判定

2017/1/27 第20回数理人セミナー@ 早稲田大学 36 / 39

数値実験2

境界値問題 [’92 Joubert]

• 離散化:中心差分近似(5点公式)

• 刻み幅 h=1/129

• 行列サイズ n = 16384

• 非零要素数 81408

• パラメータ Dh = 1/4

右辺項は厳密解が となるように設定

2017/1/27 第20回数理人セミナー@ 早稲田大学 37 / 39

残差ノルムの収束履歴

†従来法は n 反復で収束しない

解法 反復回数 Add. MVs

従来 † - 5.3e-07

提案 4282 175 7.4e-11

2017/1/27 第20回数理人セミナー@ 早稲田大学

0 2000 4000 6000 8000 10000

-10

-8

-6

-4

-2

1

2

4

反復回数 k

相対

残差

2ノ

ルム

(対

数)

従来

提案

従来

提案

38 / 39

まとめ

短い漸化式を用いるクリロフ部分空間法における丸め誤差の影響について議論した

• 残差ノルムの振動は収束速度や近似解精度に大きく影響

• 丸め誤差の蓄積・拡大を回避するには滑らかな減少が重要

➔残差更新のグループ化について紹介

今後の展望

• 残差ノルムの振る舞いを滑らかにするスムージングの数値的に安定な実装法を検討中 with Mr. Komeyama and Prof. Ishiwata

– 残差ノルムが単調減少

– 実装がとても簡単

– パラメータなどの設定は不要

– 余分な計算コストはほぼかからない

2017/1/27 第20回数理人セミナー@ 早稲田大学 39 / 39