密行列固有値解法の最近の発展 (i) - multiple relatively robust representation...
DESCRIPTION
密行列固有値解法の最近の発展 (I) - Multiple Relatively Robust Representation アルゴリズム -. 2004 年 11 月 26 日 名古屋大学 計算理工学専攻 山本有作. 目次. 1 . はじめに 2 . Multiple Relatively Robust Representation アルゴリズム 3 . 対称密行列の固有値計算への適用. 1 . はじめに. 本報告で対象とする問題 標準固有値問題 A u = λ u A : 実対称またはエルミートの n × n 密行列 - PowerPoint PPT PresentationTRANSCRIPT
密行列固有値解法の最近の発展 (I)- Multiple Relatively Robust Representation
アルゴリズム -
2004 年 11 月 26 日
名古屋大学 計算理工学専攻山本有作
目次
1 . はじめに
2 . Multiple Relatively Robust Representation アルゴリ
ズム
3 . 対称密行列の固有値計算への適用
1 . はじめに
• 本報告で対象とする問題– 標準固有値問題 Au = λu
• A : 実対称またはエルミートの n×n 密行列• 全部または一部の固有値・固有ベクトルを求める。
• 応用分野– 分子計算,統計計算,構造解析など
固有値・固有ベクトル計算の流れ
Q*AQ = T(Q: 直交行列 )
Tvi =λi vi
ui = Qvi
三重対角化
逆変換
三重対角行列 T
T の固有ベクトル {vi }
A の固有ベクトル {ui }
実対称行列 A 計算内容
| T – λi I | = 0二分法
逆反復法
T の固有値 {λi } ,
逆反復法による固有ベクトル計算
• 逆反復法の原理– T: 三重対角行列– λ’i : T の固有値 λi の近似値
– 適当な初期ベクトル vi (0) から出発し,次の反復を行う。
– vi に平行な成分が,1反復毎に (λi–λi’) –1 倍に拡大される。
vi (m) := ( T – λ’i I ) –1 vi
(m – 1)
逆反復法の長所と短所
• 長所– 一部の固有ベクトルのみの計算が可能– 固有値が十分に離れている場合, k 本の固有ベクトルを計
算するための計算量は O(kn)
• 短所– 固有値が密集している場合,固有ベクトルの直交化が必要– 固有ベクトルを全部直交化する場合,計算量は O(k2n) に増
加• 大規模問題( n > 1000 )ではほとんど常にこの状況
– 直交化が必要な場合,並列化が困難(不可能ではないが)
直交化を行わずに高精度な固有ベクトルを求める方法ができれば, 計算量と並列性の面で非常に有利
本報告の目的
• 直交化を行わずに三重対角行列の高精度な固有ベクトルを計算する方法である Multiple Relatively Robust Representation アルゴリズム ( MR3 アルゴリズム, Dhillon (1997) ) について,概要を紹介する。
• 対称密行列の固有値計算に MR3 アルゴリズムを適用する際の課題について考察する。
2 . Multiple Relatively Robust Representation アルゴリズム
• 基本的なアイディア
• 固有値の相対ギャップが大きい場合
• 固有値の相対ギャップが小さい場合
基本的なアイディア
• 固有ベクトルに関する sin theorem– T を対称な三重対角行列, λ’ を固有値の近似値, λ を λ’ に
もっとも近い固有値とする。このとき,長さ1の任意のベクトル x に対して次の不等式が成り立つ。
sin| (∠ x, v)| ≦ || Tx – xλ’|| / gap(λ)
– ここで, gap(λ) = |μ–λ| , μ は λ 以外で最も λ’ に近い固有値。
基本的なアイディア(続き)
• sin theorem の利用– いま,固有値の近似値 λ’ と固有ベクトルの近似ベクトル x
が次の条件を満たすように求められたとする。
– このとき, sin theorem より
– ここで, relgap(λ) = gap(λ) / |λ| 。
(*) 式の成立を保証できれば,固有値の相対ギャップが大きい場合には直交化なしで自動的に精度の高い(したがって直交性も良い)固有ベクトルが求まる。
|| Tx – xλ’|| = O(n) |λ’| --- (*)
sin| (∠ x, v)| ≦ || Tx – xλ’|| / gap(λ)
= O(n) |λ’| / gap(λ)
~ O(n) / relgap(λ)
基本的なアイディア(続き)
• 従来のアルゴリズムの問題点– 従来の二分法・逆反復法では,次の不等式しか成り立たない。
– 小さい固有値に対しては,相対残差が大きくなる可能性がある。
• 新しいアルゴリズムの概要(相対ギャップが大きい場合)– (1) T +μI が正定値となるように μ を選び, T +μI = LDLT と改訂 コレスキー分解を行う。– (2) LDLT の固有値の近似値 λ’ を,相対誤差の意味で高精度に 計算する ( dqds 法などを利用)。– (3) twisted 分解を用いて, λ’ に対する固有ベクトルを相対残差 が小さくなるよう高精度に計算する。
|| Tx – xλ’|| = O(n) ||T||
固有値の相対ギャップが大きい場合
• なぜ分解 T +μI = LDLT が必要か– 計算した固有値 λ’ の誤差は,通常,後退誤差解析 + 摂動論
により評価する。
– しかし,三重対角行列 T に対しては, λ が ||T|| でしか押さえられない 。
– 相対誤差の意味で高精度とするには, λ を ||λT|| で押さえたい。
後退誤差解析: λ’ はある T に対して T+T の厳密な固有値摂動論: T → T+T のとき,固有値は λ だけずれる。
LDLT の形で表現された行列の固有値問題(すなわち LD1/2
の特異値問題)に対しては, λ を ||λ(LD1/2 )|| で押さえることが可能( Kahan, 1967 ) → Relatively Robust Representation
LDLT の固有値の高精度計算
• 特異値分解アルゴリズムの利用– 二重対角行列に対しては,その特異値を相対誤差の意味で
高精度に計算するアルゴリズムが存在• 二分法の改良 ( Kahan, 1967 )• dqds アルゴリズム ( Fernando & Parlett, 1994 )
– これを LD1/2 に適用することにより, LDLT の固有値 λ を相対誤差の意味で高精度に計算可能
固有ベクトルの高精度計算
• Twisted 分解– 逆反復法の良い初期ベクトルを求めるための手法– 近似固有値 λ’ に対し, LDLT –λ’I を各 k ( 1 ≦ k ≦ n )に対
して次のように分解 (計算には dqds 法を用いる)。
– このうち, γk が最小になるような k を求め, (LDLT –λ’I )x = γkek を(上式の右辺を用いて)解く。
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
1
1
1
1
2
1
1
1
1
2
1
L
L
UL
U
U
U
D
D
D
D
D
D
U
U
UL
L
L
ILDL
n
k
kk
k
n
n
kk
k
n
k
kk
k
Tγλ
固有ベクトルの高精度計算(続き)
• Twisted 分解(続き)– このとき,得られた解ベクトル x は次の式を満たすこと
が示せる。( Dhillon, 1997 )
– ただし, M はある正の定数。
– λ’ が相対誤差の意味で高精度( |λ–λ’ | = O() |λ’| )ならば, || Tx – xλ’|| = O(n) |λ’| が言える。
– 固有ベクトルの近似値 x は高精度。
|| (LDLT –λ’I ) x || / ||x|| ≦ n |λ–λ’ | ・ M / (M – 1)
固有値の相対ギャップが小さい場合
• 問題点– 以上のアルゴリズムで言えるのは sin| (∠ x, v)| ≦ O(n) / relgap(λ) まで。– relgap(λ) が大きい場合は,固有ベクトルの高精度性が言え
ない。
• 行列のシフトの利用– T の固有ベクトルと T –νI の固有ベクトルは共通。– ν ~ λ と取れば, relgap(λ) は大きくできる。
• 既約な三重対角行列に重複固有値は存在しない。
– 上記の変形を行った上で,相対ギャップが大きい場合のアルゴリズムを適用。
固有値の相対ギャップが小さい場合(続き)
• 課題1– T –νI は一般に正定値行列ではない。– LDLT 分解は可能だが,それが Relatively Robust Representati
on である (固有値を相対誤差の意味で高精度で決定する) とは一般に言えない。
– Dhillon (1997) では,「証明はできないが,数値実験の結果では,ほとんどの場合, R3 を与える ν が λ の近くに存在」と主張。
• 課題2– 異なる固有値に属する固有ベクトルの計算には,複数の R3
が 必要( MR3 )。これらの間の変形を高精度にできるか?
– この変形にも dqds アルゴリズムを使うことを提案。
3 . 対称密行列の固有値計算への適用
• MR3 アルゴリズムの性能– O(kn) の計算量– 高い並列性
Pentium 4 クラスタ( 16PU )上での性能( Dhillon, 2004 )
分散メモリ型並列計算機上で高い性能
三重対角化と逆変換の時間が相対的に増大
三重対角化のための高速アルゴリズム
• Dongarra のアルゴリズム– ハウスホルダー法における rank-2更新を多段化– Level-3 BLAS で書けるのは全演算量の 1/2 のみ– キャッシュマシンではピークの 10 ~ 25% の性能– 通信回数が多い (各ステップで通信)
• Bischof / Wu のアルゴリズム– 行列をいったん帯行列に変換し,村田法により三重対角化– 全演算量のほとんどを level-3 BLAS で実行可能– 通信回数が少ない ( Dongarra のアルゴリズムの 1/L )
0
0 0
0
半帯幅 L
A B T
次数 N
約 (4/3)N3 O(N2L)
帯行列化 村田法
各アルゴリズムの性能( Opteron, 1.6GHz )
0
200
400
600
800
1000
1200
1400
1600
1800
480 960 1920 3840
DongarraBishofWu
Matrix size
Perf
orm
ance
(G
FLO
PS)
Wu の方法は Dongarra の方法に比べて約2倍の性能を達成N = 3840 のとき, Wu の方法はピークの 50% 以上の性能を達成
L=24, L’=4
L=48
L’=32
Bischof / Wu のアルゴリズムでの固有ベクトル計算
(従来の逆反復法,直交化が必要ない場合)• 計算法1
– 三重対角行列に対して逆反復法を行い,得られる固有ベクトルに2段階の逆変換を行う。
• 計算法2– 三重対角行列の固有値を用いて帯
行列に対して逆反復法を行い,1段階の逆変換を行う。
0
0 00
A BT
O(kn)
{vi }
{λi }{λi }
{ui } {wi }O(kn)
2kn22kn2
0
0 00
A BT
O(kn)
{λi }{λi }
{ui } {wi }
O(kLn2L2)
2kn2
L2 n ≪ ならば計算法2のほうが高速
計算法2に MR3 アルゴリズムを適用する際の問題点
• 固有値の相対精度の問題– B → T → {λi } という経路で求めた固有値は,相対誤差の意
味で B の高精度な固有値になっていない。• T の高精度な固有値には当然なっている。• 三重対角化アルゴリズム(村田法)の問題ではなく,三重対
角行列への変形自体が相対精度を破壊すると思われる。
– Twisted 分解による固有ベクトル計算アルゴリズム (の拡張) を適用するための前提が成り立たない。
解決策
• (案1) 計算法1を用いる。– 三重対角行列 T の固有値・固有ベクトルを MR3 で計算– 固有ベクトルを2段階に逆変換 ( 2kn2 + 2kn2 )
• (案2) MR3 アルゴリズム全体を帯行列に拡張– Twisted 分解, dqds 法等を帯行列に対して拡張(可能
か?)– L2 ≪ n かつ k ~ n ならば,案1より高速になると予想さ
れる。– 帯行列に対して適用することで, dqds 法の収束性を三重対
角行列の場合より向上できる可能性 → 更なる高速化