特別研究報告書
大規模な制約なし最小化問題に対する コーダル部分グラフを用いた
スパース準ニュートン法
指導教員 福嶋雅夫 教授 山下信雄 助教授
京都大学工学部情報学科 数理工学コース
平成15年4月入学 平成19年3月卒業
黒川 典俊
平成19年1月31日提出
大規模な制約なし最小化問題に対する
コーダル部分グラフを用いたスパース準ニュートン法
黒川 典俊
摘要
本報告書では,大規模な制約なし最小化問題に対する準ニュートン法を取り扱う.準ニュートン法が中小 規模の問題に対して有効な解法であることはよく知られているが,各反復で更新される近似ヘッセ行列は 密になるため,大規模な問題に対して準ニュートン法を適用するには何らかの工夫が必要である.大規模な 問題では,目的関数のヘッセ行列は一般に疎な行列となる.その疎性を利用した準ニュートン更新の手法と して,Matrix Completion Quasi-Newton method (行列補完を用いた準ニュートン法,MCQN法)が提案され ている.
ヘッセ行列の疎構造に対応するグラフ(疎構造グラフ)がコーダルグラフとなるとき,MCQN法で更新 される近似行列は,疎な三角行列の積として表すことができる.疎構造グラフがコーダルグラフとならな いとき,従来の
MCQN
法では,疎構造グラフのコーダル拡張を用いて行列の更新を行っている.そのため,問題によっては,ヘッセ行列の非ゼロ要素数と比べて近似行列の非ゼロ要素数が大幅に増え,必要とする記 憶量と計算時間が増大してしまう.
上記の問題を解決するため,本報告書では疎構造グラフのコーダルな部分グラフを用いて準ニュートン 更新を行う手法を提案する.この手法を用いると,近似行列の非ゼロ要素数はヘッセ行列の非ゼロ要素数以 下に抑えることができるので,実装に必要な記憶量と各反復の計算時間を減らすことができる.提案手法 が速く収束するためには,元の疎構造グラフの枝をより多く含むようなコーダル部分グラフを用いること が望ましい.本報告書では,そのような部分グラフを求める工夫についても考察する.また,いくつかの数 値実験結果から提案手法の有効性を議論する.
目 次
1
序論1
2
行列の疎性とコーダルグラフ2
2.1
コーダルグラフの基本的性質. . . . 2
2.2
行列の疎性とコーダルグラフ. . . . 4
2.3
コーダル拡張を求めるアルゴリズム. . . . 5
2.4
コーダル縮小を求めるアルゴリズム. . . . 6
3
コーダル部分グラフを用いた準ニュートン法8 3.1
準ニュートン法とその問題点. . . . 8
3.2
コーダル拡張を用いたMCQN
法とその計算量. . . . 9
3.2.1 Ext-MCQN
法の概要. . . . 9
3.2.2 Ext-MCQN
法の計算量. . . . 11
3.3
コーダル縮小を用いたMCQN
法とその計算量. . . . 12
3.3.1 Del-MCQN
法の概要. . . . 12
3.3.2 Del-MCQN
法の計算量. . . . 14
4
数値実験16 5
まとめと今後の課題19 A
コーダルグラフに関するアルゴリズム22 A.1 MCS
アルゴリズム. . . . 22
A.2 RIP
を満たす極大クリーク族とクリーク木を求めるアルゴリズム. . . . 22
B
半正定値行列補完22
C 4
節,【実験2
】の結果24
1 序論
次の制約なし最小化問題を考える.
minimize f (x)
subject to x ∈ R
n(1.1)
ここで,
f : R
n→ R
は2
回連続的微分可能な関数とする.本報告書では,特にn
が大きく,f
のヘッセ行 列が疎,つまりヘッセ行列のほとんどの成分が0
となる場合を取り扱う.制約なし最小化問題の解法としては,最急降下法,ニュートン法,準ニュートン法,共役勾配法などがあ る.その中でも準ニュートン法は,実装が容易であり収束の性質も良いので,広く用いられている
[5, 9, 14].
準ニュートン法は,目的関数のヘッセ行列(もしくはその逆行列)の近似行列を用いて,点列を生成する反 復法である.近似行列の更新公式としては
BFGS
公式やDFP
公式が代表的である.準ニュートン法によっ て生成される点列はある条件下で超一次収束することが知られている.よって,準ニュートン法を用いれば,比較的少ない反復回数で問題
(1.1)
の解を得ることができる.しかし,ヘッセ行列が疎であっても,BFGS 公式やDFP
公式で生成された近似ヘッセ行列は一般に密な行列となるため,nの2
乗に比例した記憶容量 が必要となる.そのため,これまで大規模な問題には準ニュートン法を適用することができなかった.大規模な最小化問題では,一般にヘッセ行列が疎になる.そのため,ヘッセ行列の疎性を利用して近似行 列を更新すれば,記憶容量を大幅に減らすことができる.ヘッセ行列の疎性を利用した近似行列の更新規則 として,行列補完を用いた準ニュートン法
(Matrix Completion Quasi-Newton method,
以下MCQN
法)が提 案されている[15].MCQN
法は,コーダルグラフと半正定値行列補完に関する理論を巧みに用いて,ヘッ セ行列の疎性を利用する方法である.MCQN法では,まず従来の準ニュートン法における近似行列の更新公式
(BFGS
公式,DFP
公式など)を用いて疎構造に対応した部分行列の更新を行う.次に,その部分行列の
(行列式を最大にする)
正定値行列補完を求め,その行列を近似行列とする.疎構造が コーダルグラフに関連した性質を持つとき,部分行列の
(行列式を最大にする)
正定値行列補完は疎な三角行列の積として表 せることが知られている.一般にヘッセ行列の疎構造に対応するグラフ(以下,疎構造グラフ)は必ずしもコーダルグラフとは限 らない.そこで,
[15]
では,疎構造グラフのなるべく枝数の少ない「コーダル拡張」1を用いて行列の更 新を行うことを提案している.この方法を,本報告書ではコーダル拡張を用いたMCQN
法(Ext-MCQN
法)
と呼ぶことにする.Ext-MCQN
法で求めた近似ヘッセ行列は疎な三角行列の積で表すことができるので,Ext-MCQN
法は従来の準ニュートン法よりも大幅に少ない記憶容量で実装できる.したがって,Ext-MCQN法は大規模な問題には非常に有効である. 理論的な面からも
Ext-MCQN
法は優れた性質を持っており,従 来のDFP
公式と同様の仮定のもとで,Ext-MCQN法によって生成される点列は超1次収束することが示さ れている.しかし,Ext-MCQN法では,枝数のできるだけ少ないコーダル拡張を用いたとしても,問題に よってはヘッセ行列の非ゼロ要素数と比べて近似行列の非ゼロ要素数が大幅に増えてしまうことがある.そこで,本報告書では,疎構造グラフのコーダル部分グラフを用いる手法
(Del-MCQN
法)を提案する.こ の場合,近似行列の非ゼロ要素数をヘッセ行列の非ゼロ要素数以下に抑えることができるので,Del-MCQN法は
Ext-MCQN
法よりもさらに少ない記憶容量で実装することができる.一方,Del-MCQN法ではヘッセ行列の情報を省いてしまうため,MCQN法がもつ高速な収束性が失われ てしまう可能性がある.そのため,コーダル部分グラフを求める際,疎構造グラフから枝をできるだけ削ら ないようにすることが望ましい.そのような問題は,疎構造グラフの枝数最大のコーダル部分グラフを求 める問題(以後,最大コーダル部分グラフ問題と呼ぶ)として定式化できる.最大コーダル部分グラフ問題 は
NP
完全であるため[8],それを近似的に解く実用的なヒューリスティックアルゴリズムがいくつか提案
されている[2, 13].本報告書では,Xue
のアルゴリズム[13]
によって得られるコーダル部分グラフを用いて
Del-MCQN
法を構成する.さらに,数値実験を行い,既存の方法との比較を行った結果を報告する.本報告書の構成は,以下のとおりである.まず,2節において行列の疎性と関連の深いコーダルグラフの 性質について簡単にまとめる.Del-MCQN法を実装する際に必要となる,最大コーダル部分グラフ問題に
1コーダル拡張については,2章で説明する.
対するアルゴリズムについてもこの節で紹介する.次に,3.1,3.2節で準ニュートン法,ならびに
Ext-MCQN
法を紹介し,その問題点についてまとめる.さらに,3.3節で,コーダル部分グラフを用いた近似行列の新 たな更新規則(Del-MCQN
法)を提案する.4節では,3.3節で提案したDel-MCQN
法を凸2
次計画問題に 適用した数値実験の結果を報告し,提案手法の有効性を議論する.最後に,5節で,まとめと今後の課題に ついて述べる.また,付録として,実験に用いたコーダルグラフに関するアルゴリズム,ならびに半正定値 行列補完に関する理論のまとめを与える.2 行列の疎性とコーダルグラフ
2.1
コーダルグラフの基本的性質本節では,コーダルグラフに関する基本的な事柄をまとめる.本節で述べるコーダルグラフの性質は,主
に
[1], [4]
の内容をまとめたものであるので,詳しくはそちらを参照していただきたい.特に,[1]
は,コーダルグラフとクリーク木について丁寧に解説している論文である.一方,
[4]
は,コーダルグラフについて の論文ではないが,2.1節にコーダルグラフについての簡単なまとめが載っている.本報告書を通して,Vを頂点の集合,E
⊆ V × V
を枝の集合とし,G= (V, E)
で無向グラフを表すものと する.グラフにはループがない,すなわち,すべてのv ∈ V
に対して,(v,v) < E
と仮定する.本報告書で用いるグラフに関する用語を,以下で定義する.
定義
2.1 (基本的な用語)
• 2
つの頂点u, v ∈ V
は(u, v) ∈ E
のとき隣接しているという.• v ∈ V
に隣接している頂点の集合をAdj
G(v) = {u ∈ V | (u, v) ∈ E}
で表す.紛れのないときは,Gを省 略して,単にAdj(v)
とかく.• v ∈ V
に接続している枝の数をv
の次数といい,deg(v)で表す2.•
相異なる2
つの頂点がすべて隣接しているとき,グラフは完全であるという.• 2
つのグラフG = (V, E)
とG
0= (V
0, E
0)
に対して,V0⊆ V
かつE
0⊆ E
が成り立つとき,G0をG
の部 分グラフという.• V
0をグラフG = (V, E)
の頂点集合V
の部分集合とする.このとき,頂点集合をV
0,枝集合をE
0:=
E ∩ (V
0× V
0)
とするグラフG
0= (V
0, E
0)
を,(V0による)Gの誘導部分グラフという3.• C
をグラフG = (V, E)
の頂点集合V
の部分集合とする.このとき,CによるG = (V, E)
の誘導部分グ ラフが完全であるならば4,その部分グラフをG
のクリー クという.クリーク中の任意の2
頂点間に は枝があることから,本報告書ではそれに属する頂点集合のみを明示して,クリークC
と表す.•
ある頂点v ∈ V
に隣接する頂点の集合Adj(v)
が,グラフG = (V, E)
上でクリークを形成しているとす る.このとき,その頂点v
を単体的頂点という.•
他のクリークの真の部分グラフにならないクリークを,極大クリークという.さらに,あるグラフの 極大クリークの集合をそのグラフの極大クリーク族という.•
サイクル中の連続していない2
つの頂点を結ぶ枝を弦(コード)という.2すなわち,deg(v)=|AdjG(v)|である.
3G0はGの部分グラフになっていることに注意
4すなわち,異なるi,j∈Cのすべてのペアに対して(i,j)∈E
定義
2.2 (コーダルグラフ)
グラフG = (V, E)
に含まれる長さ4
以上のすべてのサイクルが弦をもつとき,G
はコーダルグラフである,または単にコーダルであるという.図
1:
コーダルグラフの例(a)とコーダルグラフでない例(b)図
1
に示したグラフのうち,左のグラフ(a)
はコーダルグラフであるが,右のグラフ(b)
は左下の長さ4
のサイクルが弦を持たないので,コーダルグラフでない.コーダルグラフの最も基本的な性質は,次の
2
つである.性質
1
コーダルグラフは,単体的頂点をもつ.性質
2 G = (V, E)
をコーダルグラフとし,v1∈ V
をその単体的頂点とする.このとき,V\ {v
1}
により誘導 される部分グラフもまたコーダルである.性質
1,2
より,V\ {v
1}
により誘導される部分グラフも単体的頂点をもつ.それをv
2とする.これを繰り 返すことで,Adj(vi) ∩ {v
i+1, v
i+2, · · · , v
n}
がすべてのi = 1, 2, · · · , n − 1
に対してクリークになるように,G の頂点に順序付け(v
1, v
2, · · · v
n)(ただし,n = |V|)を行うことができる.この順序を完全消去順序(perfect elimination ordering,
以後PEO
と表す)と呼ぶ.PEOの存在は,次のようにコーダル性を特徴づけている.性質
3
グラフG = (V, E)
がコーダルであるための必要十分条件は,GがPEO
をもつことである.注意
1 PEO
は唯一ではない.例えば,図2
のコーダルグラフにおいて,(1,2, 3, 4, 5, 6, 7)
はPEO
であるが,(3, 2, 4, 6, 7, 1, 5)
もまたPEO
である.コーダルグラフの極大クリークは,PEOを用いて次のように簡単に列挙することができる.G
= (V, E)
をコーダルグラフとし,(v1, v
2, · · · , v
n)
をG
のPEO
とする.v1は単体的頂点なので,v1を含む極大クリー クは唯一であり,{v1} ∪ Adj(v
1)
で与えられる.そして,v1を含まない極大クリークは,{v2, v
3, · · · , v
n}
から 導かれた部分グラフの極大クリークである.したがって,コーダルグラフG = (V, E)
の極大クリーク族は,{v
i} ∪ Adj(v
i) ∩ {v
i+1, v
i+2, · · · , v
n}
, i = 1, 2, · · · , n
の中で極大なものの集合として与えられる.よって,lをG
の極大クリークの総数とすると,次の性質が成り立つ.性質
4 G = (V, E)
をコーダルグラフとし,(v1, · · · , v
n)
をG
のPEO
とする.このとき,Gの極大クリーク族{C
r| r = 1, 2, · · · , l}
は,次のように構成することができる:C
r= {v
i} ∪ Adj(v
i) ∩ {v
i+1, v
i+2, · · · , v
n}
, i = min
vj∈Cr
j
性質
4
から,極大クリークの数l
の上界はn
であることがわかる.図2
に,コーダルグラフとその極大ク リークの例を示す.(1,2, 3, 4, 5, 6, 7)
がこのグラフのPEO
である.この例では,4つの極大クリークが存在 し,C1= {1, 5, 7}, C
2= {2, 3, 4, 6}, C
3= {4, 6, 7}, C
4= {5, 6, 7}
である.さらに,コーダルグラフの極大クリーク族は,次の条件を満たすように添え字をつけることができること が知られている.
図
2:
コーダルグラフとその極大クリークの例 性質5 G = (V, E)
がコーダルグラフであるとき,r= 1, 2, · · · , l − 1
に対して,∃s ≥ r + 1 : C
r∩ (C
r+1∪ C
r+2∪ · · · ∪ C
l) ( C
s(2.1)
となる極大クリーク族{C
r| r = 1, 2, · · · , l}
が存在する.性質
5
はRunning Intersection Property(以降 RIP
と表す)と呼ばれる.図2
に示した極大クリーク族{C
1, C
2, C
3, C
4}
は,RIPを満たしている.2.2
行列の疎性とコーダルグラフ本節では,行列の疎性とコーダルグラフの関係について述べる.
まず,n
× n
対称行列A
に対し,集合E
をE := {(i, j) | A
i j, 0}
と定義し,これを本報告書では行列A
の疎 構造と呼ぶことにする.次に,集合V, E
を,V :={1, 2, · · · , n}, E := E \ {(i, i) | i = 1, · · · , n}
で定め,頂点集 合をV
,枝集合をE
とする無向グラフG = (V, E)
を考える5.本報告書ではG = (V , E)
を行列A
の疎構造グ ラフと呼ぶことにする6.例
1
行列A
の非ゼロ要素が図3(a)
のように与えられているとする.ただし,図中の∗
はA
i j, 0,他は A
i j= 0
を表す.行列A
の疎構造グラフは図3(b)
となる.図
3:
行列A
とその疎構造グラフの例図
3(b)
のように,グラフG = (V, E)
は必ずしもコーダルでないことに注意する.そこで,疎構造を表す グラフにコーダル性をもたせることを考える.定義
2.3
一般の(必ずしもコーダルでない)グラフG = (V, E)
が与えられたとする.•
グラフG
0= (V, F)
がG
のコーダル拡張(chordal extension)
であるとは,G0がコーダルグラフであり,かつ
F ⊇ E
が成り立つときをいう.5したがって,G=(V,E)はループを持たない.
6行列Aの非対角成分において非ゼロな箇所は,グラフG=(V,E)の隣接行列の非対角成分において非ゼロな箇所と一致すること に注意しておく.
•
グラフG
0= (V , F)
がG
のコーダル縮小(chordal deletion)
であるとは,G0がコーダルグラフであり,かつ
F ⊆ E
が成り立つときをいう.すなわち,一般のグラフ
G = (V, E)
にいくつか枝を付け加えてコーダルグラフにしたものを(Gの)コー ダル拡張,逆にグラフG
からいくつか枝を削ってコーダルグラフにしたものを(Gの)コーダル縮小と呼 ぶ.今後,文脈から紛れのないときは,「Gの」を省略し,単に「コーダル拡張」,「コーダル縮小」と呼ぶ.なお,グラフ
G
の頂点集合と,そのコーダル拡張,コーダル縮小の頂点集合は同じであることに注意する.また,コーダル拡張,コーダル縮小は一意ではない.
例
2
図3(b)
で与えられるグラフG
のコーダル拡張,コーダル縮小の例をそれぞれ図4(a),(b)
に示す.(a)はG
に(3, 4), (5, 7), (6, 4), (6, 7)
間の枝を付け加えたグラフ,(b)はG
から(1, 7)
間の枝を削除したグラフである.図
4:
図3(b)
で与えられるグラフG = (V, E)
のコーダル拡張(a),コーダル縮小 (b)
の例コーダル拡張は,疎行列のコレスキー分解と密接に関連することが知られている
[11].行列 A
を疎な正定値 対称行列とし,A = LL
T(ただし,L
は下三角行列)をそのコレスキー分解とする.このとき,A
i j= 0
であって も,コレスキー分解を行うとL
i j, 0
となり,非ゼロ要素が増加してしまうことがある.このようにコレスキー 分解前の行列で0
であったところにコレスキー分解後0
でない値が入ることを充填(fill-in)
という.行列L
の 疎構造をG
0= (V, F)(ただし,V := {1, 2, · · · , n}, F := {(i, j) | L
i j, 0 or L
ji, 0}, F := F \ {(i, i) | i = 1, 2, · · · , n})
で表現すると,(コレスキー分解の計算過程で数値的な打ち消しが起こらないと仮定すれば)グラフ
G
0は,行列
A
の疎構造グラフG = (V , E)
のコーダル拡張になることが知られている[4].
充填が起こると,行列
L
の非ゼロ要素が増加する.非ゼロ要素の増加はそのまま計算量の増加につなが り,行列A
が疎であってもその性質を有効に利用することができない.そこで,行列A
に前処理を行って,なるべく充填の数を少なくすることが求められる7.上で述べたことから,行列
A
のコレスキー分解におけ る充填の最小化問題は,行列A
の疎構造を表現するグラフの枝数最小のコーダル拡張を求める問題と等価 である.一方,コーダル縮小は,一般のグラフに含まれる最大のクリークを見つける問題(最大クリーク問題)や 疎な線形方程式を解くアルゴリズムへの応用に関連して研究されている
[2, 13].一般のグラフに対する最
大クリーク問題はNP
困難であるが,与えられたグラフの枝数最大のコーダル縮小を用いることで,最大ク リーク問題に対する比較的よい解を見つけられることが知られている.しかし,与えられたグラフの枝数最小のコーダル拡張を求める問題は
NP
完全であることが知られている
[8].同様に,与えられたグラフの枝数最大のコーダル縮小を求める問題も NP
完全である[8].そのため,
これらの問題に対する発見的手法がいくつか提案されている.その方法を次節以降で説明する.
2.3
コーダル拡張を求めるアルゴリズム枝数最小のコーダル拡張を求めるヒューリスティクスとしては,最小次数法(最小次数順序法,Minimum
degree ordering algorithm)を用いた手法が有名である.最小次数法は,コレスキー分解における充填の発生
7充填の数は,コレスキー分解の計算過程における行(または列)の順序に依存することが知られている.したがって,充填の数が 少なくなるようにあらかじめ行列Aの行(列)を並べ替えておく.
を観察することにより考案されたグラフの頂点のオーダリング手法である.その基本的な考え方は,「隣接 頂点の少ない順に頂点に番号を振る」ということである.具体的には,次数の小さい頂点をグラフから除去 し,その除去された部分グラフを作る.そして,頂点がすべて除去されるまで同様の操作を繰り返すという アルゴリズムである8.その手続きを正確に述べると次のようになる.
¶ ³
最小次数法
Step 1 : V
0:= V, E
0:= E, S := ∅, k := 1
とする.Step 2 : G
k−1:= (V
k−1, E
k−1)
とし,グラフG
k−1において次数が最小の頂点をv
kとする.S :=(S , v
k)
と する.Step 3 : G
k−1から頂点v
kを削除し,新しいグラフG
k:= (V
k, E
k)
をつくる.Step 4 : k = k + 1
とし,k> |V|
ならば,終了.そうでなければステップ2
へ.µ ´
このアルゴリズムを適用すると,頂点の順番は
S = (v
1, · · · , v
n)
に保存される.S の第i
要素が第i
番目の 頂点を表している.最小次数順序
S
をPEO
とするコーダル拡張を求めるには,次のParter
が提案した手法[10]
を用いればよ い.ここで,最小次数順序をS = (v
1, v
2, · · · , v
n)
とする.¶ ³
順番
S
からG = (V, E)
のコーダル拡張を求めるアルゴリズムStep 1 : k := 1
とする.G0= G
とし,E∗= E
とする.Step 2 : k > n
ならば終了.そうでなければ頂点v
kとそれに接続する枝をグラフG
0から削除する.Step 3 : Adj
G0(v
i)
が完全グラフとなるように枝をE
∗に追加する.Step 4 : k := k + 1
とし,ステップ2
へ.µ ´
このアルゴリズムにより得られるグラフ
G
∗= (V, E
∗)
は,S をPEO
にもつグラフG
のコーダル拡張となる.2.4
コーダル縮小を求めるアルゴリズム一般のグラフに含まれる枝数最大のコーダル部分グラフを見つける問題
(最大コーダル部分グラフ問題)
はNP
完全であり,さまざまな発見的解法が提案されている9.その基本的な考え方を説明する.いま,グラフ
G = (V, E)
が与えられ,Gの頂点には順番{v
1, v
2, · · · , v
n}
が振られているとする.Vk:=
{v
j| j ≥ k}
とし,頂点集合をV
k,枝集合をE
k⊆ V
k× V
kとするグラフG
k= (V
k, E
k)
を考える.グラフG
の コーダル部分グラフを求める基本的アイデアは,次のとおりである.まず,1頂点のみからなるグラフ
G
n:= ({v
n}, ∅)
はコーダルグラフである.次に,Gk= (V
k, E
k)
がG
の コーダル部分グラフであるとしよう.このとき,{vk−1, v
k, v
k+1, · · · , v
n}
を頂点とするコーダル部分グラフG
k−1= (V
k−1, E
k−1)
を次のように構成することができる.Step 0 : G
k−1:= G
kStep 1 : G
k−1の頂点集合V
k−1に頂点v
k−1を追加する.Step 2 : v
k−1が単体的頂点になるように,次の条件を満たすG
kのクリークC ⊆ V
kの各頂点と 頂点v
k−1とを結ぶ枝をE
k−1に付け加える.8グラフにおいて次数の少ない頂点は,対応する行列において非ゼロ要素の少ない列に対応する.
9与えられたグラフの枝数最大のコーダル縮小を求める問題は,与えられたグラフに含まれる枝数最大のコーダル部分グラフを求 める問題と等価であることに注意.
¶ ³
【条件】
V
k(v
k−1) := Adj
G(v
k−1) ∩ V
kとする10.Cは,Vk(v
k−1)
で誘導されるG
kの部分グラフに含まれるクリー クである.µ ´
こうして得られたグラフ
G
k−1は,Gのコーダルな部分グラフである.これをk = n, n − 1, n − 2, · · · , 1
とく り返して得られるグラフG
1= (V
1, E
1)
は,V1= V
を満たすグラフG
の部分グラフになる.グラフG
1は(v
1, v
2, · · · , v
n)
をPEO
にもつので,定理3
からG
1はコーダルである.すなわち,G1はG
のコーダル縮小である.
枝数のできるだけ多いコーダル縮小を求めるため,頂点の選び方にさまざまな工夫がなされている.ここ では,Xueのアルゴリズム
[13]
を紹介する.このアルゴリズムは,一般のグラフに対する最大クリーク問題 への応用を念頭に考えられたアルゴリズムである.表記の簡単のため,Suc
G(v
i) := {v
j| j > i and v
j∈ Adj
G(v
i)}
とする.
¶ ³
Edge-maximal chordal subgraph (Xue [13])
入力:
グラフG = (V, E)
出力
:
グラフG
のコーダル部分グラフ(コーダル縮小)G0= (V, E
0)
Step 0 : k := n
とし,Vk:= ∅, E
k:= ∅, peo := ∅, U := V
とする.また,∀v∈ V
に対し,t(v)= ∅, s(v) = 0
とする.Step 1 : k = 1
なら終了.Gk:= (V
k, E
k)
はpeo = (v
1, · · · , v
n)
をPEO
にもつ枝数最大のコーダル部分グ ラフである.Step 2 : s(v) = max{s(u) | u ∈ U}
を満たすv ∈ U
を1
つ選ぶ.V
k−1:= V
k∪{v}, peo := (v, peo), U := U \{v}
とする. Ek−1
:= E
k∪ {(v, u) | u = t(v) or u ∈ Adj
G(v) ∩ Suc
Gk(t(v))}
とする.頂点v
のラベルをv
kと する.Step 3 : ∀u ∈ Adj
G(v) ∩ U
に対し,ru:= 1 + |Suc
Gk−1(v) ∩ Adj
G(u)|
とする.もし,ru
≥ s(u)
なら,t(u) :=v, s(u) := r
uとする. k :=k − 1
とし,Step1へ戻る.µ ´
注意
2 Step2
においてmax{s(u) | u ∈ U}
を満たす頂点が複数あるとき,XueはグラフG
において次数が最大 となるものを選ぶことを推奨している[13].
Xue
のアルゴリズムで生成されるG
のコーダル縮小については,次の性質が知られている.定理
2.1 ([13],Theorem 3.1) G = (V, E)
に対してXue
のアルゴリズムを適用して得られたコーダル縮小をG
0= (V, E
0)
とする. G0はpeo = (v
1, · · · , v
k)
をPEO
にもつG
のコーダル部分グラフの中で枝数最大のもの である.なお,Xueのアルゴリズムの計算量は,O(|V|
+ P
deg(v) + P
deg
2(v)) ∼ O(∆ × |E|)
である[13].
(ただし,∆ = max
deg(v) | v ∈ V
である.)10すなわち,グラフGk=(Vk,Ek)の頂点のうち,与えられたグラフG=(V,E)においてvk−1と隣接した頂点の集合をVk(vk−1)と する.
3 コーダル部分グラフを用いた準ニュートン法
3.1
準ニュートン法とその問題点この節では,準ニュートン法とその問題点について述べる.
準ニュートン法は,目的関数のヘッセ行列(もしくはその逆行列)の近似行列を用いて点列を生成する反 復法である.xkを現在の反復点とし,Bkを目的関数のヘッセ行列
∇
2f (x
k)
の近似行列とする.ここで,Bkは正定値対称行列であるとしよう.準ニュートン法では,まず探索方向
p
kをp
k= −B
−1k∇ f (x
k)
で定める11.次に,pk方向に直線探索を行って,次回の反復点
x
k+1をx
k+1= x
k+ α
kp
kにより定める.ただし,αkは非負の実数(ステップ幅)である.
行列
B
kは各反復において適宜更新する.ここでは,Bkの逆行列H
k= B
−1k を更新することを考える12.行 列H
kは,セカント条件:H
k+1y
k= s
kを満たすように更新される.ただし,
s
k= x
k+1− x
k, y
k= ∇ f (x
k+1) − ∇ f (x
k) (3.1)
である.一般に,セカント条件を満たす行列は無数に存在するので,いろいろな種類の更新公式が考えられ ており,その中でもBFGS
法とDFP
法が代表的である.DFP
法では,次の最適化問題の解をH
k+1とする[3].
min
Hψ(H
k−12HH
−1 2
k
) subject to Hy
k= s
kH = H
TH 0
(3.2)
ただし,ψ
: R
n×n→ R
はψ(A) = trace(A) − ln det(A)
で定義される狭義凸関数である.また,H
0 (H 0)
は,Hが半正定値(正定値)であることを表す.特に,Hが正定値行列で,条件:
s
Tky
k> 0 (3.3)
を満たすとき13,問題
(3.2)
の解は一意に定まり,その解H
DFPk+1 は次式で計算できる[3].
H
k+1DFP= H
k− H
ky
k(H
ky
k)
Ty
TkH
ky
k+ s
ks
Tks
Tky
k(3.4)
この更新公式は,DFP公式と呼ばれる.また,BFGS法は,次式で与えられる更新公式(BFGS公式)を用いて近似行列の更新を行う方法である.
H
k+1BFGS= H
k− H
ky
ks
Tk+ s
k(H
ky
k)
Ts
Tky
k+
1 + y
TkH
ky
ks
Tky
k
s
ks
Tks
Tky
k(3.5) DFP
公式やBFGS
公式で求まるH
k+1は,sk(s
k)
T などの影響で,∇2f (x)
が疎であっても一般には密な行 列になる.したがって,行列H
k+1の保持にはO(n
2)
のメモリが必要になる.ゆえに,次元数n
が大きい問 題に対してはこれらの方法を使うことができない.11探索方向pkは,必ず目的関数の降下方向になる.なぜなら,Bkの正定値性より∇f (xk)Tpk=−∇f (xk)B−1k ∇f (xk)<0が成り立つ からである.
12このとき,探索方向pkはpk=−Hk∇f (xk)と行列とベクトルの積で計算できる.
13fが強凸関数のとき,条件(3.3)は任意の2点xk,xk+1に対して成り立つ.また.f が非凸であるとき,ステップ幅αkがWolfe の条件を満たすようにすれば,条件(3.3)は満たされることが知られている[9].
3.2
コーダル拡張を用いたMCQN
法とその計算量3.2.1 Ext-MCQN
法の概要次元数
n
が大きい問題では,目的関数のヘッセ行列が疎になることが多い.そこで,Hk+1DFPを与える問題(3.2)
の制約条件に対し,疎性の条件を加えた次の問題を考える.min
Hψ(H
−k12HH
−1 2
k
) subject to Hy
k= s
kH = H
TH 0
(H
−1)
i j= 0 ∀(i, j) < F
(3.6)
ここで,集合
F
は,F⊆ V ×V
かつF ≈ E := {(i, j) |
あるx ∈ R
nに対して[∇
2f (x)]
i j, 0 }
を満たすように選ぶ.ただし,V
= {1, 2, · · · , n}
である.本報告書を通して,(1) (i,i) ∈ F, i = 1, 2, · · · , n (2) (i, j) ∈ F ⇒ ( j, i) ∈ F
と仮定する.集合F
はなるべくF = E
となるように選ぶのが望ましい.残念なことに,問題
(3.2)
のように問題(3.6)
の最適解を陽に書き下すことができないので,問題(3.6)
の 近似解をH
k+1としようというのが,MCQN法の基本的な考え方である[15].
¶ ³
(MCQN
法のプロトタイプ)Step 1:
既存の準ニュートン法の更新公式(DFP公式(3.4)
や,BFGS公式(3.5)
など)を用いて,H
kから(H
k+1)
i j, ∀(i, j) ∈ F
の成分を計算しておく.Step 2: (H
k+1)
i j, (i, j) ∈ F
を用いた最適化問題:min
Hψ(H
k−12HH
−1 2
k
) subject to H = H
TH
i j= (H
k+1)
i j∀(i, j) ∈ F H 0
(H
−1)
i j= 0 ∀(i, j) < F
(3.7)
の最適解を
H
k+1とする.µ ´
問題
(3.7)
は,問題(3.6)
の制約条件に含まれるセカント条件Hy
k= s
kを,Hi j= (H
k+1)
i j, ∀(i, j) ∈ F
で置き 換えた問題である.問題(3.7)
の解は,問題(3.6)
の近似解とみなすことができる.(F= V × V
のときは,問 題(3.7)
は問題(3.2)
と等価である.)なお,今後H
k+1を,単にH
と書くことにする.問題
(3.7)
は,半正定値行列補完問題,すなわち,Hi j= H
i j, ∀(i, j) ∈ F
を満たし, (i,j) < F
の部分の要素 をすべて補ってできる半正定値対称行列H
を見つける問題である.(半正定値行列補完については,付録B
を参照.)問題
(3.7)
も一般には簡単に解くことはできないが,Fが次の条件を満たすとき,その解を陽に表せることが知られている.
¶ ³
【コーダル条件】
頂点集合を
V
,枝集合をF := F \ {(i, i) | i = 1, · · · , n}
とする無向グラフG
0= (V, F)
が コーダルグラフとなる14.µ ´
問題の疎性を利用するためには
F = E
とすることが望ましいのだが,ヘッセ行列の疎構造グラフG = (V, E)
は一般にコーダルグラフとは限らない.そこで,[15]
では,集合F
を次の条件を満たすように選ぶことが14グラフG0にはループはないことに注意.
提案されている.
条件
1 F ⊇ E.
条件
2
集合F
は,コーダル条件を満たす.(3.8) (3.8)
の2
条件を満たすF
を求めることは,グラフG = (V, E)
のコーダル拡張G
0= (V, F)
を求めることと 等価である.本報告書では,グラフG
のコーダル拡張G
0を用いて構成したMCQN
法を,Ext-MCQN法と 呼ぶことにする.また,今後単に「疎構造グラフ」と言ったときはヘッセ行列の疎構造グラフを指すことに する.疎性を利用するためには,なるべくF \ E
の要素が少なくなるようにF
を選ぶことが望ましい.言い 換えると,疎構造グラフG
の枝数最小のコーダル拡張をG
0として用いることが望ましい.そのためには,2.3
節で述べた方法などを用いてコーダル拡張G
0を求めればよい.さて,コーダル条件を満たす集合
F
が与えられたときの問題(3.7)
の解を具体的に与えよう.まず,補題 を1
つ準備する.補題
3.1 ( [15],Theorem 2) s
Tky
k> 0
と仮定する.Hkは正定値対称行列で,(Hk−1)
i j= 0, ∀(i, j) < F
と仮定 する.このとき,問題(3.7)
は次の最適化問題と等価になる:maxmize det(H)
subject to H
i j= H
i j∀(i, j) ∈ F H = H
TH 0
(3.9)
さらに,この解は唯一つであり,解として得られた行列
H
は,(H−1)
i j= 0, ∀(i, j) < F
を満たす.注意
3
問題(3.9)
は,Hi j, ∀(i, j) ∈ F
が要素として与えられた部分行列の半正定値補完行列の中で,行列式 が最大となるものを求める問題である.F
がコーダル条件を満たすとき,問題(3.9)
の解が陽に計算できる疎行列の積で表されることを示す.G
0= (V, F)
がコーダルグラフであるとき,2.1節で述べたように,次の2
条件をを満たす極大クリーク族{C
r| r = 1, 2, · · · , l}
が存在する.• F = S
lr=1
C
r× C
r• RIP(式 (2.1))
:r= 1, 2, · · · , l − 1
に対して∃s ≥ r + 1 : C
r∩ (C
r+1∪ C
r+2∪ · · · C
l) ( C
sを満たす.
この極大クリーク族を用いて,{Cr
}
の部分集合の族{S
r| r = 1, 2, · · · , l}, {U
r| r = 1, 2, · · · , l}
を以下で定義 する.S
r:= C
r\ (C
r+1∪ C
r+2∪ · · · ∪ C
l), r = 1, · · · , l (3.10) U
r:= C
r∩ (C
r+1∪ C
r+2∪ · · · ∪ C
l), r = 1, · · · , l (3.11)
ここで,V= ∪
lr=1S
rかつS
i∩ S
j= ∅
であることに注意しておく.S1, S
2, · · · , S
lの順にそれぞれの要素を取 り出して並べたときに1, 2, · · · , n
となるようにG
0の頂点の番号をつけかえる15.そのような順序の付け替 えを行う置換行列をP
とする.15定義により,S1の各要素は非空であり,S1に属する各頂点はG0の単体的頂点である.さらに,Siの各要素は,Si∪Si+1∪ · · ·Sl
により導かれるG0の部分グラフの単体的頂点である.したがって,S1,S2,· · ·,Slの順にそれぞれの要素を取り出して並べた順序は G0のPEOになる.こうして求めたPEOが(1,2,· · ·,n)となるように頂点の番号を付け替えることになる.